From 64278fd5983c80757615d67c76922e700246fc1b Mon Sep 17 00:00:00 2001 From: Yexo Date: Mon, 4 May 2020 23:58:56 +0200 Subject: Fix: reset roadtype/streetcartype info for non-road bridges --- src/saveload/afterload.cpp | 8 ++++++++ src/saveload/saveload.h | 13 +++++++++++++ 2 files changed, 21 insertions(+) (limited to 'src') diff --git a/src/saveload/afterload.cpp b/src/saveload/afterload.cpp index 9fbccf65e..0f1d4c450 100644 --- a/src/saveload/afterload.cpp +++ b/src/saveload/afterload.cpp @@ -3119,6 +3119,14 @@ bool AfterLoadGame() } } + if (IsSavegameVersionUntil(SLV_ENDING_YEAR)) { + for (TileIndex t = 0; t < map_size; t++) { + if (IsTileType(t, MP_TUNNELBRIDGE) && GetTunnelBridgeTransportType(t) != TRANSPORT_ROAD) { + SetRoadTypes(t, INVALID_ROADTYPE, INVALID_ROADTYPE); + } + } + } + /* Update station docking tiles. */ AfterLoadScanDockingTiles(); diff --git a/src/saveload/saveload.h b/src/saveload/saveload.h index eeb0c58f2..5065e568b 100644 --- a/src/saveload/saveload.h +++ b/src/saveload/saveload.h @@ -769,6 +769,19 @@ static inline bool IsSavegameVersionBefore(SaveLoadVersion major, byte minor = 0 return _sl_version < major || (minor > 0 && _sl_version == major && _sl_minor_version < minor); } +/** + * Checks whether the savegame is below or at \a major. This should be used to repair data from existing + * savegames which is no longer corrupted in new savegames, but for which otherwise no savegame + * bump is required. + * @param major Major number of the version to check against. + * @return Savegame version is at most the specified version. + */ +static inline bool IsSavegameVersionUntil(SaveLoadVersion major) +{ + extern SaveLoadVersion _sl_version; + return _sl_version <= major; +} + /** * Checks if some version from/to combination falls within the range of the * active savegame version. -- cgit v1.2.3-70-g09d2