Use head tile track pieces in Train::GetVehicleTrackdir for trains in wormhole
This commit is contained in:
@@ -4092,8 +4092,15 @@ Trackdir Train::GetVehicleTrackdir() const
|
||||
}
|
||||
|
||||
if (this->track == TRACK_BIT_WORMHOLE) {
|
||||
/* train in tunnel or on bridge, so just use his direction and assume a diagonal track */
|
||||
return DiagDirToDiagTrackdir(DirToDiagDir(this->direction));
|
||||
/* Train in tunnel or on bridge, so just use his direction and make an educated guess
|
||||
* given the track bits on the tunnel/bridge head tile.
|
||||
* If a reachable track piece is reserved, use that, otherwise use the first reachable track piece.
|
||||
*/
|
||||
TrackBits tracks = GetAcrossTunnelBridgeReservationTrackBits(this->tile);
|
||||
if (!tracks) tracks = GetAcrossTunnelBridgeTrackBits(this->tile);
|
||||
Trackdir td = TrackExitdirToTrackdir(FindFirstTrack(tracks), GetTunnelBridgeDirection(this->tile));
|
||||
if (GetTunnelBridgeDirection(this->tile) != DirToDiagDir(this->direction)) td = ReverseTrackdir(td);
|
||||
return td;
|
||||
} else if (this->track & TRACK_BIT_WORMHOLE) {
|
||||
return TrackDirectionToTrackdir(FindFirstTrack(this->track & TRACK_BIT_MASK), this->direction);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user