Add GetTileTrackStatus wrapper for when red signals part is not needed
This commit is contained in:
@@ -584,8 +584,7 @@ int GetTrainStopLocation(StationID station_id, TileIndex tile, Train *v, bool up
|
||||
TileIndex tile = front->tile + TileOffsByDiagDir(dir);
|
||||
|
||||
/* Determine the track status on the next tile */
|
||||
TrackStatus ts = GetTileTrackStatus(tile, TRANSPORT_RAIL, 0, ReverseDiagDir(dir));
|
||||
TrackdirBits trackdirbits = TrackStatusToTrackdirBits(ts) & DiagdirReachesTrackdirs(dir);
|
||||
TrackdirBits trackdirbits = GetTileTrackdirBits(tile, TRANSPORT_RAIL, 0, ReverseDiagDir(dir)) & DiagdirReachesTrackdirs(dir);
|
||||
|
||||
/* mask unreachable track bits if we are forbidden to do 90deg turns */
|
||||
TrackBits bits = TrackdirBitsToTrackBits(trackdirbits);
|
||||
@@ -4446,7 +4445,7 @@ static Track ChooseTrainTrack(Train *v, TileIndex tile, DiagDirection enterdir,
|
||||
/* Extend reservation until we have found a safe position. */
|
||||
DiagDirection exitdir = TrackdirToExitdir(res_dest.trackdir);
|
||||
TileIndex next_tile = TileAddByDiagDir(res_dest.tile, exitdir);
|
||||
TrackBits reachable = TrackdirBitsToTrackBits((TrackdirBits)(GetTileTrackStatus(next_tile, TRANSPORT_RAIL, 0))) & DiagdirReachesTracks(exitdir);
|
||||
TrackBits reachable = TrackdirBitsToTrackBits(GetTileTrackdirBits(next_tile, TRANSPORT_RAIL, 0)) & DiagdirReachesTracks(exitdir);
|
||||
if (Rail90DegTurnDisallowedTilesFromDiagDir(res_dest.tile, next_tile, exitdir)) {
|
||||
reachable &= ~TrackCrossesTracks(TrackdirToTrack(res_dest.trackdir));
|
||||
}
|
||||
@@ -4610,7 +4609,7 @@ bool TryPathReserve(Train *v, bool mark_as_stuck, bool first_tile_okay)
|
||||
} else {
|
||||
new_tile = TileAddByDiagDir(origin.tile, exitdir);
|
||||
}
|
||||
TrackBits reachable = TrackdirBitsToTrackBits(TrackStatusToTrackdirBits(GetTileTrackStatus(new_tile, TRANSPORT_RAIL, 0)) & DiagdirReachesTrackdirs(exitdir));
|
||||
TrackBits reachable = TrackdirBitsToTrackBits(GetTileTrackdirBits(new_tile, TRANSPORT_RAIL, 0) & DiagdirReachesTrackdirs(exitdir));
|
||||
|
||||
if (Rail90DegTurnDisallowedTilesFromDiagDir(origin.tile, new_tile, exitdir)) reachable &= ~TrackCrossesTracks(TrackdirToTrack(origin.trackdir));
|
||||
|
||||
|
Reference in New Issue
Block a user