1
0
Fork 0

Codechange: Add and use GetWaterTileClass.

pull/8480/head
J0anJosep 2021-03-27 13:36:32 +01:00
parent cf2a12dfc4
commit 3e9b7f19cb
1 changed files with 15 additions and 3 deletions

View File

@ -78,6 +78,16 @@ enum LockPart {
bool IsPossibleDockingTile(Tile t);
/**
* Get the type of water tile: clear, lock or depot.
* @param t Water tile to query.
* @return WBL_TYPE_NORMAL, WBL_TYPE_LOCK or WBL_TYPE_DEPOT.
*/
static inline WaterTileTypeBitLayout GetWaterTileClass(Tile t) {
assert(IsTileType(t, MP_WATER));
return (WaterTileTypeBitLayout)GB(t.m5(), WBL_TYPE_BEGIN, WBL_TYPE_COUNT);
}
/**
* Get the water tile type at a tile.
* @param t Water tile to query.
@ -87,7 +97,7 @@ inline WaterTileType GetWaterTileType(Tile t)
{
assert(IsTileType(t, MP_WATER));
switch (GB(t.m5(), WBL_TYPE_BEGIN, WBL_TYPE_COUNT)) {
switch (GetWaterTileClass(t)) {
case WBL_TYPE_NORMAL: return HasBit(t.m5(), WBL_COAST_FLAG) ? WATER_TILE_COAST : WATER_TILE_CLEAR;
case WBL_TYPE_LOCK: return WATER_TILE_LOCK;
case WBL_TYPE_DEPOT: return WATER_TILE_DEPOT;
@ -224,7 +234,8 @@ inline bool IsCoastTile(Tile t)
*/
inline bool IsShipDepot(Tile t)
{
return GetWaterTileType(t) == WATER_TILE_DEPOT;
assert(IsTileType(t, MP_WATER));
return GetWaterTileClass(t) == WBL_TYPE_DEPOT;
}
/**
@ -305,7 +316,8 @@ inline TileIndex GetShipDepotNorthTile(Tile t)
*/
inline bool IsLock(Tile t)
{
return GetWaterTileType(t) == WATER_TILE_LOCK;
assert(IsTileType(t, MP_WATER));
return GetWaterTileClass(t) == WBL_TYPE_LOCK;
}
/**