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.
This commit is contained in:
@@ -275,6 +275,14 @@ static Vehicle *FindTrainOnTrackEnum(Vehicle *v, void *data)
|
|||||||
if (v->type != VEH_TRAIN || (v->vehstatus & VS_CRASHED)) return NULL;
|
if (v->type != VEH_TRAIN || (v->vehstatus & VS_CRASHED)) return NULL;
|
||||||
|
|
||||||
Train *t = Train::From(v);
|
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))) {
|
if (t->track == TRACK_BIT_WORMHOLE || HasBit((TrackBits)t->track, TrackdirToTrack(info->res.trackdir))) {
|
||||||
t = t->First();
|
t = t->First();
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user