summaryrefslogtreecommitdiff
path: root/map.h
diff options
context:
space:
mode:
Diffstat (limited to 'map.h')
-rw-r--r--map.h13
1 files changed, 11 insertions, 2 deletions
diff --git a/map.h b/map.h
index 7a5ed5ff4..c234de5a8 100644
--- a/map.h
+++ b/map.h
@@ -26,13 +26,22 @@ static inline uint MapSize(void) { return MapSizeX() * MapSizeY(); }
typedef int16 TileIndexDiff;
+typedef struct TileIndexDiffC {
+ int16 x;
+ int16 y;
+} TileIndexDiffC;
+
+static inline TileIndexDiff ToTileIndexDiff(TileIndexDiffC tidc)
+{
+ return (tidc.y << MapLogX()) + tidc.x;
+}
static inline TileIndexDiff TileOffsByDir(uint dir)
{
- extern const TileIndexDiff _tileoffs_by_dir[4];
+ extern const TileIndexDiffC _tileoffs_by_dir[4];
assert(dir < lengthof(_tileoffs_by_dir));
- return _tileoffs_by_dir[dir];
+ return ToTileIndexDiff(_tileoffs_by_dir[dir]);
}
#endif