Only apply signal speed restrictions from the front direction
This commit is contained in:
@@ -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)) {
|
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 TrackdirBits rev_tracks = TrackBitsToTrackdirBits(GetTrackBits(gp.old_tile)) & DiagdirReachesTrackdirs(ReverseDiagDir(enterdir));
|
||||||
const Trackdir rev_trackdir = FindFirstTrackdir(rev_tracks);
|
const Trackdir rev_trackdir = FindFirstTrackdir(rev_tracks);
|
||||||
|
if (HasSignalOnTrackdir(gp.old_tile, ReverseTrackdir(rev_trackdir))) {
|
||||||
const Track track = TrackdirToTrack(rev_trackdir);
|
const Track track = TrackdirToTrack(rev_trackdir);
|
||||||
SignalSpeedKey speed_key = {
|
SignalSpeedKey speed_key = {
|
||||||
speed_key.signal_tile = gp.old_tile,
|
speed_key.signal_tile = gp.old_tile,
|
||||||
@@ -5578,6 +5579,7 @@ bool TrainController(Train *v, Vehicle *nomove, bool reverse)
|
|||||||
v->signal_speed_restriction = 0;
|
v->signal_speed_restriction = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
switch (TrainMovedChangeSignal(v, gp.new_tile, enterdir, true)) {
|
switch (TrainMovedChangeSignal(v, gp.new_tile, enterdir, true)) {
|
||||||
case CHANGED_NORMAL_TO_PBS_BLOCK:
|
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 Trackdir rev_trackdir = FindFirstTrackdir(rev_tracks);
|
||||||
const Track track = TrackdirToTrack(rev_trackdir);
|
const Track track = TrackdirToTrack(rev_trackdir);
|
||||||
|
|
||||||
if (HasSignalOnTrack(gp.old_tile, track)) {
|
if (_settings_game.vehicle.train_speed_adaptation && HasSignalOnTrackdir(gp.old_tile, ReverseTrackdir(rev_trackdir))) {
|
||||||
if (_settings_game.vehicle.train_speed_adaptation) {
|
|
||||||
SignalSpeedKey speed_key = {
|
SignalSpeedKey speed_key = {
|
||||||
speed_key.signal_tile = gp.old_tile,
|
speed_key.signal_tile = gp.old_tile,
|
||||||
speed_key.signal_track = track,
|
speed_key.signal_track = track,
|
||||||
@@ -5635,6 +5636,7 @@ bool TrainController(Train *v, Vehicle *nomove, bool reverse)
|
|||||||
_signal_speeds[speed_key] = speed_value;
|
_signal_speeds[speed_key] = speed_value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (HasSignalOnTrack(gp.old_tile, track)) {
|
||||||
if (IsRestrictedSignal(gp.old_tile)) {
|
if (IsRestrictedSignal(gp.old_tile)) {
|
||||||
const TraceRestrictProgram *prog = GetExistingTraceRestrictProgram(gp.old_tile, track);
|
const TraceRestrictProgram *prog = GetExistingTraceRestrictProgram(gp.old_tile, track);
|
||||||
if (prog && prog->actions_used_flags & TRPAUF_SLOT_RELEASE_BACK) {
|
if (prog && prog->actions_used_flags & TRPAUF_SLOT_RELEASE_BACK) {
|
||||||
|
Reference in New Issue
Block a user