Fix crash when dragging two-directional block signals onto a bridge or tunnel

(cherry picked from commit 4199ba5981b2761d5226ebc89b315f00e62e1a3a)
This commit is contained in:
keldorkatarn
2016-04-01 22:17:33 +02:00
committed by Jonathan G Rennison
parent 891fd08e9d
commit 095229128d

View File

@@ -1118,10 +1118,12 @@ CommandCost CmdBuildSingleSignal(TileIndex tile, DoCommandFlag flags, uint32 p1,
SetBitTunnelBridgeExit(tile); SetBitTunnelBridgeExit(tile);
} }
} }
SetTunnelBridgeSemaphore(tile, sigvar == SIG_SEMAPHORE); if (p2 == 0 || p2 == 4 || p2 == 8) {
SetTunnelBridgeSemaphore(tile_exit, sigvar == SIG_SEMAPHORE); SetTunnelBridgeSemaphore(tile, sigvar == SIG_SEMAPHORE);
SetTunnelBridgePBS(tile, is_pbs); SetTunnelBridgeSemaphore(tile_exit, sigvar == SIG_SEMAPHORE);
SetTunnelBridgePBS(tile_exit, is_pbs); SetTunnelBridgePBS(tile, is_pbs);
SetTunnelBridgePBS(tile_exit, is_pbs);
}
} }
if (IsTunnelBridgeExit(tile) && IsTunnelBridgePBS(tile) && !HasTunnelBridgeReservation(tile)) SetTunnelBridgeExitGreen(tile, false); if (IsTunnelBridgeExit(tile) && IsTunnelBridgePBS(tile) && !HasTunnelBridgeReservation(tile)) SetTunnelBridgeExitGreen(tile, false);
if (IsTunnelBridgeExit(tile_exit) && IsTunnelBridgePBS(tile_exit) && !HasTunnelBridgeReservation(tile_exit)) SetTunnelBridgeExitGreen(tile_exit, false); if (IsTunnelBridgeExit(tile_exit) && IsTunnelBridgePBS(tile_exit) && !HasTunnelBridgeReservation(tile_exit)) SetTunnelBridgeExitGreen(tile_exit, false);