From 654afdc1139ce59acb4a37b942438822ca29d796 Mon Sep 17 00:00:00 2001 From: Jonathan G Rennison Date: Sat, 31 Oct 2015 01:30:08 +0000 Subject: [PATCH 1/2] Fix removing signals from bridges not updating adjacent signals. Fix minor whitespace/code issues. --- src/rail_cmd.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/rail_cmd.cpp b/src/rail_cmd.cpp index c8f0adaa27..8864b79cee 100644 --- a/src/rail_cmd.cpp +++ b/src/rail_cmd.cpp @@ -1038,7 +1038,7 @@ CommandCost CmdBuildSingleSignal(TileIndex tile, DoCommandFlag flags, uint32 p1, } if (flags & DC_EXEC) { if (p2 == 0 && HasWormholeSignals(tile)) { // Toggle signal if already signals present. - if (IsTunnelBridgeEntrance (tile)) { + if (IsTunnelBridgeEntrance(tile)) { ClrBitTunnelBridgeSignal(tile); ClrBitTunnelBridgeExit(tile_exit); SetBitTunnelBridgeExit(tile); @@ -1049,7 +1049,7 @@ CommandCost CmdBuildSingleSignal(TileIndex tile, DoCommandFlag flags, uint32 p1, SetBitTunnelBridgeExit(tile_exit); SetBitTunnelBridgeSignal(tile); } - } else{ + } else { /* Create one direction tunnel/bridge if required. */ if (p2 == 0) { SetBitTunnelBridgeSignal(tile); @@ -1069,7 +1069,7 @@ CommandCost CmdBuildSingleSignal(TileIndex tile, DoCommandFlag flags, uint32 p1, } MarkTileDirtyByTile(tile); MarkTileDirtyByTile(tile_exit); - AddSideToSignalBuffer(tile, INVALID_DIAGDIR, _current_company); + AddSideToSignalBuffer(tile, INVALID_DIAGDIR, GetTileOwner(tile)); YapfNotifyTrackLayoutChange(tile, track); } return cost; @@ -1517,6 +1517,8 @@ CommandCost CmdRemoveSingleSignal(TileIndex tile, DoCommandFlag flags, uint32 p1 _m[end].m2 = 0; MarkTileDirtyByTile(tile); MarkTileDirtyByTile(end); + AddSideToSignalBuffer(tile, INVALID_DIAGDIR, GetTileOwner(tile)); + YapfNotifyTrackLayoutChange(tile, track); return CommandCost(EXPENSES_CONSTRUCTION, cost); } From 4759019cf5275d3429e12aa0ed10101b82c74863 Mon Sep 17 00:00:00 2001 From: Jonathan G Rennison Date: Sat, 31 Oct 2015 01:31:06 +0000 Subject: [PATCH 2/2] Fix vehicles emitting smoke when stopped at a bridge signal. --- src/train_cmd.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/train_cmd.cpp b/src/train_cmd.cpp index e4a62ce425..28d9248b6a 100644 --- a/src/train_cmd.cpp +++ b/src/train_cmd.cpp @@ -3195,6 +3195,7 @@ static bool CheckTrainStayInWormHole(Train *t, TileIndex tile) } SigSegState seg_state = _settings_game.pf.reserve_paths ? SIGSEG_PBS : UpdateSignalsOnSegment(tile, INVALID_DIAGDIR, t->owner); if (seg_state == SIGSEG_FULL || (seg_state == SIGSEG_PBS && !TryPathReserve(t))) { + t->vehstatus |= VS_TRAIN_SLOWING; t->cur_speed = 0; return true; } @@ -3415,6 +3416,7 @@ bool TrainController(Train *v, Vehicle *nomove, bool reverse) if (v->IsFrontEngine() && v->force_proceed == 0) { if (IsTunnelBridgeWithSignRed(gp.new_tile)) { v->cur_speed = 0; + v->vehstatus |= VS_TRAIN_SLOWING; return false; } if (IsTunnelBridgeExit(gp.new_tile)) { @@ -3503,6 +3505,7 @@ bool TrainController(Train *v, Vehicle *nomove, bool reverse) if (IsToCloseBehindTrain(v, gp.new_tile, distance == 0)) { if (distance == 0) v->wait_counter = 0; v->cur_speed = 0; + v->vehstatus |= VS_TRAIN_SLOWING; return false; } /* flip signal in front to red on bridges*/