Changeset - r17132:5e9806613e1e
[Not reviewed]
master
0 1 0
smatz - 13 years ago 2011-01-21 16:35:12
smatz@openttd.org
(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
1 file changed with 16 insertions and 0 deletions:
0 comments (0 inline, 0 general)
src/train_cmd.cpp
Show inline comments
 
@@ -1454,6 +1454,22 @@ static void UpdateStatusAfterSwap(Train 
 
	/* 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);
0 comments (0 inline, 0 general)