(svn r17817) -Codechange: MakeWater actually made sea tiles, so rename it to MakeSea and unduplicate the code to make sea, rivers and canals.

This commit is contained in:
rubidium 2009-10-20 12:31:11 +00:00
parent 9696e3e39b
commit 06c55863ca
3 changed files with 42 additions and 29 deletions

View File

@ -926,7 +926,7 @@ bool AfterLoadGame()
MakeShore(t); MakeShore(t);
} else { } else {
if (GetTileOwner(t) == OWNER_WATER) { if (GetTileOwner(t) == OWNER_WATER) {
MakeWater(t); MakeSea(t);
} else { } else {
MakeCanal(t, GetTileOwner(t), Random()); MakeCanal(t, GetTileOwner(t), Random());
} }
@ -1484,7 +1484,7 @@ bool AfterLoadGame()
if (IsWater(t)) { if (IsWater(t)) {
Owner o = GetTileOwner(t); Owner o = GetTileOwner(t);
if (o == OWNER_WATER) { if (o == OWNER_WATER) {
MakeWater(t); MakeSea(t);
} else { } else {
MakeCanal(t, o, Random()); MakeCanal(t, o, Random());
} }

View File

@ -165,7 +165,7 @@ void MakeWaterKeepingClass(TileIndex tile, Owner o)
if (wc == WATER_CLASS_SEA && z > 0) wc = WATER_CLASS_CANAL; if (wc == WATER_CLASS_SEA && z > 0) wc = WATER_CLASS_CANAL;
switch (wc) { switch (wc) {
case WATER_CLASS_SEA: MakeWater(tile); break; case WATER_CLASS_SEA: MakeSea(tile); break;
case WATER_CLASS_CANAL: MakeCanal(tile, o, Random()); break; case WATER_CLASS_CANAL: MakeCanal(tile, o, Random()); break;
case WATER_CLASS_RIVER: MakeRiver(tile, Random()); break; case WATER_CLASS_RIVER: MakeRiver(tile, Random()); break;
default: DoClearSquare(tile); break; default: DoClearSquare(tile); break;
@ -337,7 +337,7 @@ CommandCost CmdBuildCanal(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32
if (flags & DC_EXEC) { if (flags & DC_EXEC) {
if (TileHeight(tile) == 0 && p2 == 1) { if (TileHeight(tile) == 0 && p2 == 1) {
MakeWater(tile); MakeSea(tile);
} else if (p2 == 2) { } else if (p2 == 2) {
MakeRiver(tile, Random()); MakeRiver(tile, Random());
} else { } else {
@ -947,7 +947,7 @@ void DoFloodTile(TileIndex target)
/* flood flat tile */ /* flood flat tile */
if (CmdSucceeded(DoCommand(target, 0, 0, DC_EXEC, CMD_LANDSCAPE_CLEAR))) { if (CmdSucceeded(DoCommand(target, 0, 0, DC_EXEC, CMD_LANDSCAPE_CLEAR))) {
MakeWater(target); MakeSea(target);
MarkTileDirtyByTile(target); MarkTileDirtyByTile(target);
flooded = true; flooded = true;
} }
@ -1067,7 +1067,7 @@ void ConvertGroundTilesIntoWaterTiles()
* during the generation. */ * during the generation. */
switch (slope) { switch (slope) {
case SLOPE_FLAT: case SLOPE_FLAT:
MakeWater(tile); MakeSea(tile);
break; break;
case SLOPE_N: case SLOPE_N:

View File

@ -148,18 +148,6 @@ static inline byte GetWaterTileRandomBits(TileIndex t)
} }
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) static inline void MakeShore(TileIndex t)
{ {
SetTileType(t, MP_WATER); SetTileType(t, MP_WATER);
@ -172,29 +160,54 @@ static inline void MakeShore(TileIndex t)
_me[t].m7 = 0; _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); SetTileType(t, MP_WATER);
SetTileOwner(t, OWNER_WATER); SetTileOwner(t, o);
_m[t].m2 = 0; _m[t].m2 = 0;
_m[t].m3 = WATER_CLASS_RIVER; _m[t].m3 = wc;
_m[t].m4 = random_bits; _m[t].m4 = random_bits;
_m[t].m5 = 0; _m[t].m5 = 0;
SB(_m[t].m6, 2, 4, 0); SB(_m[t].m6, 2, 4, 0);
_me[t].m7 = 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) static inline void MakeCanal(TileIndex t, Owner o, uint8 random_bits)
{ {
assert(o != OWNER_WATER); assert(o != OWNER_WATER);
SetTileType(t, MP_WATER); MakeWater(t, o, WATER_CLASS_CANAL, random_bits);
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;
} }
static inline void MakeShipDepot(TileIndex t, Owner o, DepotID did, DepotPart base, Axis a, WaterClass original_water_class) static inline void MakeShipDepot(TileIndex t, Owner o, DepotID did, DepotPart base, Axis a, WaterClass original_water_class)