Fix upgrading road bridge with opposite road/tram type producing broken ramp road bits

pull/217/head
Jonathan G Rennison 3 years ago
parent 60e64b3b20
commit fdeb75e3c8

@ -730,11 +730,16 @@ CommandCost CmdBuildBridge(TileIndex end_tile, DoCommandFlag flags, uint32 p1, u
if (is_upgrade) {
RoadBits road_bits = GetCustomBridgeHeadRoadBits(t, RTT_ROAD);
RoadBits tram_bits = GetCustomBridgeHeadRoadBits(t, RTT_TRAM);
if (RoadTypeIsRoad(roadtype)) road_bits |= DiagDirToRoadBits(d);
if (RoadTypeIsTram(roadtype)) tram_bits |= DiagDirToRoadBits(d);
MakeRoadBridgeRamp(t, owner, owner_road, owner_tram, bridge_type, d, road_rt, tram_rt);
if (road_rt != INVALID_ROADTYPE) SetCustomBridgeHeadRoadBits(t, RTT_ROAD, road_bits);
if (tram_rt != INVALID_ROADTYPE) SetCustomBridgeHeadRoadBits(t, RTT_TRAM, tram_bits);
auto add_road_bits = [roadtype, d, t](RoadTramType rtt, RoadBits bits, RoadType build_rt) {
if (GetRoadTramType(roadtype) == rtt) {
bits |= DiagDirToRoadBits(d);
if (HasAtMostOneBit(bits)) bits |= DiagDirToRoadBits(ReverseDiagDir(d));
}
if (build_rt != INVALID_ROADTYPE) SetCustomBridgeHeadRoadBits(t, rtt, bits);
};
add_road_bits(RTT_ROAD, road_bits, road_rt);
add_road_bits(RTT_TRAM, tram_bits, tram_rt);
} else {
MakeRoadBridgeRamp(t, owner, owner_road, owner_tram, bridge_type, d, road_rt, tram_rt);
}

Loading…
Cancel
Save