summaryrefslogtreecommitdiff
path: root/tile.h
diff options
context:
space:
mode:
Diffstat (limited to 'tile.h')
-rw-r--r--tile.h43
1 files changed, 43 insertions, 0 deletions
diff --git a/tile.h b/tile.h
new file mode 100644
index 000000000..0019397dd
--- /dev/null
+++ b/tile.h
@@ -0,0 +1,43 @@
+#ifndef TILE_H
+#define TILE_H
+
+#include "map.h"
+
+static inline uint TileHeight(TileIndex tile)
+{
+ assert(tile < MapSize());
+ return _map_type_and_height[tile] & 0xf;
+}
+
+static inline void SetTileHeight(TileIndex tile, uint height)
+{
+ assert(tile < MapSize());
+ assert(height < 16);
+ _map_type_and_height[tile] &= ~0x0F;
+ _map_type_and_height[tile] |= height;
+}
+
+static inline uint TilePixelHeight(TileIndex tile)
+{
+ return TileHeight(tile) * 8;
+}
+
+static inline int TileType(TileIndex tile)
+{
+ assert(tile < MapSize());
+ return _map_type_and_height[tile] >> 4;
+}
+
+static inline void SetTileType(TileIndex tile, uint type)
+{
+ assert(tile < MapSize());
+ _map_type_and_height[tile] &= ~0xF0;
+ _map_type_and_height[tile] |= type << 4;
+}
+
+static inline bool IsTileType(TileIndex tile, int type)
+{
+ return TileType(tile) == type;
+}
+
+#endif