diff --git a/Source/loadsave.cpp b/Source/loadsave.cpp index de0494e9c11..55001c5786a 100644 --- a/Source/loadsave.cpp +++ b/Source/loadsave.cpp @@ -1759,6 +1759,33 @@ void LoadAdditionalMissiles() } } +void SaveLevelSeeds(SaveWriter &saveWriter) +{ + SaveHelper file(saveWriter, "levelseeds", giNumberOfLevels * (sizeof(uint8_t) + sizeof(uint32_t))); + + for (int i = 0; i < giNumberOfLevels; i++) { + file.WriteLE(LevelSeeds[i] ? 1 : 0); + if (LevelSeeds[i]) { + file.WriteLE(*LevelSeeds[i]); + } + } +} + +void LoadLevelSeeds() +{ + LoadHelper file(OpenSaveArchive(gSaveNumber), "levelseeds"); + if (!file.IsValid()) + return; + + for (int i = 0; i < giNumberOfLevels; i++) { + if (file.NextLE() != 0) { + LevelSeeds[i] = file.NextLE(); + } else { + LevelSeeds[i] = std::nullopt; + } + } +} + const int DiabloItemSaveSize = 368; const int HellfireItemSaveSize = 372; @@ -2027,21 +2054,6 @@ void SaveHotkeys(SaveWriter &saveWriter, const Player &player) file.WriteLE(static_cast(player._pRSplType)); } -void LoadLevelSeeds() -{ - LoadHelper file(OpenSaveArchive(gSaveNumber), "levelseeds"); - if (!file.IsValid()) - return; - - for (int i = 0; i < giNumberOfLevels; i++) { - if (file.NextLE() != 0) { - LevelSeeds[i] = file.NextLE(); - } else { - LevelSeeds[i] = std::nullopt; - } - } -} - void LoadHeroItems(Player &player) { LoadHelper file(OpenSaveArchive(gSaveNumber), "heroitems"); @@ -2155,6 +2167,7 @@ void LoadGame(bool firstflag) LevelSeeds[i] = std::nullopt; file.Skip(4); // Skip loading gnLevelTypeTbl } + LoadLevelSeeds(); Player &myPlayer = *MyPlayer; @@ -2320,18 +2333,6 @@ void LoadGame(bool firstflag) gbIsHellfireSaveGame = gbIsHellfire; } -void SaveLevelSeeds(SaveWriter &saveWriter) -{ - SaveHelper file(saveWriter, "levelseeds", giNumberOfLevels * (sizeof(uint8_t) + sizeof(uint32_t))); - - for (int i = 0; i < giNumberOfLevels; i++) { - file.WriteLE(LevelSeeds[i] ? 1 : 0); - if (LevelSeeds[i]) { - file.WriteLE(*LevelSeeds[i]); - } - } -} - void SaveHeroItems(SaveWriter &saveWriter, Player &player) { size_t itemCount = static_cast(NUM_INVLOC) + InventoryGridCells + MaxBeltItems; @@ -2566,6 +2567,7 @@ void SaveGameData(SaveWriter &saveWriter) file.WriteBE(AutoMapScale); SaveAdditionalMissiles(saveWriter); + SaveLevelSeeds(saveWriter); } void SaveGame()