(svn r11861) -Fix: do not call rail specific functions when removing road tunnel/bridge
authorsmatz
Tue, 15 Jan 2008 11:45:29 +0000
changeset 8793 b6c63a092c8f
parent 8792 1f062b9f10f6
child 8794 ccb35d65645b
(svn r11861) -Fix: do not call rail specific functions when removing road tunnel/bridge
src/tunnelbridge_cmd.cpp
--- a/src/tunnelbridge_cmd.cpp	Tue Jan 15 11:43:06 2008 +0000
+++ b/src/tunnelbridge_cmd.cpp	Tue Jan 15 11:45:29 2008 +0000
@@ -606,15 +606,19 @@
 		/* 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 @@
 	}
 
 	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);