mirror of https://github.com/OpenTTD/OpenTTD.git
(svn r12070) -Cleanup(r12042): Water-owner of shipdepots is no longer needed. Removed.
This commit is contained in:
parent
94f4217984
commit
e95e887772
|
@ -908,7 +908,6 @@
|
|||
<ul>
|
||||
<li>m1: <a href="#OwnershipInfo">owner</a> (for sea, rivers, and coasts normally <tt>11</tt>)</li>
|
||||
<li>m3 bits 1..0 : Water class (sea, canal or river)
|
||||
<li>m4: Owner of the water when ship depot</li>
|
||||
<li>m4: Random data for canal or river tiles</li>
|
||||
<li>m5: tile type:
|
||||
<table>
|
||||
|
|
|
@ -284,7 +284,7 @@ the array so you can quickly see what is used and what is not.
|
|||
<td class="bits">-inherit-</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO OOOO OOOO</span></td>
|
||||
<td class="bits"><span class="free">OOOO OO</span>XX</td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">XX<span class="free">OO OO</span>XX</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
|
|
|
@ -2333,9 +2333,16 @@ bool AfterLoadGame()
|
|||
if (_m[t].m5 == 2) {
|
||||
MakeRiver(t, Random());
|
||||
} else {
|
||||
Owner o = GetTileOwner(t);
|
||||
if (IsWater(t) && o != OWNER_WATER) {
|
||||
MakeCanal(t, o, Random());
|
||||
if (IsWater(t)) {
|
||||
Owner o = GetTileOwner(t);
|
||||
if (o == OWNER_WATER) {
|
||||
MakeWater(t);
|
||||
} else {
|
||||
MakeCanal(t, o, Random());
|
||||
}
|
||||
} else if (IsShipDepot(t)) {
|
||||
Owner o = (Owner)_m[t].m4; // Original water owner
|
||||
SetWaterClass(t, o == OWNER_WATER ? WATER_CLASS_SEA : WATER_CLASS_CANAL);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -2347,7 +2354,7 @@ bool AfterLoadGame()
|
|||
for (TileIndex t = 0; t < map_size; t++) {
|
||||
if (GetTileSlope(t, NULL) != SLOPE_FLAT) continue;
|
||||
|
||||
if (IsTileType(t, MP_WATER) && (GetWaterTileType(t) == WATER_TILE_LOCK || IsShipDepot(t))) SetWaterClassDependingOnSurroundings(t);
|
||||
if (IsTileType(t, MP_WATER) && IsLock(t)) SetWaterClassDependingOnSurroundings(t);
|
||||
if (IsTileType(t, MP_STATION) && (IsDock(t) || IsBuoy(t))) SetWaterClassDependingOnSurroundings(t);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -96,6 +96,9 @@ static void MarkCanalsAndRiversAroundDirty(TileIndex tile)
|
|||
|
||||
/**
|
||||
* Makes a tile canal or water depending on the surroundings.
|
||||
*
|
||||
* Must only be used for converting old savegames. Use WaterClass now.
|
||||
*
|
||||
* This as for example docks and shipdepots do not store
|
||||
* whether the tile used to be canal or 'normal' water.
|
||||
* @param t the tile to change.
|
||||
|
@ -116,9 +119,17 @@ void SetWaterClassDependingOnSurroundings(TileIndex t)
|
|||
TileIndex neighbour = TileAddByDiagDir(t, dir);
|
||||
switch (GetTileType(neighbour)) {
|
||||
case MP_WATER:
|
||||
has_water |= IsSea(neighbour) || IsCoast(neighbour) || (IsShipDepot(neighbour) && GetShipDepotWaterOwner(neighbour) == OWNER_WATER);
|
||||
has_canal |= IsCanal(neighbour) || (IsShipDepot(neighbour) && GetShipDepotWaterOwner(neighbour) != OWNER_WATER);
|
||||
has_river |= IsRiver(neighbour);
|
||||
/* clear water and shipdepots have already a WaterClass associated */
|
||||
if (IsCoast(neighbour)) {
|
||||
has_water = true;
|
||||
} else if (!IsLock(neighbour)) {
|
||||
switch (GetWaterClass(neighbour)) {
|
||||
case WATER_CLASS_SEA: has_water = true; break;
|
||||
case WATER_CLASS_CANAL: has_canal = true; break;
|
||||
case WATER_CLASS_RIVER: has_river = true; break;
|
||||
default: NOT_REACHED();
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case MP_RAILWAY:
|
||||
|
@ -174,8 +185,6 @@ CommandCost CmdBuildShipDepot(TileIndex tile, uint32 flags, uint32 p1, uint32 p2
|
|||
|
||||
WaterClass wc1 = GetWaterClass(tile);
|
||||
WaterClass wc2 = GetWaterClass(tile2);
|
||||
Owner o1 = GetTileOwner(tile);
|
||||
Owner o2 = GetTileOwner(tile2);
|
||||
ret = DoCommand(tile, 0, 0, flags, CMD_LANDSCAPE_CLEAR);
|
||||
if (CmdFailed(ret)) return CMD_ERROR;
|
||||
ret = DoCommand(tile2, 0, 0, flags, CMD_LANDSCAPE_CLEAR);
|
||||
|
@ -188,8 +197,8 @@ CommandCost CmdBuildShipDepot(TileIndex tile, uint32 flags, uint32 p1, uint32 p2
|
|||
if (flags & DC_EXEC) {
|
||||
depot->town_index = ClosestTownFromTile(tile, (uint)-1)->index;
|
||||
|
||||
MakeShipDepot(tile, _current_player, DEPOT_NORTH, axis, wc1, o1);
|
||||
MakeShipDepot(tile2, _current_player, DEPOT_SOUTH, axis, wc2, o2);
|
||||
MakeShipDepot(tile, _current_player, DEPOT_NORTH, axis, wc1);
|
||||
MakeShipDepot(tile2, _current_player, DEPOT_SOUTH, axis, wc2);
|
||||
MarkTileDirtyByTile(tile);
|
||||
MarkTileDirtyByTile(tile2);
|
||||
d_auto_delete.Detach();
|
||||
|
@ -225,8 +234,8 @@ static CommandCost RemoveShipDepot(TileIndex tile, uint32 flags)
|
|||
/* Kill the depot, which is registered at the northernmost tile. Use that one */
|
||||
delete GetDepotByTile(tile2 < tile ? tile2 : tile);
|
||||
|
||||
MakeWaterKeepingClass(tile, GetShipDepotWaterOwner(tile));
|
||||
MakeWaterKeepingClass(tile2, GetShipDepotWaterOwner(tile2));
|
||||
MakeWaterKeepingClass(tile, GetTileOwner(tile));
|
||||
MakeWaterKeepingClass(tile2, GetTileOwner(tile2));
|
||||
MarkTileDirtyByTile(tile);
|
||||
MarkTileDirtyByTile(tile2);
|
||||
}
|
||||
|
|
|
@ -106,9 +106,9 @@ static inline DiagDirection GetShipDepotDirection(TileIndex t)
|
|||
return XYNSToDiagDir(GetShipDepotAxis(t), GB(_m[t].m5, 0, 1));
|
||||
}
|
||||
|
||||
static inline Owner GetShipDepotWaterOwner(TileIndex t)
|
||||
static inline bool IsLock(TileIndex t)
|
||||
{
|
||||
return (Owner)_m[t].m4;
|
||||
return IsInsideMM(_m[t].m5, LOCK_MIDDLE, LOCK_END);
|
||||
}
|
||||
|
||||
static inline DiagDirection GetLockDirection(TileIndex t)
|
||||
|
@ -169,13 +169,13 @@ static inline void MakeCanal(TileIndex t, Owner o, uint8 random_bits)
|
|||
_m[t].m5 = 0;
|
||||
}
|
||||
|
||||
static inline void MakeShipDepot(TileIndex t, Owner o, DepotPart base, Axis a, WaterClass original_water_class, Owner original_owner)
|
||||
static inline void MakeShipDepot(TileIndex t, Owner o, DepotPart base, Axis a, WaterClass original_water_class)
|
||||
{
|
||||
SetTileType(t, MP_WATER);
|
||||
SetTileOwner(t, o);
|
||||
_m[t].m2 = 0;
|
||||
_m[t].m3 = original_water_class;
|
||||
_m[t].m4 = original_owner;
|
||||
_m[t].m4 = 0;
|
||||
_m[t].m5 = base + a * 2;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue