diff options
author | rubidium <rubidium@openttd.org> | 2010-08-10 23:31:43 +0000 |
---|---|---|
committer | rubidium <rubidium@openttd.org> | 2010-08-10 23:31:43 +0000 |
commit | 1dbd2223ad1584a7f41503966e509d4abf4ec9c2 (patch) | |
tree | d6980cb49e94de273e75f66cdba180a3552bab4d /src/tile_map.h | |
parent | 091f8ff7315637df289d3ab7ada969193eccc68c (diff) | |
download | openttd-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.h | 33 |
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 */ |