Mercurial > hg > openttd
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