diff --git a/Source/loadsave.cpp b/Source/loadsave.cpp index df3114686..e9cf45299 100644 --- a/Source/loadsave.cpp +++ b/Source/loadsave.cpp @@ -360,8 +360,10 @@ void LoadPlayer(LoadHelper &file, Player &player) player._pScrlSpells = file.NextLE(); player._pSpellFlags = file.NextLE(); file.Skip(3); // Alignment + for (auto &spell : player._pSplHotKey) spell = static_cast(file.NextLE()); + for (auto &spellType : player._pSplTHotKey) spellType = static_cast(file.NextLE()); @@ -418,8 +420,10 @@ void LoadPlayer(LoadHelper &file, Player &player) player.position.offset2.deltaX = file.NextLE(); player.position.offset2.deltaY = file.NextLE(); file.Skip(4); // Skip actionFrame + for (uint8_t i = 0; i < giNumberOfLevels; i++) player._pLvlVisited[i] = file.NextBool8(); + for (uint8_t i = 0; i < giNumberOfLevels; i++) player._pSLvlVisited[i] = file.NextBool8(); @@ -453,13 +457,18 @@ void LoadPlayer(LoadHelper &file, Player &player) for (Item &item : player.InvBody) LoadItemData(file, item); + for (Item &item : player.InvList) LoadItemData(file, item); + player._pNumInv = file.NextLE(); + for (int8_t &cell : player.InvGrid) cell = file.NextLE(); + for (Item &item : player.SpdList) LoadItemData(file, item); + LoadItemData(file, player.HoldItem); player._pIMinDam = file.NextLE(); @@ -1016,16 +1025,20 @@ void SavePlayer(SaveHelper &file, const Player &player) file.Skip(3); // Alignment file.WriteLE(player._pSBkSpell); file.Skip(); // Skip _pSBkSplType + for (int8_t spellLevel : player._pSplLvl) file.WriteLE(spellLevel); + file.Skip(7); // Alignment file.WriteLE(player._pMemSpells); file.WriteLE(player._pAblSpells); file.WriteLE(player._pScrlSpells); file.WriteLE(player._pSpellFlags); file.Skip(3); // Alignment + for (auto &spellId : player._pSplHotKey) file.WriteLE(spellId); + for (auto &spellType : player._pSplTHotKey) file.WriteLE(spellType); @@ -1117,13 +1130,18 @@ void SavePlayer(SaveHelper &file, const Player &player) for (const Item &item : player.InvBody) SaveItem(file, item); + for (const Item &item : player.InvList) SaveItem(file, item); + file.WriteLE(player._pNumInv); + for (int8_t cell : player.InvGrid) file.WriteLE(cell); + for (const Item &item : player.SpdList) SaveItem(file, item); + SaveItem(file, player.HoldItem); file.WriteLE(player._pIMinDam);