Fix assertion failure when upgrading dual road/tram bridge
In case where the other road/tram type does not extend across the bridge, but is present on the upgrade tile.
This commit is contained in:
@@ -639,10 +639,17 @@ CommandCost CmdBuildBridge(TileIndex end_tile, DoCommandFlag flags, uint32 p1, u
|
||||
|
||||
Owner owner_road = hasroad ? GetRoadOwner(t, RTT_ROAD) : company;
|
||||
Owner owner_tram = hastram ? GetRoadOwner(t, RTT_TRAM) : company;
|
||||
MakeRoadBridgeRamp(t, owner, owner_road, owner_tram, bridge_type, d, road_rt, tram_rt, is_upgrade);
|
||||
|
||||
if (is_upgrade) {
|
||||
if (road_rt != INVALID_ROADTYPE) SetCustomBridgeHeadRoadBits(t, RTT_ROAD, GetCustomBridgeHeadRoadBits(t, RTT_ROAD) | DiagDirToRoadBits(d));
|
||||
if (tram_rt != INVALID_ROADTYPE) SetCustomBridgeHeadRoadBits(t, RTT_TRAM, GetCustomBridgeHeadRoadBits(t, RTT_TRAM) | DiagDirToRoadBits(d));
|
||||
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);
|
||||
} else {
|
||||
MakeRoadBridgeRamp(t, owner, owner_road, owner_tram, bridge_type, d, road_rt, tram_rt);
|
||||
}
|
||||
};
|
||||
make_bridge_ramp(tile_start, dir);
|
||||
|
Reference in New Issue
Block a user