From 3b6d3080f203d29f662c919df8d6bc0778e0d657 Mon Sep 17 00:00:00 2001 From: Peter Nelson Date: Tue, 22 Oct 2024 17:32:15 +0100 Subject: [PATCH] Add: Apply rail/road type conversion when NewGRFs are updated mid-game. This will update the rail/road type of tiles on the map, taking account of tram state, if types are moved around. --- src/saveload/afterload.cpp | 1 + src/saveload/labelmaps_sl.cpp | 16 ++++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/src/saveload/afterload.cpp b/src/saveload/afterload.cpp index c0603da2c0..a8fb1b98ac 100644 --- a/src/saveload/afterload.cpp +++ b/src/saveload/afterload.cpp @@ -3362,6 +3362,7 @@ void ReloadNewGRFData() RecomputePrices(); /* reload vehicles */ ResetVehicleHash(); + AfterLoadLabelMaps(); AfterLoadVehiclesPhase1(false); AfterLoadVehiclesPhase2(false); StartupEngines(); diff --git a/src/saveload/labelmaps_sl.cpp b/src/saveload/labelmaps_sl.cpp index a354f34174..9a35ec4ab8 100644 --- a/src/saveload/labelmaps_sl.cpp +++ b/src/saveload/labelmaps_sl.cpp @@ -130,11 +130,27 @@ static void ConvertRoadTypes() } } +/** Populate label lists with current values. */ +static void SetCurrentLabelLists() +{ + _railtype_list.clear(); + for (RailType rt = RAILTYPE_BEGIN; rt != RAILTYPE_END; rt++) { + _railtype_list.push_back({GetRailTypeInfo(rt)->label, 0}); + } + + _roadtype_list.clear(); + for (RoadType rt = ROADTYPE_BEGIN; rt != ROADTYPE_END; rt++) { + _roadtype_list.push_back({GetRoadTypeInfo(rt)->label, GetRoadTramType(rt)}); + } +} + /** Perform rail type and road type conversion if necessary. */ void AfterLoadLabelMaps() { ConvertRailTypes(); ConvertRoadTypes(); + + SetCurrentLabelLists(); } void ResetLabelMaps()