From 3ae94d857c3db1eb288b456384f8effa97e5a4b1 Mon Sep 17 00:00:00 2001 From: Jonathan G Rennison Date: Thu, 28 Apr 2016 21:47:57 +0100 Subject: [PATCH] Fix FindTrainOnTrackEnum finding trains inside signalled bridge/tunnels. Now only find trains on the given entrance/exit tile. This fixes trains not leaving stations by PBS into non-empty signalled bridge/tunnels. --- src/pbs.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/pbs.cpp b/src/pbs.cpp index f0511a73b3..2ba7bbf9d1 100644 --- a/src/pbs.cpp +++ b/src/pbs.cpp @@ -275,6 +275,14 @@ static Vehicle *FindTrainOnTrackEnum(Vehicle *v, void *data) if (v->type != VEH_TRAIN || (v->vehstatus & VS_CRASHED)) return NULL; Train *t = Train::From(v); + if (t->track == TRACK_BIT_WORMHOLE) { + /* Do not find trains inside signalled bridge/tunnels. + * Trains on the ramp/entrance itself are found though. + */ + if (IsTileType(info->res.tile, MP_TUNNELBRIDGE) && HasWormholeSignals(info->res.tile) && info->res.tile != TileVirtXY(t->x_pos, t->y_pos)) { + return NULL; + } + } if (t->track == TRACK_BIT_WORMHOLE || HasBit((TrackBits)t->track, TrackdirToTrack(info->res.trackdir))) { t = t->First();