diff --git a/src/industry.h b/src/industry.h index c65c65b48e..16b3dc8f43 100644 --- a/src/industry.h +++ b/src/industry.h @@ -151,6 +151,8 @@ struct IndustryTypeBuildData { uint16 max_wait; ///< Starting number of turns to wait (copied to #wait_count). uint16 wait_count; ///< Number of turns to wait before trying to build again. + void Reset(); + void GetIndustryTypeData(IndustryType it); }; @@ -161,6 +163,8 @@ struct IndustryBuildData { IndustryTypeBuildData builddata[NUM_INDUSTRYTYPES]; ///< Industry build data for every industry type. uint32 wanted_inds; ///< Number of wanted industries (bits 31-16), and a fraction (bits 15-0). + void Reset(); + void SetupTargetCount(); void TryBuildNewIndustry(); }; diff --git a/src/industry_cmd.cpp b/src/industry_cmd.cpp index df240f0b6b..cc00755eba 100644 --- a/src/industry_cmd.cpp +++ b/src/industry_cmd.cpp @@ -1955,6 +1955,22 @@ static void PlaceInitialIndustry(IndustryType type, bool try_hard) cur_company.Restore(); } + +/** Reset the entry. */ +void IndustryTypeBuildData::Reset() +{ + this->probability = 0; + this->target_count = 0; +} + +/** Completely reset the industry build data. */ +void IndustryBuildData::Reset() +{ + for (IndustryType it = 0; it < NUM_INDUSTRYTYPES; it++) { + this->builddata[it].Reset(); + } +} + /** * This function will create random industries during game creation. * It will scale the amount of industries by mapsize and difficulty level. @@ -2005,6 +2021,7 @@ void GenerateIndustries() assert(industry_probs[it] > 0); PlaceInitialIndustry(it, false); } + _industry_builder.Reset(); } /** @@ -2541,6 +2558,8 @@ void InitializeIndustries() Industry::ResetIndustryCounts(); _industry_sound_tile = 0; + + _industry_builder.Reset(); } bool IndustrySpec::IsRawIndustry() const diff --git a/src/saveload/afterload.cpp b/src/saveload/afterload.cpp index 9d95403682..6c6458940b 100644 --- a/src/saveload/afterload.cpp +++ b/src/saveload/afterload.cpp @@ -2319,8 +2319,9 @@ bool AfterLoadGame() } } - if (CheckSavegameVersion(152)) { + _industry_builder.Reset(); // Initialize industry build data. + /* The moment vehicles go from hidden to visible changed. This means * that vehicles don't always get visible anymore causing things to * get messed up just after loading the savegame. This fixes that. */ diff --git a/src/saveload/saveload.cpp b/src/saveload/saveload.cpp index bcbbcb71d0..ba7819a55b 100644 --- a/src/saveload/saveload.cpp +++ b/src/saveload/saveload.cpp @@ -214,8 +214,9 @@ * 149 20832 * 150 20857 * 151 20918 + * 152 21171 */ -extern const uint16 SAVEGAME_VERSION = 151; ///< current savegame version of OpenTTD +extern const uint16 SAVEGAME_VERSION = 152; ///< Current savegame version of OpenTTD. SavegameType _savegame_type; ///< type of savegame we are loading