summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfrosch <frosch@openttd.org>2011-07-29 22:23:17 +0000
committerfrosch <frosch@openttd.org>2011-07-29 22:23:17 +0000
commitc9e920f1ebbeffb44ea44a240ad93ea246b14d7f (patch)
tree2d22f1ebdf356ee4284667d22d1416527cd7084b
parent793ec45a7370a9e066968b24489f1d20ee5dd330 (diff)
downloadopenttd-c9e920f1ebbeffb44ea44a240ad93ea246b14d7f.tar.xz
(svn r22693) -Fix [FS#4691]: The override managers were not reset in some cases like creating a new scenario.
-rw-r--r--src/misc.cpp3
-rw-r--r--src/newgrf.cpp14
-rw-r--r--src/newgrf.h1
-rw-r--r--src/openttd.cpp15
-rw-r--r--src/saveload/saveload.cpp3
5 files changed, 18 insertions, 18 deletions
diff --git a/src/misc.cpp b/src/misc.cpp
index 09ace072d..93908cffc 100644
--- 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 @@ void InitializeGame(uint size_x, uint size_y, bool reset_date, bool reset_settin
PoolBase::Clean(PT_NORMAL);
+ ResetPersistentNewGRFData();
+
InitializeSound();
InitializeMusic();
diff --git a/src/newgrf.cpp b/src/newgrf.cpp
index f902ce601..86d2da2a6 100644
--- a/src/newgrf.cpp
+++ b/src/newgrf.cpp
@@ -7432,6 +7432,20 @@ void ResetNewGRFData()
_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));
diff --git a/src/newgrf.h b/src/newgrf.h
index 38567079e..9e9fbc9da 100644
--- a/src/newgrf.h
+++ b/src/newgrf.h
@@ -162,6 +162,7 @@ void LoadNewGRFFile(struct GRFConfig *config, uint file_index, GrfLoadingStage s
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);
diff --git a/src/openttd.cpp b/src/openttd.cpp
index 6cf40ffba..a5fde97e9 100644
--- a/src/openttd.cpp
+++ b/src/openttd.cpp
@@ -231,17 +231,6 @@ static void ParseResolution(Dimension *res, const char *s)
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 @@ int ttd_main(int argc, char *argv[])
/* initialize screenshot formats */
InitializeScreenshotFormats();
- /* initialize all variables that are allocated dynamically */
- InitializeDynamicVariables();
-
/* Initialize FreeType */
InitFreeType();
@@ -780,7 +766,6 @@ static void MakeNewGame(bool from_heightmap, bool reset_settings)
_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);
diff --git a/src/saveload/saveload.cpp b/src/saveload/saveload.cpp
index 4dac04384..486d1d8e5 100644
--- a/src/saveload/saveload.cpp
+++ b/src/saveload/saveload.cpp
@@ -2557,8 +2557,6 @@ static SaveOrLoadResult DoLoad(LoadFilter *reader, bool load_check)
_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 @@ SaveOrLoadResult SaveOrLoad(const char *filename, int mode, Subdirectory sb, boo
/* 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