changeset 15907:33fed3e36d65 draft

(svn r20591) -Codechange: make sure _date_fract is set when SetDate is called. Some places wouldn't reset _date_fract correctly at all
author rubidium <rubidium@openttd.org>
date Sun, 22 Aug 2010 09:18:01 +0000
parents 6fe686bcda0c
children 434567b681a8
files src/cheat_gui.cpp src/date.cpp src/date_func.h src/genworld.cpp src/misc.cpp src/saveload/afterload.cpp src/toolbar_gui.cpp
diffstat 7 files changed, 16 insertions(+), 18 deletions(-) [+]
line wrap: on
line diff
--- a/src/cheat_gui.cpp
+++ b/src/cheat_gui.cpp
@@ -101,7 +101,7 @@
 
 	if ((ymd.year == MIN_YEAR && p2 == -1) || (ymd.year == MAX_YEAR && p2 == 1)) return _cur_year;
 
-	SetDate(ConvertYMDToDate(_cur_year + p2, ymd.month, ymd.day));
+	SetDate(ConvertYMDToDate(_cur_year + p2, ymd.month, ymd.day), _date_fract);
 	EnginesMonthlyLoop();
 	SetWindowDirty(WC_STATUS_BAR, 0);
 	InvalidateWindowClassesData(WC_BUILD_STATION, 0);
--- a/src/date.cpp
+++ b/src/date.cpp
@@ -29,13 +29,15 @@
 
 /**
  * Set the date.
- * @param date New date
+ * @param date  New date
+ * @param fract The number of ticks that have passed on this date.
  */
-void SetDate(Date date)
+void SetDate(Date date, DateFract fract)
 {
 	YearMonthDay ymd;
 
 	_date = date;
+	_date_fract = fract;
 	ConvertDateToYMD(date, &ymd);
 	_cur_year = ymd.year;
 	_cur_month = ymd.month;
--- a/src/date_func.h
+++ b/src/date_func.h
@@ -20,7 +20,7 @@
 extern DateFract _date_fract;
 extern uint16 _tick_counter;
 
-void SetDate(Date date);
+void SetDate(Date date, DateFract fract);
 void ConvertDateToYMD(Date date, YearMonthDay *ymd);
 Date ConvertYMDToDate(Year year, Month month, Day day);
 
--- a/src/genworld.cpp
+++ b/src/genworld.cpp
@@ -296,13 +296,10 @@
 	/* This disables some commands and stuff */
 	SetLocalCompany(COMPANY_SPECTATOR);
 
-	/* Set the date before loading sprites as some newgrfs check it */
-	SetDate(ConvertYMDToDate(_settings_game.game_creation.starting_year, 0, 1));
-
-	InitializeGame(_gw.size_x, _gw.size_y, false, reset_settings);
+	InitializeGame(_gw.size_x, _gw.size_y, true, reset_settings);
 	PrepareGenerateWorldProgress();
 
-	/* Load the right landscape stuff */
+	/* Load the right landscape stuff, and the NewGRFs! */
 	GfxLoadSprites();
 	LoadStringWidthTable();
 
--- a/src/misc.cpp
+++ b/src/misc.cpp
@@ -67,19 +67,18 @@
 	_pause_mode = PM_UNPAUSED;
 	_fast_forward = 0;
 	_tick_counter = 0;
-	_date_fract = 0;
 	_cur_tileloop_tile = 0;
 	_thd.redsq = INVALID_TILE;
 	if (reset_settings) MakeNewgameSettingsLive();
 
+	if (reset_date) {
+		SetDate(ConvertYMDToDate(_settings_game.game_creation.starting_year, 0, 1), 0);
+		InitializeOldNames();
+	}
+
 	InitializeSound();
 	InitializeMusic();
 
-	if (reset_date) {
-		SetDate(ConvertYMDToDate(_settings_game.game_creation.starting_year, 0, 1));
-		InitializeOldNames();
-	}
-
 	InitializeEngineRenews();
 	InitializeVehicles();
 	InitializeDepots();
--- a/src/saveload/afterload.cpp
+++ b/src/saveload/afterload.cpp
@@ -571,7 +571,7 @@
 
 	/* Update current year
 	 * must be done before loading sprites as some newgrfs check it */
-	SetDate(_date);
+	SetDate(_date, _date_fract);
 
 	/* Force dynamic engines off when loading older savegames */
 	if (CheckSavegameVersion(95)) _settings_game.vehicle.dynamic_engines = 0;
--- a/src/toolbar_gui.cpp
+++ b/src/toolbar_gui.cpp
@@ -825,7 +825,7 @@
 		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));
+		SetDate(ConvertYMDToDate(_settings_game.game_creation.starting_year, 0, 1), 0);
 	}
 	_left_button_clicked = false;
 }
@@ -838,7 +838,7 @@
 		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));
+		SetDate(ConvertYMDToDate(_settings_game.game_creation.starting_year, 0, 1), 0);
 	}
 	_left_button_clicked = false;
 }