summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLoïc Guilloux <glx22@users.noreply.github.com>2021-09-26 19:31:55 +0200
committerGitHub <noreply@github.com>2021-09-26 19:31:55 +0200
commit38a64eb2aab6a70f749403ad2c20ebc53f84581f (patch)
treed1659e00e5608e530bc864b82fc460c95455e3e9
parent11dece205c83b530d7ddaa1290efde04f4dfdeb9 (diff)
downloadopenttd-38a64eb2aab6a70f749403ad2c20ebc53f84581f.tar.xz
Change: Allow all tiles around docks to be docking tiles (#9578)
-rw-r--r--src/saveload/afterload.cpp8
-rw-r--r--src/saveload/saveload.h3
-rw-r--r--src/station_cmd.cpp12
3 files changed, 8 insertions, 15 deletions
diff --git a/src/saveload/afterload.cpp b/src/saveload/afterload.cpp
index df1b4e44f..02a221bb6 100644
--- a/src/saveload/afterload.cpp
+++ b/src/saveload/afterload.cpp
@@ -3106,14 +3106,14 @@ bool AfterLoadGame()
}
}
- if (IsSavegameVersionBeforeOrAt(SLV_ENDING_YEAR)) {
- /* Update station docking tiles. Was only needed for pre-SLV_MULTITLE_DOCKS
- * savegames, but a bug in docking tiles touched all savegames between
- * SLV_MULTITILE_DOCKS and SLV_ENDING_YEAR. */
+ if (IsSavegameVersionBefore(SLV_DOCK_DOCKINGTILES)) {
+ /* All tiles around docks may be docking tiles. */
for (Station *st : Station::Iterate()) {
if (st->ship_station.tile != INVALID_TILE) UpdateStationDockingTiles(st);
}
+ }
+ if (IsSavegameVersionBeforeOrAt(SLV_ENDING_YEAR)) {
/* Reset roadtype/streetcartype info for non-road bridges. */
for (TileIndex t = 0; t < map_size; t++) {
if (IsTileType(t, MP_TUNNELBRIDGE) && GetTunnelBridgeTransportType(t) != TRANSPORT_ROAD) {
diff --git a/src/saveload/saveload.h b/src/saveload/saveload.h
index bd0613e55..382d77f1a 100644
--- a/src/saveload/saveload.h
+++ b/src/saveload/saveload.h
@@ -337,7 +337,8 @@ enum SaveLoadVersion : uint16 {
SLV_TABLE_CHUNKS, ///< 295 PR#9322 Introduction of CH_TABLE and CH_SPARSE_TABLE.
SLV_SCRIPT_INT64, ///< 296 PR#9415 SQInteger is 64bit but was saved as 32bit.
- SLV_LINKGRAPH_TRAVEL_TIME, ///< 297 PR#9457 v12 Store travel time in the linkgraph.
+ SLV_LINKGRAPH_TRAVEL_TIME, ///< 297 PR#9457 v12.0-RC1 Store travel time in the linkgraph.
+ SLV_DOCK_DOCKINGTILES, ///< 298 PR#9578 v12.0 All tiles around docks may be docking tiles.
SL_MAX_VERSION, ///< Highest possible saveload version
};
diff --git a/src/station_cmd.cpp b/src/station_cmd.cpp
index ab21d4424..1a188252c 100644
--- a/src/station_cmd.cpp
+++ b/src/station_cmd.cpp
@@ -2635,23 +2635,15 @@ void ClearDockingTilesCheckingNeighbours(TileIndex tile)
/**
* Check if a dock tile can be docked from the given direction.
* @param t Tile index of dock.
- * @param d DiagDirection adjacent to dock being tested.
+ * @param d DiagDirection adjacent to dock being tested. (unused)
* @return True iff the dock can be docked from the given direction.
*/
bool IsValidDockingDirectionForDock(TileIndex t, DiagDirection d)
{
assert(IsDockTile(t));
- /** Bitmap of valid directions for each dock tile part. */
- static const uint8 _valid_docking_tile[] = {
- 0, 0, 0, 0, // No docking against the slope part.
- 1 << DIAGDIR_NE | 1 << DIAGDIR_SW, // Docking permitted at the end
- 1 << DIAGDIR_NW | 1 << DIAGDIR_SE, // of the flat piers.
- };
-
StationGfx gfx = GetStationGfx(t);
- assert(gfx < lengthof(_valid_docking_tile));
- return HasBit(_valid_docking_tile[gfx], d);
+ return gfx >= GFX_DOCK_BASE_WATER_PART;
}
/**