Only apply signal speed restrictions from the front direction

This commit is contained in:
Jonathan G Rennison
2021-06-28 00:04:12 +01:00
parent 5fb3eb0bb9
commit 11e49ef99e

View File

@@ -5559,6 +5559,7 @@ bool TrainController(Train *v, Vehicle *nomove, bool reverse)
if (_settings_game.vehicle.train_speed_adaptation && IsTileType(gp.old_tile, MP_RAILWAY) && HasSignals(gp.old_tile)) {
const TrackdirBits rev_tracks = TrackBitsToTrackdirBits(GetTrackBits(gp.old_tile)) & DiagdirReachesTrackdirs(ReverseDiagDir(enterdir));
const Trackdir rev_trackdir = FindFirstTrackdir(rev_tracks);
if (HasSignalOnTrackdir(gp.old_tile, ReverseTrackdir(rev_trackdir))) {
const Track track = TrackdirToTrack(rev_trackdir);
SignalSpeedKey speed_key = {
speed_key.signal_tile = gp.old_tile,
@@ -5578,6 +5579,7 @@ bool TrainController(Train *v, Vehicle *nomove, bool reverse)
v->signal_speed_restriction = 0;
}
}
}
switch (TrainMovedChangeSignal(v, gp.new_tile, enterdir, true)) {
case CHANGED_NORMAL_TO_PBS_BLOCK:
@@ -5621,8 +5623,7 @@ bool TrainController(Train *v, Vehicle *nomove, bool reverse)
const Trackdir rev_trackdir = FindFirstTrackdir(rev_tracks);
const Track track = TrackdirToTrack(rev_trackdir);
if (HasSignalOnTrack(gp.old_tile, track)) {
if (_settings_game.vehicle.train_speed_adaptation) {
if (_settings_game.vehicle.train_speed_adaptation && HasSignalOnTrackdir(gp.old_tile, ReverseTrackdir(rev_trackdir))) {
SignalSpeedKey speed_key = {
speed_key.signal_tile = gp.old_tile,
speed_key.signal_track = track,
@@ -5635,6 +5636,7 @@ bool TrainController(Train *v, Vehicle *nomove, bool reverse)
_signal_speeds[speed_key] = speed_value;
}
if (HasSignalOnTrack(gp.old_tile, track)) {
if (IsRestrictedSignal(gp.old_tile)) {
const TraceRestrictProgram *prog = GetExistingTraceRestrictProgram(gp.old_tile, track);
if (prog && prog->actions_used_flags & TRPAUF_SLOT_RELEASE_BACK) {