changeset 17894:9b61a47d01d7 draft

(svn r22693) -Fix [FS#4691]: The override managers were not reset in some cases like creating a new scenario.
author frosch <frosch@openttd.org>
date Fri, 29 Jul 2011 22:23:17 +0000
parents 3d26e1561085
children 49e5d88c92d7
files src/misc.cpp src/newgrf.cpp src/newgrf.h src/openttd.cpp src/saveload/saveload.cpp
diffstat 5 files changed, 18 insertions(+), 18 deletions(-) [+]
line wrap: on
line diff
--- a/src/misc.cpp
+++ b/src/misc.cpp
@@ -14,6 +14,7 @@
 #include "news_func.h"
 #include "ai/ai.hpp"
 #include "ai/ai_gui.hpp"
+#include "newgrf.h"
 #include "newgrf_house.h"
 #include "group.h"
 #include "economy_func.h"
@@ -70,6 +71,8 @@
 
 	PoolBase::Clean(PT_NORMAL);
 
+	ResetPersistentNewGRFData();
+
 	InitializeSound();
 	InitializeMusic();
 
--- a/src/newgrf.cpp
+++ b/src/newgrf.cpp
@@ -7432,6 +7432,20 @@
 	_spritegroup_pool.CleanPool();
 }
 
+/**
+ * Reset NewGRF data which is stored persistently in savegames.
+ */
+void ResetPersistentNewGRFData()
+{
+	/* Reset override managers */
+	_engine_mngr.ResetToDefaultMapping();
+	_house_mngr.ResetMapping();
+	_industry_mngr.ResetMapping();
+	_industile_mngr.ResetMapping();
+	_airport_mngr.ResetMapping();
+	_airporttile_mngr.ResetMapping();
+}
+
 static void BuildCargoTranslationMap()
 {
 	memset(_cur_grffile->cargo_map, 0xFF, sizeof(_cur_grffile->cargo_map));
--- a/src/newgrf.h
+++ b/src/newgrf.h
@@ -162,6 +162,7 @@
 void LoadNewGRF(uint load_index, uint file_index);
 void ReloadNewGRFData(); // in saveload/afterload.cpp
 void ResetNewGRFData();
+void ResetPersistentNewGRFData();
 
 void CDECL grfmsg(int severity, const char *str, ...) WARN_FORMAT(2, 3);
 
--- a/src/openttd.cpp
+++ b/src/openttd.cpp
@@ -231,17 +231,6 @@
 	res->height = max(strtoul(t + 1, NULL, 0), 64UL);
 }
 
-static void InitializeDynamicVariables()
-{
-	/* Dynamic stuff needs to be initialized somewhere... */
-	_engine_mngr.ResetToDefaultMapping();
-	_house_mngr.ResetMapping();
-	_industry_mngr.ResetMapping();
-	_industile_mngr.ResetMapping();
-	_airport_mngr.ResetMapping();
-	_airporttile_mngr.ResetMapping();
-}
-
 
 /**
  * Unitializes drivers, frees allocated memory, cleans pools, ...
@@ -553,9 +542,6 @@
 	/* initialize screenshot formats */
 	InitializeScreenshotFormats();
 
-	/* initialize all variables that are allocated dynamically */
-	InitializeDynamicVariables();
-
 	/* Initialize FreeType */
 	InitFreeType();
 
@@ -780,7 +766,6 @@
 	_game_mode = GM_NORMAL;
 
 	ResetGRFConfig(true);
-	InitializeDynamicVariables();
 
 	GenerateWorldSetCallback(&MakeNewGameDone);
 	GenerateWorld(from_heightmap ? GWM_HEIGHTMAP : GWM_NEWGAME, 1 << _settings_game.game_creation.map_x, 1 << _settings_game.game_creation.map_y, reset_settings);
--- a/src/saveload/saveload.cpp
+++ b/src/saveload/saveload.cpp
@@ -2557,8 +2557,6 @@
 	_next_offs = 0;
 
 	if (!load_check) {
-		_engine_mngr.ResetToDefaultMapping();
-
 		/* Old maps were hardcoded to 256x256 and thus did not contain
 		 * any mapsize information. Pre-initialize to 256x256 to not to
 		 * confuse old games */
@@ -2662,7 +2660,6 @@
 
 	/* Load a TTDLX or TTDPatch game */
 	if (mode == SL_OLD_LOAD) {
-		_engine_mngr.ResetToDefaultMapping();
 		InitializeGame(256, 256, true, true); // set a mapsize of 256x256 for TTDPatch games or it might get confused
 
 		/* TTD/TTO savegames have no NewGRFs, TTDP savegame have them