|
|
@ -606,15 +606,19 @@ static CommandCost DoClearTunnel(TileIndex tile, uint32 flags)
|
|
|
|
/* We first need to request the direction before calling DoClearSquare
|
|
|
|
/* We first need to request the direction before calling DoClearSquare
|
|
|
|
* else the direction is always 0.. dah!! ;) */
|
|
|
|
* else the direction is always 0.. dah!! ;) */
|
|
|
|
DiagDirection dir = GetTunnelBridgeDirection(tile);
|
|
|
|
DiagDirection dir = GetTunnelBridgeDirection(tile);
|
|
|
|
Track track;
|
|
|
|
bool rail = GetTunnelBridgeTransportType(tile) == TRANSPORT_RAIL;
|
|
|
|
|
|
|
|
|
|
|
|
DoClearSquare(tile);
|
|
|
|
DoClearSquare(tile);
|
|
|
|
DoClearSquare(endtile);
|
|
|
|
DoClearSquare(endtile);
|
|
|
|
UpdateSignalsOnSegment(tile, ReverseDiagDir(dir));
|
|
|
|
|
|
|
|
UpdateSignalsOnSegment(endtile, dir);
|
|
|
|
if (rail) {
|
|
|
|
track = AxisToTrack(DiagDirToAxis(dir));
|
|
|
|
UpdateSignalsOnSegment(tile, ReverseDiagDir(dir));
|
|
|
|
YapfNotifyTrackLayoutChange(tile, track);
|
|
|
|
UpdateSignalsOnSegment(endtile, dir);
|
|
|
|
YapfNotifyTrackLayoutChange(endtile, track);
|
|
|
|
|
|
|
|
|
|
|
|
Track track = AxisToTrack(DiagDirToAxis(dir));
|
|
|
|
|
|
|
|
YapfNotifyTrackLayoutChange(tile, track);
|
|
|
|
|
|
|
|
YapfNotifyTrackLayoutChange(endtile, track);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return CommandCost(EXPENSES_CONSTRUCTION, _price.clear_tunnel * (DistanceManhattan(tile, endtile) + 1));
|
|
|
|
return CommandCost(EXPENSES_CONSTRUCTION, _price.clear_tunnel * (DistanceManhattan(tile, endtile) + 1));
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -654,21 +658,24 @@ static CommandCost DoClearBridge(TileIndex tile, uint32 flags)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (flags & DC_EXEC) {
|
|
|
|
if (flags & DC_EXEC) {
|
|
|
|
TileIndex c;
|
|
|
|
/* read this value before actual removal of bridge */
|
|
|
|
Track track;
|
|
|
|
bool rail = GetTunnelBridgeTransportType(tile) == TRANSPORT_RAIL;
|
|
|
|
|
|
|
|
|
|
|
|
DoClearSquare(tile);
|
|
|
|
DoClearSquare(tile);
|
|
|
|
DoClearSquare(endtile);
|
|
|
|
DoClearSquare(endtile);
|
|
|
|
for (c = tile + delta; c != endtile; c += delta) {
|
|
|
|
for (TileIndex c = tile + delta; c != endtile; c += delta) {
|
|
|
|
ClearBridgeMiddle(c);
|
|
|
|
ClearBridgeMiddle(c);
|
|
|
|
MarkTileDirtyByTile(c);
|
|
|
|
MarkTileDirtyByTile(c);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
UpdateSignalsOnSegment(tile, ReverseDiagDir(direction));
|
|
|
|
if (rail) {
|
|
|
|
UpdateSignalsOnSegment(endtile, direction);
|
|
|
|
UpdateSignalsOnSegment(tile, ReverseDiagDir(direction));
|
|
|
|
track = AxisToTrack(DiagDirToAxis(direction));
|
|
|
|
UpdateSignalsOnSegment(endtile, direction);
|
|
|
|
YapfNotifyTrackLayoutChange(tile, track);
|
|
|
|
|
|
|
|
YapfNotifyTrackLayoutChange(endtile, track);
|
|
|
|
Track track = AxisToTrack(DiagDirToAxis(direction));
|
|
|
|
|
|
|
|
YapfNotifyTrackLayoutChange(tile, track);
|
|
|
|
|
|
|
|
YapfNotifyTrackLayoutChange(endtile, track);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return CommandCost(EXPENSES_CONSTRUCTION, (DistanceManhattan(tile, endtile) + 1) * _price.clear_bridge);
|
|
|
|
return CommandCost(EXPENSES_CONSTRUCTION, (DistanceManhattan(tile, endtile) + 1) * _price.clear_bridge);
|
|
|
|