diff options
author | Loïc Guilloux <glx22@users.noreply.github.com> | 2021-09-26 19:31:55 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-09-26 19:31:55 +0200 |
commit | 38a64eb2aab6a70f749403ad2c20ebc53f84581f (patch) | |
tree | d1659e00e5608e530bc864b82fc460c95455e3e9 | |
parent | 11dece205c83b530d7ddaa1290efde04f4dfdeb9 (diff) | |
download | openttd-38a64eb2aab6a70f749403ad2c20ebc53f84581f.tar.xz |
Change: Allow all tiles around docks to be docking tiles (#9578)
-rw-r--r-- | src/saveload/afterload.cpp | 8 | ||||
-rw-r--r-- | src/saveload/saveload.h | 3 | ||||
-rw-r--r-- | src/station_cmd.cpp | 12 |
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; } /** |