summaryrefslogtreecommitdiff
path: root/src/toolbar_gui.cpp
diff options
context:
space:
mode:
authorfonsinchen <fonsinchen@openttd.org>2013-10-15 17:32:31 +0000
committerfonsinchen <fonsinchen@openttd.org>2013-10-15 17:32:31 +0000
commit5ab204c8a170e692835e126daa00987c5f0217b6 (patch)
treecbbdbd9b6e60f264650e2745da17278ae173eedd /src/toolbar_gui.cpp
parenta6fe1f2f63c51379dfae0cf947bc9e1adc7800a8 (diff)
downloadopenttd-5ab204c8a170e692835e126daa00987c5f0217b6.tar.xz
(svn r25867) -Fix [FS#5764]: Shift dates on link graphs when using scenario editor date tool.
Diffstat (limited to 'src/toolbar_gui.cpp')
-rw-r--r--src/toolbar_gui.cpp22
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();
}