diff --git a/src/cheat_gui.cpp b/src/cheat_gui.cpp index be931e6c1a..19914da905 100644 --- a/src/cheat_gui.cpp +++ b/src/cheat_gui.cpp @@ -98,22 +98,27 @@ extern void EnginesMonthlyLoop(); /** * Handle changing of the current year. - * @param new_value Unused. + * @param new_value The chosen year to change to. * @param change_direction +1 (increase) or -1 (decrease). * @return New year. */ static int32 ClickChangeDateCheat(int32 new_value, int32 change_direction) { - YearMonthDay ymd; - ConvertDateToYMD(_date, &ymd); - + /* Don't allow changing to an invalid year, or the current year. */ new_value = Clamp(new_value, MIN_YEAR, MAX_YEAR); if (new_value == _cur_year) return _cur_year; + YearMonthDay ymd; + ConvertDateToYMD(_date, &ymd); Date new_date = ConvertYMDToDate(new_value, ymd.month, ymd.day); + + /* Change the date. */ + SetDate(new_date, _date_fract); + + /* Shift cached dates. */ for (auto v : Vehicle::Iterate()) v->ShiftDates(new_date - _date); LinkGraphSchedule::instance.ShiftDates(new_date - _date); - SetDate(new_date, _date_fract); + EnginesMonthlyLoop(); SetWindowDirty(WC_STATUS_BAR, 0); InvalidateWindowClassesData(WC_BUILD_STATION, 0);