Avoid train speed adaption overhead when setting not enabled
This commit is contained in:
@@ -1030,7 +1030,7 @@ static void AdvanceLookAheadPosition(Train *v)
|
|||||||
*/
|
*/
|
||||||
int32 Train::GetAtcMaxSpeed() const
|
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<int32>(25, this->signal_speed_restriction);
|
return std::max<int32>(25, this->signal_speed_restriction);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1047,7 +1047,7 @@ Train::MaxSpeedInfo Train::GetCurrentMaxSpeedInfoInternal(bool update_state) con
|
|||||||
this->gcache.cached_max_track_speed :
|
this->gcache.cached_max_track_speed :
|
||||||
std::min<int>(this->tcache.cached_max_curve_speed, this->gcache.cached_max_track_speed);
|
std::min<int>(this->tcache.cached_max_curve_speed, this->gcache.cached_max_track_speed);
|
||||||
|
|
||||||
max_speed = std::min<int>(max_speed, GetAtcMaxSpeed());
|
if (_settings_game.vehicle.train_speed_adaption) max_speed = std::min<int>(max_speed, GetAtcMaxSpeed());
|
||||||
|
|
||||||
if (this->current_order.IsType(OT_LOADING_ADVANCE)) max_speed = std::min(max_speed, 15);
|
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 (update_signals_crossing) {
|
||||||
|
|
||||||
if (v->IsFrontEngine()) {
|
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 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);
|
||||||
const Track track = TrackdirToTrack(rev_trackdir);
|
const Track track = TrackdirToTrack(rev_trackdir);
|
||||||
@@ -5658,16 +5658,18 @@ bool TrainController(Train *v, Vehicle *nomove, bool reverse)
|
|||||||
const Track track = TrackdirToTrack(rev_trackdir);
|
const Track track = TrackdirToTrack(rev_trackdir);
|
||||||
|
|
||||||
if (HasSignalOnTrack(gp.old_tile, track)) {
|
if (HasSignalOnTrack(gp.old_tile, track)) {
|
||||||
SignalSpeedKey speed_key = {
|
if (_settings_game.vehicle.train_speed_adaption) {
|
||||||
speed_key.signal_tile = gp.old_tile,
|
SignalSpeedKey speed_key = {
|
||||||
speed_key.signal_track = track,
|
speed_key.signal_tile = gp.old_tile,
|
||||||
speed_key.last_passing_train_dir = v->GetVehicleTrackdir()
|
speed_key.signal_track = track,
|
||||||
};
|
speed_key.last_passing_train_dir = v->GetVehicleTrackdir()
|
||||||
SignalSpeedValue speed_value = {
|
};
|
||||||
speed_value.train_speed = v->First()->cur_speed,
|
SignalSpeedValue speed_value = {
|
||||||
speed_value.time_stamp = GetSpeedRestrictionTimeout(v->First())
|
speed_value.train_speed = v->First()->cur_speed,
|
||||||
};
|
speed_value.time_stamp = GetSpeedRestrictionTimeout(v->First())
|
||||||
_signal_speeds[speed_key] = speed_value;
|
};
|
||||||
|
_signal_speeds[speed_key] = speed_value;
|
||||||
|
}
|
||||||
|
|
||||||
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);
|
||||||
|
Reference in New Issue
Block a user