mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-03-12 18:40:29 +00:00
(svn r21880) -Fix: when a train after reversing ended at the last bit of a bridge ramp and directed outside the bridge, it could still have track set to TRACK_BIT_WORMHOLE
This commit is contained in:
parent
e308c348f0
commit
a6fcd78538
@ -1454,6 +1454,22 @@ static void UpdateStatusAfterSwap(Train *v)
|
||||
/* Call the proper EnterTile function unless we are in a wormhole. */
|
||||
if (v->track != TRACK_BIT_WORMHOLE) {
|
||||
VehicleEnterTile(v, v->tile, v->x_pos, v->y_pos);
|
||||
} else {
|
||||
/* VehicleEnter_TunnelBridge() sets TRACK_BIT_WORMHOLE when the vehicle
|
||||
* is on the last bit of the bridge head (frame == TILE_SIZE - 1).
|
||||
* If we were swapped with such a vehicle, we have set TRACK_BIT_WORMHOLE,
|
||||
* when we shouldn't have. Check if this is the case. */
|
||||
TileIndex vt = TileVirtXY(v->x_pos, v->y_pos);
|
||||
if (IsTileType(vt, MP_TUNNELBRIDGE)) {
|
||||
VehicleEnterTile(v, vt, v->x_pos, v->y_pos);
|
||||
if (v->track != TRACK_BIT_WORMHOLE && IsBridgeTile(v->tile)) {
|
||||
/* We have just left the wormhole, possibly set the
|
||||
* "goingdown" bit. UpdateInclination() can be used
|
||||
* because we are at the border of the tile. */
|
||||
v->UpdateInclination(true, true);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
v->UpdateViewport(true, true);
|
||||
|
Loading…
Reference in New Issue
Block a user