From 3e1ab88323f49f26b70a8136af65dda47e76c361 Mon Sep 17 00:00:00 2001 From: Jonathan G Rennison Date: Tue, 1 Dec 2020 21:10:49 +0000 Subject: [PATCH] Fix NRT road/tram type conversion on savegame load from JokerPP v1.27 --- src/saveload/afterload.cpp | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/src/saveload/afterload.cpp b/src/saveload/afterload.cpp index be7d4c58ee..2158fb0414 100644 --- a/src/saveload/afterload.cpp +++ b/src/saveload/afterload.cpp @@ -1447,8 +1447,8 @@ bool AfterLoadGame() } } } else if (SlXvIsFeaturePresent(XSLFI_JOKERPP, SL_JOKER_1_27)) { - uint next_road_type = 0; - uint next_tram_type = 0; + uint next_road_type = 2; + uint next_tram_type = 2; RoadType road_types[32]; RoadType tram_types[32]; MemSetT(road_types, ROADTYPE_ROAD, 31); @@ -1456,10 +1456,23 @@ bool AfterLoadGame() road_types[31] = INVALID_ROADTYPE; tram_types[31] = INVALID_ROADTYPE; for (RoadType rt = ROADTYPE_BEGIN; rt < ROADTYPE_END; rt++) { + const RoadTypeInfo *rti = GetRoadTypeInfo(rt); if (RoadTypeIsRoad(rt)) { - if (next_road_type < 31) road_types[next_road_type++] = rt; + if (rti->label == 'ROAD') { + road_types[0] = rt; + } else if (rti->label == 'ELRD') { + road_types[1] = rt; + } else if (next_road_type < 31) { + road_types[next_road_type++] = rt; + } } else { - if (next_tram_type < 31) tram_types[next_tram_type++] = rt; + if (rti->label == 'RAIL') { + tram_types[0] = rt; + } else if (rti->label == 'ELRL') { + tram_types[1] = rt; + } else if (next_tram_type < 31) { + tram_types[next_tram_type++] = rt; + } } } for (TileIndex t = 0; t < map_size; t++) {