Fix assert fail when ChooseTrainTrack called on disallowed 90 degree turn

This commit is contained in:
Jonathan G Rennison
2021-05-29 02:22:27 +01:00
parent c0bf8476b1
commit f703e23322

View File

@@ -4004,8 +4004,7 @@ static Track ChooseTrainTrack(Train *v, TileIndex tile, DiagDirection enterdir,
if (KillFirstBit(tracks) == TRACK_BIT_NONE) { if (KillFirstBit(tracks) == TRACK_BIT_NONE) {
Track track = FindFirstTrack(tracks); Track track = FindFirstTrack(tracks);
/* We need to check for signals only here, as a junction tile can't have signals. */ /* We need to check for signals only here, as a junction tile can't have signals. */
Trackdir td = TrackEnterdirToTrackdir(track, enterdir); if (track != INVALID_TRACK && HasPbsSignalOnTrackdir(tile, TrackEnterdirToTrackdir(track, enterdir))) {
if (track != INVALID_TRACK && HasPbsSignalOnTrackdir(tile, td)) {
if (IsRestrictedSignal(tile) && v->force_proceed != TFP_SIGNAL) { if (IsRestrictedSignal(tile) && v->force_proceed != TFP_SIGNAL) {
const TraceRestrictProgram *prog = GetExistingTraceRestrictProgram(tile, track); const TraceRestrictProgram *prog = GetExistingTraceRestrictProgram(tile, track);
if (prog && prog->actions_used_flags & (TRPAUF_WAIT_AT_PBS | TRPAUF_SLOT_ACQUIRE | TRPAUF_TRAIN_NOT_STUCK)) { if (prog && prog->actions_used_flags & (TRPAUF_WAIT_AT_PBS | TRPAUF_SLOT_ACQUIRE | TRPAUF_TRAIN_NOT_STUCK)) {