From b6e099121ae8874d10e9d17592fd4ef57e8d0fd8 Mon Sep 17 00:00:00 2001 From: Jonathan G Rennison Date: Wed, 22 Jun 2022 00:24:13 +0100 Subject: [PATCH] Fix limit train lookahead to signal aspect within signalled tunnel/bridges --- src/pbs.cpp | 1 + src/train_cmd.cpp | 1 + 2 files changed, 2 insertions(+) diff --git a/src/pbs.cpp b/src/pbs.cpp index e26dd1fbf7..94bffeedd7 100644 --- a/src/pbs.cpp +++ b/src/pbs.cpp @@ -999,6 +999,7 @@ void SetTrainReservationLookaheadEnd(Train *v) int32 threshold = v->lookahead->current_position + 24; uint8 known_signals_ahead = 1; for (const TrainReservationLookAheadItem &item : v->lookahead->items) { + if (item.end >= v->lookahead->reservation_end_position) break; if (item.type == TRLIT_SIGNAL) { if (item.start <= threshold) { /* Signal is within visual range */ diff --git a/src/train_cmd.cpp b/src/train_cmd.cpp index 7af9d604f1..04c9dc464d 100644 --- a/src/train_cmd.cpp +++ b/src/train_cmd.cpp @@ -4083,6 +4083,7 @@ static TileIndex CheckLongReservePbsTunnelBridgeOnTrackdir(Train* v, TileIndex t } else { raw_free_tiles = GetAvailableFreeTilesInSignalledTunnelBridgeWithStartOffset(tile, end, v->lookahead->tunnel_bridge_reserved_tiles + 1); ApplyAvailableFreeTunnelBridgeTiles(v->lookahead.get(), raw_free_tiles, tile, end); + SetTrainReservationLookaheadEnd(v); } } else { raw_free_tiles = GetAvailableFreeTilesInSignalledTunnelBridge(tile, end, tile);