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:
Jonathan G Rennison
2020-09-15 23:26:15 +01:00
parent 4c609ba93c
commit a0f78a8071
2 changed files with 11 additions and 11 deletions

View File

@@ -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);