Changeset - r8297:4cf944e34d89
[Not reviewed]
master
0 1 0
smatz - 16 years ago 2008-01-15 11:45:29
smatz@openttd.org
(svn r11861) -Fix: do not call rail specific functions when removing road tunnel/bridge
1 file changed with 22 insertions and 15 deletions:
0 comments (0 inline, 0 general)
src/tunnelbridge_cmd.cpp
Show inline comments
 
@@ -606,15 +606,19 @@ static CommandCost DoClearTunnel(TileInd
 
		/* We first need to request the direction before calling DoClearSquare
 
		 *  else the direction is always 0.. dah!! ;) */
 
		DiagDirection dir = GetTunnelBridgeDirection(tile);
 
		Track track;
 
		bool rail = GetTunnelBridgeTransportType(tile) == TRANSPORT_RAIL;
 

	
 
		DoClearSquare(tile);
 
		DoClearSquare(endtile);
 
		UpdateSignalsOnSegment(tile, ReverseDiagDir(dir));
 
		UpdateSignalsOnSegment(endtile, dir);
 
		track = AxisToTrack(DiagDirToAxis(dir));
 
		YapfNotifyTrackLayoutChange(tile, track);
 
		YapfNotifyTrackLayoutChange(endtile, track);
 

	
 
		if (rail) {
 
			UpdateSignalsOnSegment(tile, ReverseDiagDir(dir));
 
			UpdateSignalsOnSegment(endtile, dir);
 

	
 
			Track track = AxisToTrack(DiagDirToAxis(dir));
 
			YapfNotifyTrackLayoutChange(tile, track);
 
			YapfNotifyTrackLayoutChange(endtile, track);
 
		}
 
	}
 
	return CommandCost(EXPENSES_CONSTRUCTION, _price.clear_tunnel * (DistanceManhattan(tile, endtile) + 1));
 
}
 
@@ -654,21 +658,24 @@ static CommandCost DoClearBridge(TileInd
 
	}
 

	
 
	if (flags & DC_EXEC) {
 
		TileIndex c;
 
		Track track;
 
		/* read this value before actual removal of bridge */
 
		bool rail = GetTunnelBridgeTransportType(tile) == TRANSPORT_RAIL;
 

	
 
		DoClearSquare(tile);
 
		DoClearSquare(endtile);
 
		for (c = tile + delta; c != endtile; c += delta) {
 
				ClearBridgeMiddle(c);
 
		for (TileIndex c = tile + delta; c != endtile; c += delta) {
 
			ClearBridgeMiddle(c);
 
			MarkTileDirtyByTile(c);
 
		}
 

	
 
		UpdateSignalsOnSegment(tile, ReverseDiagDir(direction));
 
		UpdateSignalsOnSegment(endtile, direction);
 
		track = AxisToTrack(DiagDirToAxis(direction));
 
		YapfNotifyTrackLayoutChange(tile, track);
 
		YapfNotifyTrackLayoutChange(endtile, track);
 
		if (rail) {
 
			UpdateSignalsOnSegment(tile, ReverseDiagDir(direction));
 
			UpdateSignalsOnSegment(endtile, direction);
 

	
 
			Track track = AxisToTrack(DiagDirToAxis(direction));
 
			YapfNotifyTrackLayoutChange(tile, track);
 
			YapfNotifyTrackLayoutChange(endtile, track);
 
		}
 
	}
 

	
 
	return CommandCost(EXPENSES_CONSTRUCTION, (DistanceManhattan(tile, endtile) + 1) * _price.clear_bridge);
0 comments (0 inline, 0 general)