diff options
author | frosch <frosch@openttd.org> | 2011-07-29 22:23:17 +0000 |
---|---|---|
committer | frosch <frosch@openttd.org> | 2011-07-29 22:23:17 +0000 |
commit | c9e920f1ebbeffb44ea44a240ad93ea246b14d7f (patch) | |
tree | 2d22f1ebdf356ee4284667d22d1416527cd7084b | |
parent | 793ec45a7370a9e066968b24489f1d20ee5dd330 (diff) | |
download | openttd-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.cpp | 3 | ||||
-rw-r--r-- | src/newgrf.cpp | 14 | ||||
-rw-r--r-- | src/newgrf.h | 1 | ||||
-rw-r--r-- | src/openttd.cpp | 15 | ||||
-rw-r--r-- | src/saveload/saveload.cpp | 3 |
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 |