00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef TILE_H
00026 #define TILE_H
00027
00028 #include "global.h"
00029
00030 namespace WDS
00031 {
00032
00033
00034 class CTexture;
00035 class CGLCanvas;
00036
00037
00042 enum
00043 {
00044 RACE_MENSCH=0,
00045 RACE_ELF,
00046 RACE_ZWERG,
00047 RACE_ORK,
00048 RACE_NUMOF
00049 };
00050
00051 enum
00052 {
00053 PATH_NONE=0,
00054 PATH_OPEN,
00055 PATH_CLOSE,
00056 PATH_ACTIVE
00057 };
00058
00068 class CTile
00069 {
00070 public:
00071 CTile();
00072 ~CTile();
00073
00074 static void Init();
00075 static void Shut();
00076
00077 void Draw( Rect &rcTile, bool bFOW );
00078 void DrawOverlay( Rect &rcTile );
00079
00080 void SetFrame ( int nID );
00081 void SetTerrain ( int nID, int nBorder );
00082 void SetFogOfWar( int nFOW );
00083 void SetBuilding( int nID );
00084 void SetBorder ( int nID );
00085 void SetUnit ( int nID );
00086 void SetStreet ( int nID );
00087 void Reset ( );
00088
00089 bool IsStreet() { return (m_nStreet > 0 ); }
00090
00091 float GetWeigth( );
00092
00093
00094 char m_Parent, m_State, m_nTerrain1;
00095 BYTE m_nTerrain2;
00096 short m_nBuilding;
00097 BYTE m_nFrame : 4;
00098 BYTE m_nBorder : 4;
00099 BYTE m_nStreet : 4;
00100 BYTE m_nUnit : 4;
00101 BYTE m_nFOW : 1;
00102
00103 float m_CostF, m_CostG;
00104
00105
00106
00107 protected:
00108 void DrawTile( Rect &rcTile, CTexture *pTex );
00109
00110 static CGLCanvas* GetGLCanvas();
00111
00112
00113 static bool m_bLoaded;
00114 static CTexture *m_pTerrains[9][241];
00115 static CTexture *m_pFrames[8];
00116 static CTexture *m_pBuildings[500];
00117 static CTexture *m_pStreets[15];
00118 static CTexture *m_pBorders[15];
00119 static CTexture *m_pUnits[RACE_NUMOF];
00120 };
00121
00122 }
00123
00124 #endif // TILE_H
00125
00126