summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/industry.h4
-rw-r--r--src/industry_cmd.cpp19
-rw-r--r--src/saveload/afterload.cpp3
-rw-r--r--src/saveload/saveload.cpp3
4 files changed, 27 insertions, 2 deletions
diff --git a/src/industry.h b/src/industry.h
index c65c65b48..16b3dc8f4 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 df240f0b6..cc00755eb 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 9d9540368..6c6458940 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 bcbbcb71d..ba7819a55 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