(svn r4172) -Codechange: Added a few accessors to work with ShipDepots and Locks

This commit is contained in:
celestar
2006-03-30 11:21:36 +00:00
parent 24f23babd1
commit 8a91805c05
2 changed files with 31 additions and 22 deletions

View File

@@ -5,7 +5,8 @@
typedef enum DepotPart {
DEPOT_NORTH = 0x80,
DEPOT_SOUTH = 0x81
DEPOT_SOUTH = 0x81,
DEPOT_END = 0x84,
} DepotPart;
typedef enum LockPart {
@@ -14,6 +15,30 @@ typedef enum LockPart {
LOCK_UPPER = 0x18
} LockPart;
static inline bool IsClearWaterTile(TileIndex tile)
{
return
IsTileType(tile, MP_WATER) &&
_m[tile].m5 == 0 &&
GetTileSlope(tile, NULL) == 0;
}
static inline TileIndex GetOtherShipDepotTile(TileIndex t)
{
return t + (HASBIT(_m[t].m5, 0) ? -1 : 1) * (HASBIT(_m[t].m5, 1) ? TileDiffXY(0, 1) : TileDiffXY(1, 0));
}
static inline TileIndex IsShipDepot(TileIndex t)
{
return IS_INT_INSIDE(_m[t].m5, DEPOT_NORTH, DEPOT_END);
}
static inline DiagDirection GetLockDirection(TileIndex t)
{
return (DiagDirection)GB(_m[t].m5, 0, 2);
}
static inline void MakeWater(TileIndex t)
{
SetTileType(t, MP_WATER);
@@ -24,7 +49,6 @@ static inline void MakeWater(TileIndex t)
_m[t].m5 = 0;
}
static inline void MakeShore(TileIndex t)
{
SetTileType(t, MP_WATER);