Browse Source

🐛 Correctly wipe temp data from saves

Fixes #3167
pull/3289/head
Anders Jenbo 5 years ago
parent
commit
b77686213a
  1. 1
      Source/diablo.cpp
  2. 3
      Source/loadsave.cpp
  3. 3
      Source/pfile.cpp
  4. 1
      test/writehero_test.cpp

1
Source/diablo.cpp

@ -1549,6 +1549,7 @@ bool StartGame(bool bNewGame, bool bSinglePlayer)
InitPortals();
InitDungMsgs(Players[MyPlayerId]);
}
giNumberOfLevels = gbIsHellfire ? 25 : 17;
interface_mode uMsg = WM_DIABNEWGAME;
if (gbValidSaveFile && gbLoadGame) {
uMsg = WM_DIABLOADGAME;

3
Source/loadsave.cpp

@ -1673,7 +1673,6 @@ void RemoveEmptyInventory(Player &player)
void LoadGame(bool firstflag)
{
FreeGameMem();
pfile_remove_temp_files();
LoadHelper file("game");
if (!file.IsValid())
@ -1693,6 +1692,8 @@ void LoadGame(bool firstflag)
giNumberOfSmithPremiumItems = 6;
}
pfile_remove_temp_files();
setlevel = file.NextBool8();
setlvlnum = static_cast<_setlevels>(file.NextBE<uint32_t>());
currlevel = file.NextBE<uint32_t>();

3
Source/pfile.cpp

@ -347,6 +347,9 @@ bool pfile_ui_save_create(_uiheroinfo *heroinfo)
if (!OpenArchive(saveNum))
return false;
heroinfo->saveNumber = saveNum;
giNumberOfLevels = gbIsHellfire ? 25 : 17;
mpqapi_remove_hash_entries(GetFileName);
strncpy(hero_names[saveNum], heroinfo->name, PLR_NAME_LEN);
hero_names[saveNum][PLR_NAME_LEN - 1] = '\0';

1
test/writehero_test.cpp

@ -331,6 +331,7 @@ TEST(Writehero, pfile_write_hero)
gbIsMultiplayer = true;
gbIsHellfireSaveGame = false;
leveltype = DTYPE_TOWN;
giNumberOfLevels = 17;
MyPlayerId = 0;
MyPlayer = &Players[MyPlayerId];

Loading…
Cancel
Save