(svn r13838) -Codechange: Make industry tiles aware of WaterClasses.

This commit is contained in:
frosch
2008-07-26 16:14:10 +00:00
parent c64e3b4882
commit 6684bc12d5
12 changed files with 110 additions and 36 deletions

View File

@@ -16,6 +16,7 @@ enum WaterClass {
WATER_CLASS_SEA,
WATER_CLASS_CANAL,
WATER_CLASS_RIVER,
WATER_CLASS_INVALID, ///< Used for industry tiles on land (also for oilrig if newgrf says so)
};
enum DepotPart {
@@ -45,14 +46,18 @@ static inline WaterTileType GetWaterTileType(TileIndex t)
static inline WaterClass GetWaterClass(TileIndex t)
{
assert(IsTileType(t, MP_WATER) || IsTileType(t, MP_STATION));
return (WaterClass)GB(_m[t].m3, 0, 2);
assert(IsTileType(t, MP_WATER) || IsTileType(t, MP_STATION) || IsTileType(t, MP_INDUSTRY));
return (WaterClass)(IsTileType(t, MP_INDUSTRY) ? GB(_m[t].m1, 5, 2) : GB(_m[t].m3, 0, 2));
}
static inline void SetWaterClass(TileIndex t, WaterClass wc)
{
assert(IsTileType(t, MP_WATER) || IsTileType(t, MP_STATION));
SB(_m[t].m3, 0, 2, wc);
assert(IsTileType(t, MP_WATER) || IsTileType(t, MP_STATION) || IsTileType(t, MP_INDUSTRY));
if (IsTileType(t, MP_INDUSTRY)) {
SB(_m[t].m1, 5, 2, wc);
} else {
SB(_m[t].m3, 0, 2, wc);
}
}
/** IsWater return true if any type of clear water like ocean, river, canal */