summaryrefslogtreecommitdiff
path: root/src/tile_map.h
diff options
context:
space:
mode:
authorrubidium <rubidium@openttd.org>2010-08-10 23:31:43 +0000
committerrubidium <rubidium@openttd.org>2010-08-10 23:31:43 +0000
commit1dbd2223ad1584a7f41503966e509d4abf4ec9c2 (patch)
treed6980cb49e94de273e75f66cdba180a3552bab4d /src/tile_map.h
parent091f8ff7315637df289d3ab7ada969193eccc68c (diff)
downloadopenttd-1dbd2223ad1584a7f41503966e509d4abf4ec9c2.tar.xz
(svn r20443) -Codechange: more TileHash to a more generic location
Diffstat (limited to 'src/tile_map.h')
-rw-r--r--src/tile_map.h33
1 files changed, 32 insertions, 1 deletions
diff --git a/src/tile_map.h b/src/tile_map.h
index 393b89e01..202ad04e9 100644
--- a/src/tile_map.h
+++ b/src/tile_map.h
@@ -206,4 +206,35 @@ Slope GetTileSlope(TileIndex tile, uint *h);
uint GetTileZ(TileIndex tile);
uint GetTileMaxZ(TileIndex tile);
-#endif /* TILE_TYPE_H */
+
+/**
+ * Calculate a hash value from a tile position
+ *
+ * @param x The X coordinate
+ * @param y The Y coordinate
+ * @return The hash of the tile
+ */
+static inline uint TileHash(uint x, uint y)
+{
+ uint hash = x >> 4;
+ hash ^= x >> 6;
+ hash ^= y >> 4;
+ hash -= y >> 6;
+ return hash;
+}
+
+/**
+ * Get the last two bits of the TileHash
+ * from a tile position.
+ *
+ * @see TileHash()
+ * @param x The X coordinate
+ * @param y The Y coordinate
+ * @return The last two bits from hash of the tile
+ */
+static inline uint TileHash2Bit(uint x, uint y)
+{
+ return GB(TileHash(x, y), 0, 2);
+}
+
+#endif /* TILE_MAP_H */