Adjust signal speed restriction timeouts when date or day length changed

This commit is contained in:
Jonathan G Rennison
2021-06-27 23:07:32 +01:00
parent e16c29ef7d
commit 5fb3eb0bb9
3 changed files with 15 additions and 0 deletions

View File

@@ -1793,7 +1793,12 @@ static bool ImprovedBreakdownsSettingChanged(int32 p1)
static bool DayLengthChanged(int32 p1) static bool DayLengthChanged(int32 p1)
{ {
const DateTicksScaled old_scaled_date_ticks = _scaled_date_ticks;
SetScaledTickVariables(); SetScaledTickVariables();
extern void AdjustAllSignalSpeedRestrictionTickValues(DateTicksScaled delta);
AdjustAllSignalSpeedRestrictionTickValues(_scaled_date_ticks - old_scaled_date_ticks);
MarkWholeScreenDirty(); MarkWholeScreenDirty();
return true; return true;
} }

View File

@@ -122,6 +122,13 @@ void ClearAllSignalSpeedRestrictions()
_signal_speeds.clear(); _signal_speeds.clear();
} }
void AdjustAllSignalSpeedRestrictionTickValues(DateTicksScaled delta)
{
for (auto &it : _signal_speeds) {
it.second.time_stamp += delta;
}
}
/** Removes all speed restrictions which have passed their timeout from all signals */ /** Removes all speed restrictions which have passed their timeout from all signals */
void ClearOutOfDateSignalSpeedRestrictions() void ClearOutOfDateSignalSpeedRestrictions()
{ {

View File

@@ -4310,4 +4310,7 @@ void ShiftVehicleDates(int interval)
for (Vehicle *v : Vehicle::Iterate()) { for (Vehicle *v : Vehicle::Iterate()) {
v->date_of_last_service += interval; v->date_of_last_service += interval;
} }
extern void AdjustAllSignalSpeedRestrictionTickValues(DateTicksScaled delta);
AdjustAllSignalSpeedRestrictionTickValues(interval * DAY_TICKS * _settings_game.economy.day_length_factor);
} }