World of Might and Magic  0.2.0
Open reimplementation of Might and Magic 6 7 8 game engine
TileFrameTable.h
См. документацию.
1 #pragma once
2 
3 #include "Engine/Strings.h"
4 #include "Engine/AssetsManager.h"
5 
6 /* 327 */
21 };
22 
23 #pragma warning(push)
24 #pragma warning(disable : 4341)
25 enum Tileset : int16_t {
34  Tileset_8 = 8,
35  Tileset_9 = 9,
38 };
39 #pragma warning(pop)
40 
41 class Texture;
42 
43 class TileDesc {
44  public:
45  inline TileDesc() : texture(nullptr) {}
46 
47  String name = "";
52 
53  inline Texture *GetTexture() {
54  if (!this->texture) {
55  this->texture = assets->GetBitmap(this->name);
56  }
57  return this->texture;
58  }
59 
60  // inline bool IsWaterTile() const { return this->name == "wtrtyl";
61  // }
62  inline bool IsWaterTile() const { return this->uAttributes & 2; }
63  inline bool IsWaterBorderTile() const {
64  return this->name.find("wtrdr", 0) == 0 ||
65  this->name.find("hwtrdr") == 0;
66  }
67 
68  protected:
70 };
71 
72 /* 49 */
73 #pragma pack(push, 1)
74 struct TileTable {
75  //----- (00487E13) --------------------------------------------------------
77  this->pTiles = nullptr;
78  this->sNumTiles = 0;
79  }
80  ~TileTable();
81 
82  TileDesc *GetTileById(unsigned int uTileID);
83  void InitializeTileset(Tileset tileset);
84  int GetTileForTerrainType(signed int a1, bool a2);
85  unsigned int GetTileId(unsigned int uTerrainType, unsigned int uSection);
86  void ToFile();
87  void FromFile(void *data_mm6, void *data_mm7, void *data_mm8);
88  int FromFileTxt(const char *pFilename);
89 
90  int sNumTiles;
92 };
93 #pragma pack(pop)
Tileset_Snow
@ Tileset_Snow
Definition: TileFrameTable.h:27
uint16_t
unsigned __int16 uint16_t
Definition: SDL_config.h:37
TileTable::InitializeTileset
void InitializeTileset(Tileset tileset)
Definition: TileTable.cpp:27
Tileset_Swamp
@ Tileset_Swamp
Definition: TileFrameTable.h:33
int16_t
signed __int16 int16_t
Definition: SDL_config.h:36
Tileset
Tileset
Definition: TileFrameTable.h:25
TILE_DESC_WATER_2
@ TILE_DESC_WATER_2
Definition: TileFrameTable.h:15
Tileset_Grass
@ Tileset_Grass
Definition: TileFrameTable.h:26
Tileset_CooledLava
@ Tileset_CooledLava
Definition: TileFrameTable.h:29
TileDesc::tileset
Tileset tileset
Definition: TileFrameTable.h:49
TileTable::ToFile
void ToFile()
Definition: TileTable.cpp:73
TILE_DESC_DONT_DRAW
@ TILE_DESC_DONT_DRAW
Definition: TileFrameTable.h:14
Texture
Definition: Texture.h:4
TILE_DESC_SCROLL_RIGHT
@ TILE_DESC_SCROLL_RIGHT
Definition: TileFrameTable.h:20
texture
GLenum GLenum GLuint texture
Definition: SDL_opengl_glext.h:1181
Tileset_Water
@ Tileset_Water
Definition: TileFrameTable.h:31
AssetsManager.h
TileTable::pTiles
TileDesc * pTiles
Definition: TileFrameTable.h:91
TILE_DESC_FLAT
@ TILE_DESC_FLAT
Definition: TileFrameTable.h:12
TileTable::~TileTable
~TileTable()
Definition: TileTable.cpp:14
Tileset_8
@ Tileset_8
Definition: TileFrameTable.h:34
TileDesc::GetTexture
Texture * GetTexture()
Definition: TileFrameTable.h:53
Tilset_Desert
@ Tilset_Desert
Definition: TileFrameTable.h:28
TILE_DESC_SCROLL_DOWN
@ TILE_DESC_SCROLL_DOWN
Definition: TileFrameTable.h:17
Tileset_Badlands
@ Tileset_Badlands
Definition: TileFrameTable.h:32
TILE_DESC_SCROLL_UP
@ TILE_DESC_SCROLL_UP
Definition: TileFrameTable.h:18
TileDesc::IsWaterBorderTile
bool IsWaterBorderTile() const
Definition: TileFrameTable.h:63
TILE_DESC_REPULSE
@ TILE_DESC_REPULSE
Definition: TileFrameTable.h:11
TileTable::GetTileForTerrainType
int GetTileForTerrainType(signed int a1, bool a2)
Definition: TileTable.cpp:40
TILE_DESC_BLOCK
@ TILE_DESC_BLOCK
Definition: TileFrameTable.h:10
TileDesc
Definition: TileFrameTable.h:43
TileDesc::uAttributes
uint16_t uAttributes
Definition: TileFrameTable.h:51
TileDesc::texture
Texture * texture
Definition: TileFrameTable.h:69
AssetsManager::GetBitmap
Texture * GetBitmap(const String &name)
Definition: AssetsManager.cpp:126
TileTable
Definition: TileFrameTable.h:74
TileDesc::uSection
uint16_t uSection
Definition: TileFrameTable.h:50
TileTable::GetTileById
TileDesc * GetTileById(unsigned int uTileID)
Definition: TileTable.cpp:21
TILE_DESC_BURNS
@ TILE_DESC_BURNS
Definition: TileFrameTable.h:8
TileTable::FromFileTxt
int FromFileTxt(const char *pFilename)
Definition: TileTable.cpp:126
Tileset_Dirt
@ Tileset_Dirt
Definition: TileFrameTable.h:30
name
EGLImageKHR EGLint * name
Definition: SDL_egl.h:1497
TileDesc::TileDesc
TileDesc()
Definition: TileFrameTable.h:45
TileTable::sNumTiles
int sNumTiles
Definition: TileFrameTable.h:90
Tileset_NULL
@ Tileset_NULL
Definition: TileFrameTable.h:37
TileDesc::IsWaterTile
bool IsWaterTile() const
Definition: TileFrameTable.h:62
assets
AssetsManager * assets
Definition: AssetsManager.cpp:12
TILE_DESC_WAVY
@ TILE_DESC_WAVY
Definition: TileFrameTable.h:13
TileTable::TileTable
TileTable()
Definition: TileFrameTable.h:76
TileTable::GetTileId
unsigned int GetTileId(unsigned int uTerrainType, unsigned int uSection)
Definition: TileTable.cpp:62
TileTable::FromFile
void FromFile(void *data_mm6, void *data_mm7, void *data_mm8)
Definition: TileTable.cpp:90
Tileset_9
@ Tileset_9
Definition: TileFrameTable.h:35
TILE_DESC_FLAGS
TILE_DESC_FLAGS
Definition: TileFrameTable.h:7
TILE_DESC_TRANSITION
@ TILE_DESC_TRANSITION
Definition: TileFrameTable.h:16
TileDesc::uTileID
uint16_t uTileID
Definition: TileFrameTable.h:48
String
std::string String
Definition: Strings.h:10
Tileset_RoadGrassCobble
@ Tileset_RoadGrassCobble
Definition: TileFrameTable.h:36
TILE_DESC_SCROLL_LEFT
@ TILE_DESC_SCROLL_LEFT
Definition: TileFrameTable.h:19
TILE_DESC_WATER
@ TILE_DESC_WATER
Definition: TileFrameTable.h:9
Strings.h