diff --git a/src/saveload/afterload.cpp b/src/saveload/afterload.cpp index df1b4e44f17a..02a221bb6069 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 ad8b368c8f65..e16c3096ff8f 100644 --- a/src/saveload/saveload.h +++ b/src/saveload/saveload.h @@ -338,6 +338,7 @@ 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 Store travel time in the linkgraph. + SLV_DOCK_DOCKINGTILES, ///< 298 PR#9578 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 ab21d4424558..1a188252ce97 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; } /**