forked from metin2/client
Solution refactoring and restructuring, removed Boost dependency, removed unused tools
This commit is contained in:
160
src/GameLib/AreaTerrain.h
Normal file
160
src/GameLib/AreaTerrain.h
Normal file
@ -0,0 +1,160 @@
|
||||
#pragma once
|
||||
|
||||
class CMapOutdoor;
|
||||
|
||||
#include "../PRTerrainLib/Terrain.h"
|
||||
#include "TerrainPatch.h"
|
||||
|
||||
class CTerrain : public CTerrainImpl, public CGraphicBase
|
||||
{
|
||||
public:
|
||||
|
||||
enum EBoundaryLoadPart
|
||||
{
|
||||
LOAD_INVALID,
|
||||
LOAD_NOBOUNDARY,
|
||||
LOAD_TOPLEFT,
|
||||
LOAD_TOP,
|
||||
LOAD_TOPRIGHT,
|
||||
LOAD_LEFT,
|
||||
LOAD_RIGHT,
|
||||
LOAD_BOTTOMLEFT,
|
||||
LOAD_BOTTOM,
|
||||
LOAD_BOTTOMRIGHT,
|
||||
LOAD_ALLBOUNDARY,
|
||||
};
|
||||
|
||||
CTerrain();
|
||||
virtual ~CTerrain();
|
||||
|
||||
virtual void Clear();
|
||||
|
||||
void SetMapOutDoor(CMapOutdoor * pOwnerOutdoorMap);
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// Loading
|
||||
bool RAW_LoadTileMap(const char * c_pszFileName, bool bBGLoading = false);
|
||||
|
||||
bool LoadHeightMap(const char * c_pszFileName);
|
||||
|
||||
void CalculateTerrainPatch();
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
void CopySettingFromGlobalSetting();
|
||||
|
||||
WORD WE_GetHeightMapValue(short sX, short sY);
|
||||
|
||||
bool IsReady() { return m_bReady; }
|
||||
void SetReady(bool bReady = true) { m_bReady = bReady; }
|
||||
|
||||
// Height Map
|
||||
WORD * GetHeightMap() { return m_awRawHeightMap; }
|
||||
float GetHeight(int x, int y);
|
||||
|
||||
// Normal Map
|
||||
bool GetNormal(int ix, int iy, D3DXVECTOR3 * pv3Normal);
|
||||
|
||||
// TileMap
|
||||
BYTE * RAW_GetTileMap() { return m_abyTileMap; }
|
||||
char * GetNormalMap() { return m_acNormalMap; }
|
||||
|
||||
// Attr
|
||||
bool LoadAttrMap(const char * c_pszFileName);
|
||||
BYTE * GetAttrMap() { return m_abyAttrMap; }
|
||||
BYTE GetAttr(WORD wCoordX, WORD wCoordY);
|
||||
bool isAttrOn(WORD wCoordX, WORD wCoordY, BYTE byAttrFlag);
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// Water
|
||||
BYTE * GetWaterMap() { return m_abyWaterMap; }
|
||||
void GetWaterHeight(BYTE byWaterNum, long * plWaterHeight);
|
||||
bool GetWaterHeight(WORD wCoordX, WORD wCoordY, long * plWaterHeight);
|
||||
|
||||
// Shadow Texture
|
||||
void LoadShadowTexture(const char * c_pszFileName);
|
||||
|
||||
// Shadow Map
|
||||
bool LoadShadowMap(const char * c_pszFileName);
|
||||
|
||||
// MiniMap
|
||||
void LoadMiniMapTexture(const char * c_pszFileName);
|
||||
inline LPDIRECT3DTEXTURE8 GetMiniMapTexture() { return m_lpMiniMapTexture; }
|
||||
|
||||
// Marked Area
|
||||
BOOL IsMarked() { return m_bMarked; }
|
||||
void AllocateMarkedSplats(BYTE * pbyAlphaMap);
|
||||
void DeallocateMarkedSplats();
|
||||
TTerrainSplatPatch & GetMarkedSplatPatch() { return m_MarkedSplatPatch; }
|
||||
|
||||
// Coordinate
|
||||
void GetCoordinate(WORD * usCoordX, WORD * usCoordY)
|
||||
{
|
||||
*usCoordX = m_wX;
|
||||
*usCoordY = m_wY;
|
||||
}
|
||||
|
||||
void SetCoordinate(WORD wCoordX, WORD wCoordY);
|
||||
|
||||
std::string & GetName() { return m_strName; }
|
||||
void SetName(const std::string c_strName) { m_strName = c_strName; }
|
||||
|
||||
CMapOutdoor * GetOwner() { return m_pOwnerOutdoorMap; }
|
||||
void RAW_GenerateSplat(bool bBGLoading = false);
|
||||
|
||||
protected:
|
||||
bool Initialize();
|
||||
void RAW_AllocateSplats(bool bBGLoading = false);
|
||||
void RAW_DeallocateSplats(bool bBGLoading = false);
|
||||
virtual void RAW_CountTiles();
|
||||
|
||||
LPDIRECT3DTEXTURE8 AddTexture32(BYTE byImageNum, BYTE * pbyImage, long lTextureWidth, long lTextureHeight);
|
||||
void PutImage32(BYTE * pbySrc, BYTE * pbyDst, long src_pitch, long dst_pitch, long lTextureWidth, long lTextureHeight, bool bResize = false);
|
||||
void PutImage16(BYTE * pbySrc, BYTE * pbyDst, long src_pitch, long dst_pitch, long lTextureWidth, long lTextureHeight, bool bResize = false);
|
||||
|
||||
protected:
|
||||
void CalculateNormal(long x, long y);
|
||||
|
||||
protected:
|
||||
std::string m_strName;
|
||||
WORD m_wX;
|
||||
WORD m_wY;
|
||||
|
||||
protected:
|
||||
bool m_bReady;
|
||||
|
||||
CGraphicImageInstance m_ShadowGraphicImageInstance;
|
||||
|
||||
//MiniMap
|
||||
CGraphicImageInstance m_MiniMapGraphicImageInstance;
|
||||
LPDIRECT3DTEXTURE8 m_lpMiniMapTexture;
|
||||
|
||||
|
||||
// Owner COutdoorMap poineter
|
||||
CMapOutdoor * m_pOwnerOutdoorMap;
|
||||
|
||||
// Picking
|
||||
D3DXVECTOR3 m_v3Pick;
|
||||
|
||||
DWORD m_dwNumTexturesShow;
|
||||
std::vector<DWORD> m_VectorNumShowTexture;
|
||||
|
||||
CTerrainPatch m_TerrainPatchList[PATCH_XCOUNT * PATCH_YCOUNT];
|
||||
|
||||
BOOL m_bMarked;
|
||||
TTerrainSplatPatch m_MarkedSplatPatch;
|
||||
LPDIRECT3DTEXTURE8 m_lpMarkedTexture;
|
||||
|
||||
public:
|
||||
CTerrainPatch * GetTerrainPatchPtr(BYTE byPatchNumX, BYTE byPatchNumY);
|
||||
|
||||
protected:
|
||||
void _CalculateTerrainPatch(BYTE byPatchNumX, BYTE byPatchNumY);
|
||||
|
||||
public:
|
||||
static void DestroySystem();
|
||||
|
||||
static CTerrain* New();
|
||||
static void Delete(CTerrain* pkTerrain);
|
||||
|
||||
static CDynamicPool<CTerrain> ms_kPool;
|
||||
};
|
Reference in New Issue
Block a user