summaryrefslogtreecommitdiff
path: root/src/saveload/industry_sl.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/saveload/industry_sl.cpp')
-rw-r--r--src/saveload/industry_sl.cpp23
1 files changed, 16 insertions, 7 deletions
diff --git a/src/saveload/industry_sl.cpp b/src/saveload/industry_sl.cpp
index c75674069..1043023b1 100644
--- a/src/saveload/industry_sl.cpp
+++ b/src/saveload/industry_sl.cpp
@@ -139,12 +139,21 @@ static const SaveLoad _industry_builder_desc[] = {
SLEG_VAR(_industry_builder.wanted_inds, SLE_UINT32),
};
-/** Load/save industry builder. */
-static void LoadSave_IBLD()
+/** Save industry builder. */
+static void Save_IBLD()
{
+ SlSetArrayIndex(0);
SlGlobList(_industry_builder_desc);
}
+/** Load industry builder. */
+static void Load_IBLD()
+{
+ if (!IsSavegameVersionBefore(SLV_RIFF_TO_ARRAY) && SlIterateArray() == -1) return;
+ SlGlobList(_industry_builder_desc);
+ if (!IsSavegameVersionBefore(SLV_RIFF_TO_ARRAY) && SlIterateArray() != -1) SlErrorCorrupt("Too many IBLD entries");
+}
+
/** Description of the data to save and load in #IndustryTypeBuildData. */
static const SaveLoad _industrytype_builder_desc[] = {
SLE_VAR(IndustryTypeBuildData, probability, SLE_UINT32),
@@ -177,11 +186,11 @@ static void Load_ITBL()
}
static const ChunkHandler industry_chunk_handlers[] = {
- { 'INDY', Save_INDY, Load_INDY, Ptrs_INDY, nullptr, CH_ARRAY },
- { 'IIDS', Save_IIDS, Load_IIDS, nullptr, nullptr, CH_ARRAY },
- { 'TIDS', Save_TIDS, Load_TIDS, nullptr, nullptr, CH_ARRAY },
- { 'IBLD', LoadSave_IBLD, LoadSave_IBLD, nullptr, nullptr, CH_RIFF },
- { 'ITBL', Save_ITBL, Load_ITBL, nullptr, nullptr, CH_ARRAY },
+ { 'INDY', Save_INDY, Load_INDY, Ptrs_INDY, nullptr, CH_ARRAY },
+ { 'IIDS', Save_IIDS, Load_IIDS, nullptr, nullptr, CH_ARRAY },
+ { 'TIDS', Save_TIDS, Load_TIDS, nullptr, nullptr, CH_ARRAY },
+ { 'IBLD', Save_IBLD, Load_IBLD, nullptr, nullptr, CH_ARRAY },
+ { 'ITBL', Save_ITBL, Load_ITBL, nullptr, nullptr, CH_ARRAY },
};
extern const ChunkHandlerTable _industry_chunk_handlers(industry_chunk_handlers);