diff --git a/src/train_cmd.cpp b/src/train_cmd.cpp index 3cdd3f1eb3..94faf2e5ef 100644 --- a/src/train_cmd.cpp +++ b/src/train_cmd.cpp @@ -1030,7 +1030,7 @@ static void AdvanceLookAheadPosition(Train *v) */ int32 Train::GetAtcMaxSpeed() const { - if (!(this->vehstatus & VS_CRASHED) && _settings_game.vehicle.train_speed_adaption && this->signal_speed_restriction != 0) { + if (!(this->vehstatus & VS_CRASHED) && this->signal_speed_restriction != 0) { return std::max(25, this->signal_speed_restriction); } @@ -1047,7 +1047,7 @@ Train::MaxSpeedInfo Train::GetCurrentMaxSpeedInfoInternal(bool update_state) con this->gcache.cached_max_track_speed : std::min(this->tcache.cached_max_curve_speed, this->gcache.cached_max_track_speed); - max_speed = std::min(max_speed, GetAtcMaxSpeed()); + if (_settings_game.vehicle.train_speed_adaption) max_speed = std::min(max_speed, GetAtcMaxSpeed()); if (this->current_order.IsType(OT_LOADING_ADVANCE)) max_speed = std::min(max_speed, 15); @@ -5592,7 +5592,7 @@ bool TrainController(Train *v, Vehicle *nomove, bool reverse) if (update_signals_crossing) { if (v->IsFrontEngine()) { - if (IsTileType(gp.old_tile, MP_RAILWAY) && HasSignals(gp.old_tile)) { + if (_settings_game.vehicle.train_speed_adaption && 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); const Track track = TrackdirToTrack(rev_trackdir); @@ -5658,16 +5658,18 @@ bool TrainController(Train *v, Vehicle *nomove, bool reverse) const Track track = TrackdirToTrack(rev_trackdir); if (HasSignalOnTrack(gp.old_tile, track)) { - SignalSpeedKey speed_key = { - speed_key.signal_tile = gp.old_tile, - speed_key.signal_track = track, - speed_key.last_passing_train_dir = v->GetVehicleTrackdir() - }; - SignalSpeedValue speed_value = { - speed_value.train_speed = v->First()->cur_speed, - speed_value.time_stamp = GetSpeedRestrictionTimeout(v->First()) - }; - _signal_speeds[speed_key] = speed_value; + if (_settings_game.vehicle.train_speed_adaption) { + SignalSpeedKey speed_key = { + speed_key.signal_tile = gp.old_tile, + speed_key.signal_track = track, + speed_key.last_passing_train_dir = v->GetVehicleTrackdir() + }; + SignalSpeedValue speed_value = { + speed_value.train_speed = v->First()->cur_speed, + speed_value.time_stamp = GetSpeedRestrictionTimeout(v->First()) + }; + _signal_speeds[speed_key] = speed_value; + } if (IsRestrictedSignal(gp.old_tile)) { const TraceRestrictProgram *prog = GetExistingTraceRestrictProgram(gp.old_tile, track);