diff options
Diffstat (limited to 'src/saveload')
-rw-r--r-- | src/saveload/afterload.cpp | 4 | ||||
-rw-r--r-- | src/saveload/oldloader_sl.cpp | 2 | ||||
-rw-r--r-- | src/saveload/saveload.cpp | 2 | ||||
-rw-r--r-- | src/saveload/saveload_internal.h | 1 | ||||
-rw-r--r-- | src/saveload/station_sl.cpp | 20 |
5 files changed, 26 insertions, 3 deletions
diff --git a/src/saveload/afterload.cpp b/src/saveload/afterload.cpp index 281b3bc33..05c759846 100644 --- a/src/saveload/afterload.cpp +++ b/src/saveload/afterload.cpp @@ -1360,7 +1360,7 @@ bool AfterLoadGame() RoadVehicle *rv; FOR_ALL_ROADVEHICLES(rv) { if (rv->state == 250 || rv->state == 251) { - SetBit(rv->state, RVS_IS_STOPPING); + SetBit(rv->state, 2); } } } @@ -1959,6 +1959,8 @@ bool AfterLoadGame() } } + /* Road stops is 'only' updating some caches */ + AfterLoadRoadStops(); AfterLoadLabelMaps(); GamelogPrintDebug(1); diff --git a/src/saveload/oldloader_sl.cpp b/src/saveload/oldloader_sl.cpp index 7acac2937..d97038f8e 100644 --- a/src/saveload/oldloader_sl.cpp +++ b/src/saveload/oldloader_sl.cpp @@ -190,7 +190,7 @@ void FixOldVehicles() if (v->type == VEH_ROAD) { RoadVehicle *rv = RoadVehicle::From(v); if (rv->state != RVSB_IN_DEPOT && rv->state != RVSB_WORMHOLE) { - ClrBit(rv->state, RVS_IS_STOPPING); + ClrBit(rv->state, 2); } } diff --git a/src/saveload/saveload.cpp b/src/saveload/saveload.cpp index 90be4172e..d07e7a336 100644 --- a/src/saveload/saveload.cpp +++ b/src/saveload/saveload.cpp @@ -47,7 +47,7 @@ #include "saveload_internal.h" -extern const uint16 SAVEGAME_VERSION = 129; +extern const uint16 SAVEGAME_VERSION = 130; SavegameType _savegame_type; ///< type of savegame we are loading diff --git a/src/saveload/saveload_internal.h b/src/saveload/saveload_internal.h index 03912c673..04e01de33 100644 --- a/src/saveload/saveload_internal.h +++ b/src/saveload/saveload_internal.h @@ -29,6 +29,7 @@ const SaveLoad *GetBaseStationDescription(); void AfterLoadVehicles(bool part_of_load); void AfterLoadStations(); +void AfterLoadRoadStops(); void AfterLoadLabelMaps(); void UpdateHousesAndTowns(); diff --git a/src/saveload/station_sl.cpp b/src/saveload/station_sl.cpp index 6c52e7cf6..a25eb556d 100644 --- a/src/saveload/station_sl.cpp +++ b/src/saveload/station_sl.cpp @@ -15,6 +15,7 @@ #include "../roadstop_base.h" #include "../vehicle_base.h" #include "../newgrf_station.h" +#include "../station_map.h" #include "saveload.h" #include "table/strings.h" @@ -108,6 +109,25 @@ void AfterLoadStations() } } +/** + * (Re)building of road stop caches after loading a savegame. + */ +void AfterLoadRoadStops() +{ + /* First construct the drive through entries */ + RoadStop *rs; + FOR_ALL_ROADSTOPS(rs) { + if (IsDriveThroughStopTile(rs->xy)) rs->MakeDriveThrough(); + } + /* And then rebuild the data in those entries */ + FOR_ALL_ROADSTOPS(rs) { + if (!HasBit(rs->status, RoadStop::RSSFB_BASE_ENTRY)) continue; + + rs->GetEntry(DIAGDIR_NE)->Rebuild(rs); + rs->GetEntry(DIAGDIR_NW)->Rebuild(rs); + } +} + static const SaveLoad _roadstop_desc[] = { SLE_VAR(RoadStop, xy, SLE_UINT32), SLE_CONDNULL(1, 0, 44), |