From 5bc9c8ed6e40da5712ec27ed206e7aca36620ac5 Mon Sep 17 00:00:00 2001 From: Jonathan G Rennison Date: Sun, 18 Aug 2019 16:52:57 +0100 Subject: [PATCH] Unreserve signalled tunnel/bridge head when entering from opposite to v->tile --- src/train_cmd.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/train_cmd.cpp b/src/train_cmd.cpp index 625e5b6174..ee6a1a0ffc 100644 --- a/src/train_cmd.cpp +++ b/src/train_cmd.cpp @@ -4222,7 +4222,10 @@ bool TrainController(Train *v, Vehicle *nomove, bool reverse) } if (v->Next() == nullptr) { if (v->tunnel_bridge_signal_num > 0 && distance == (TILE_SIZE * _settings_game.construction.simulated_wormhole_signals) - TILE_SIZE) HandleSignalBehindTrain(v, v->tunnel_bridge_signal_num - 2); - if (old_tile == v->tile) { + DiagDirection tunnel_bridge_dir = GetTunnelBridgeDirection(v->tile); + Axis axis = DiagDirToAxis(tunnel_bridge_dir); + DiagDirection axial_dir = DirToDiagDirAlongAxis(v->direction, axis); + if (old_tile == ((axial_dir == tunnel_bridge_dir) ? v->tile : GetOtherTunnelBridgeEnd(v->tile))) { /* We left ramp into wormhole. */ v->x_pos = gp.x; v->y_pos = gp.y;