diff options
Diffstat (limited to 'src/toolbar_gui.cpp')
-rw-r--r-- | src/toolbar_gui.cpp | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/src/toolbar_gui.cpp b/src/toolbar_gui.cpp index b5eb7efb9..767811c35 100644 --- a/src/toolbar_gui.cpp +++ b/src/toolbar_gui.cpp @@ -1111,6 +1111,19 @@ void ToggleDirtyBlocks() } /** + * Set the starting year for a scenario. + * @param year New starting year. + */ +void SetStartingYear(Year year) +{ + _settings_game.game_creation.starting_year = Clamp(year, MIN_YEAR, MAX_YEAR); + Date new_date = ConvertYMDToDate(_settings_game.game_creation.starting_year, 0, 1); + /* If you open a savegame as scenario there may already be link graphs.*/ + LinkGraphSchedule::Instance()->ShiftDates(new_date - _date); + SetDate(new_date, 0); +} + +/** * Choose the proper callback function for the main toolbar's help menu. * @param index The menu index which was selected. * @return CBF_NONE @@ -1169,8 +1182,7 @@ static CallBackFunction ToolbarScenDateBackward(Window *w) w->HandleButtonClick(WID_TE_DATE_BACKWARD); w->SetDirty(); - _settings_game.game_creation.starting_year = Clamp(_settings_game.game_creation.starting_year - 1, MIN_YEAR, MAX_YEAR); - SetDate(ConvertYMDToDate(_settings_game.game_creation.starting_year, 0, 1), 0); + SetStartingYear(_settings_game.game_creation.starting_year - 1); } _left_button_clicked = false; return CBF_NONE; @@ -1183,8 +1195,7 @@ static CallBackFunction ToolbarScenDateForward(Window *w) w->HandleButtonClick(WID_TE_DATE_FORWARD); w->SetDirty(); - _settings_game.game_creation.starting_year = Clamp(_settings_game.game_creation.starting_year + 1, MIN_YEAR, MAX_YEAR); - SetDate(ConvertYMDToDate(_settings_game.game_creation.starting_year, 0, 1), 0); + SetStartingYear(_settings_game.game_creation.starting_year + 1); } _left_button_clicked = false; return CBF_NONE; @@ -2119,8 +2130,7 @@ struct ScenarioEditorToolbarWindow : Window { /* An empty string means revert to the default */ value = DEF_START_YEAR; } - _settings_game.game_creation.starting_year = Clamp(value, MIN_YEAR, MAX_YEAR); - SetDate(ConvertYMDToDate(_settings_game.game_creation.starting_year, 0, 1), 0); + SetStartingYear(value); this->SetDirty(); } |