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.
pull/8/head
Jonathan G Rennison 8 years ago
parent 095229128d
commit 3ae94d857c

@ -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();

Loading…
Cancel
Save