Fix road/tram type handling when loading JokerPP v1.27 savegames
See #123
This commit is contained in:
@@ -1451,6 +1451,44 @@ bool AfterLoadGame()
|
|||||||
SB(_me[t].m7, 6, 2, 0); // Clear pre-NRT road type bits.
|
SB(_me[t].m7, 6, 2, 0); // Clear pre-NRT road type bits.
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} else if (SlXvIsFeaturePresent(XSLFI_JOKERPP, SL_JOKER_1_27)) {
|
||||||
|
uint next_road_type = 0;
|
||||||
|
uint next_tram_type = 0;
|
||||||
|
RoadType road_types[32];
|
||||||
|
RoadType tram_types[32];
|
||||||
|
MemSetT(road_types, ROADTYPE_ROAD, 31);
|
||||||
|
MemSetT(tram_types, ROADTYPE_TRAM, 31);
|
||||||
|
road_types[31] = INVALID_ROADTYPE;
|
||||||
|
tram_types[31] = INVALID_ROADTYPE;
|
||||||
|
for (RoadType rt = ROADTYPE_BEGIN; rt < ROADTYPE_END; rt++) {
|
||||||
|
if (RoadTypeIsRoad(rt)) {
|
||||||
|
if (next_road_type < 31) road_types[next_road_type++] = rt;
|
||||||
|
} else {
|
||||||
|
if (next_tram_type < 31) tram_types[next_tram_type++] = rt;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (TileIndex t = 0; t < map_size; t++) {
|
||||||
|
bool has_road = false;
|
||||||
|
switch (GetTileType(t)) {
|
||||||
|
case MP_ROAD:
|
||||||
|
has_road = true;
|
||||||
|
break;
|
||||||
|
case MP_STATION:
|
||||||
|
has_road = IsRoadStop(t);
|
||||||
|
break;
|
||||||
|
case MP_TUNNELBRIDGE:
|
||||||
|
has_road = GetTunnelBridgeTransportType(t) == TRANSPORT_ROAD;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (has_road) {
|
||||||
|
RoadType road_rt = road_types[(GB(_me[t].m7, 6, 1) << 4) | GB(_m[t].m4, 0, 4)];
|
||||||
|
RoadType tram_rt = tram_types[(GB(_me[t].m7, 7, 1) << 4) | GB(_m[t].m4, 4, 4)];
|
||||||
|
SetRoadTypes(t, road_rt, tram_rt);
|
||||||
|
SB(_me[t].m7, 6, 2, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (SlXvIsFeatureMissing(XSLFI_DUAL_RAIL_TYPES)) {
|
if (SlXvIsFeatureMissing(XSLFI_DUAL_RAIL_TYPES)) {
|
||||||
|
Reference in New Issue
Block a user