mirror of https://github.com/OpenTTD/OpenTTD
(svn r19383) -Fix [FS#3680]: Overbuilding bridges cleared PBS reservation.
parent
22081cbd19
commit
c0a9215bad
|
@ -256,6 +256,7 @@ CommandCost CmdBuildBridge(TileIndex end_tile, DoCommandFlag flags, uint32 p1, u
|
||||||
uint z_end;
|
uint z_end;
|
||||||
Slope tileh_start = GetTileSlope(tile_start, &z_start);
|
Slope tileh_start = GetTileSlope(tile_start, &z_start);
|
||||||
Slope tileh_end = GetTileSlope(tile_end, &z_end);
|
Slope tileh_end = GetTileSlope(tile_end, &z_end);
|
||||||
|
bool pbs_reservation = false;
|
||||||
|
|
||||||
CommandCost terraform_cost_north = CheckBridgeSlopeNorth(direction, &tileh_start, &z_start);
|
CommandCost terraform_cost_north = CheckBridgeSlopeNorth(direction, &tileh_start, &z_start);
|
||||||
CommandCost terraform_cost_south = CheckBridgeSlopeSouth(direction, &tileh_end, &z_end);
|
CommandCost terraform_cost_south = CheckBridgeSlopeSouth(direction, &tileh_end, &z_end);
|
||||||
|
@ -298,8 +299,19 @@ CommandCost CmdBuildBridge(TileIndex end_tile, DoCommandFlag flags, uint32 p1, u
|
||||||
cost.AddCost((bridge_len + 1) * _price[PR_CLEAR_BRIDGE]); // The cost of clearing the current bridge.
|
cost.AddCost((bridge_len + 1) * _price[PR_CLEAR_BRIDGE]); // The cost of clearing the current bridge.
|
||||||
owner = GetTileOwner(tile_start);
|
owner = GetTileOwner(tile_start);
|
||||||
|
|
||||||
/* Do not remove road types when upgrading a bridge */
|
switch (transport_type) {
|
||||||
roadtypes |= GetRoadTypes(tile_start);
|
case TRANSPORT_RAIL:
|
||||||
|
/* Keep the reservation, the path stays valid. */
|
||||||
|
pbs_reservation = HasTunnelBridgeReservation(tile_start);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case TRANSPORT_ROAD:
|
||||||
|
/* Do not remove road types when upgrading a bridge */
|
||||||
|
roadtypes |= GetRoadTypes(tile_start);
|
||||||
|
break;
|
||||||
|
|
||||||
|
default: break;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
/* Build a new bridge. */
|
/* Build a new bridge. */
|
||||||
|
|
||||||
|
@ -404,6 +416,8 @@ CommandCost CmdBuildBridge(TileIndex end_tile, DoCommandFlag flags, uint32 p1, u
|
||||||
case TRANSPORT_RAIL:
|
case TRANSPORT_RAIL:
|
||||||
MakeRailBridgeRamp(tile_start, owner, bridge_type, dir, railtype);
|
MakeRailBridgeRamp(tile_start, owner, bridge_type, dir, railtype);
|
||||||
MakeRailBridgeRamp(tile_end, owner, bridge_type, ReverseDiagDir(dir), railtype);
|
MakeRailBridgeRamp(tile_end, owner, bridge_type, ReverseDiagDir(dir), railtype);
|
||||||
|
SetTunnelBridgeReservation(tile_start, pbs_reservation);
|
||||||
|
SetTunnelBridgeReservation(tile_end, pbs_reservation);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case TRANSPORT_ROAD:
|
case TRANSPORT_ROAD:
|
||||||
|
|
Loading…
Reference in New Issue