diff --git a/src/water_map.h b/src/water_map.h --- a/src/water_map.h +++ b/src/water_map.h @@ -148,18 +148,6 @@ static inline byte GetWaterTileRandomBit } -static inline void MakeWater(TileIndex t) -{ - SetTileType(t, MP_WATER); - SetTileOwner(t, OWNER_WATER); - _m[t].m2 = 0; - _m[t].m3 = WATER_CLASS_SEA; - _m[t].m4 = 0; - _m[t].m5 = 0; - SB(_m[t].m6, 2, 4, 0); - _me[t].m7 = 0; -} - static inline void MakeShore(TileIndex t) { SetTileType(t, MP_WATER); @@ -172,29 +160,54 @@ static inline void MakeShore(TileIndex t _me[t].m7 = 0; } -static inline void MakeRiver(TileIndex t, uint8 random_bits) +/** + * Helper function for making a watery tile. + * @param t The tile to change into water + * @param o The owner of the water + * @param wc The class of water the tile has to be + * @param random_bits Eventual random bits to be set for this tile + */ +static inline void MakeWater(TileIndex t, Owner o, WaterClass wc, uint8 random_bits) { SetTileType(t, MP_WATER); - SetTileOwner(t, OWNER_WATER); + SetTileOwner(t, o); _m[t].m2 = 0; - _m[t].m3 = WATER_CLASS_RIVER; + _m[t].m3 = wc; _m[t].m4 = random_bits; _m[t].m5 = 0; SB(_m[t].m6, 2, 4, 0); _me[t].m7 = 0; } +/** + * Make a sea tile. + * @param t The tile to change into sea + */ +static inline void MakeSea(TileIndex t) +{ + MakeWater(t, OWNER_WATER, WATER_CLASS_SEA, 0); +} + +/** + * Make a river tile + * @param t The tile to change into river + * @param random_bits Random bits to be set for this tile + */ +static inline void MakeRiver(TileIndex t, uint8 random_bits) +{ + MakeWater(t, OWNER_WATER, WATER_CLASS_RIVER, random_bits); +} + +/** + * Make a canal tile + * @param t The tile to change into canal + * @param o The owner of the canal + * @param random_bits Random bits to be set for this tile + */ static inline void MakeCanal(TileIndex t, Owner o, uint8 random_bits) { assert(o != OWNER_WATER); - SetTileType(t, MP_WATER); - SetTileOwner(t, o); - _m[t].m2 = 0; - _m[t].m3 = WATER_CLASS_CANAL; - _m[t].m4 = random_bits; - _m[t].m5 = 0; - SB(_m[t].m6, 2, 4, 0); - _me[t].m7 = 0; + MakeWater(t, o, WATER_CLASS_CANAL, random_bits); } static inline void MakeShipDepot(TileIndex t, Owner o, DepotID did, DepotPart base, Axis a, WaterClass original_water_class)