From 8fa0612433fc097ef51334050977cf1ebb9fd6c8 Mon Sep 17 00:00:00 2001 From: Anders Jenbo Date: Fri, 23 Apr 2021 04:50:46 +0200 Subject: [PATCH] :bug: Fix loading chosen hero --- Source/mainmenu.cpp | 2 ++ Source/multi.cpp | 3 ++- Source/pfile.cpp | 12 ++++++------ Source/pfile.h | 2 +- 4 files changed, 11 insertions(+), 8 deletions(-) diff --git a/Source/mainmenu.cpp b/Source/mainmenu.cpp index 94bdad629..04c459a7a 100644 --- a/Source/mainmenu.cpp +++ b/Source/mainmenu.cpp @@ -103,6 +103,8 @@ bool mainmenu_select_hero_dialog(GameData *gameData) return false; } + pfile_read_player_from_save(gszHero, myplr); + return true; } diff --git a/Source/multi.cpp b/Source/multi.cpp index 290f8e3b5..2cd9abf07 100644 --- a/Source/multi.cpp +++ b/Source/multi.cpp @@ -10,6 +10,7 @@ #include "DiabloUI/diabloui.h" #include "diablo.h" #include "dthread.h" +#include "mainmenu.h" #include "nthread.h" #include "options.h" #include "pfile.h" @@ -827,7 +828,7 @@ bool multi_init_multi(GameData *gameData) myplr = playerId; gbIsMultiplayer = true; - pfile_read_player_from_save(); + pfile_read_player_from_save(gszHero, myplr); return true; } diff --git a/Source/pfile.cpp b/Source/pfile.cpp index ddb39cd82..2be53f589 100644 --- a/Source/pfile.cpp +++ b/Source/pfile.cpp @@ -385,13 +385,13 @@ bool pfile_delete_save(_uiheroinfo *hero_info) return true; } -void pfile_read_player_from_save() +void pfile_read_player_from_save(char name[16], int playerId) { HANDLE archive; DWORD save_num; PkPlayerStruct pkplr; - save_num = pfile_get_save_num_from_name(gszHero); + save_num = pfile_get_save_num_from_name(name); archive = pfile_open_save_archive(save_num); if (archive == nullptr) app_fatal("Unable to open archive"); @@ -404,11 +404,11 @@ void pfile_read_player_from_save() pfile_SFileCloseArchive(&archive); - UnPackPlayer(&pkplr, myplr, false); + UnPackPlayer(&pkplr, playerId, false); - LoadHeroItems(&plr[myplr]); - RemoveEmptyInventory(myplr); - CalcPlrInv(myplr, false); + LoadHeroItems(&plr[playerId]); + RemoveEmptyInventory(playerId); + CalcPlrInv(playerId, false); } bool LevelFileExists() diff --git a/Source/pfile.h b/Source/pfile.h index 87f525ae4..cd6a8ef26 100644 --- a/Source/pfile.h +++ b/Source/pfile.h @@ -35,7 +35,7 @@ void pfile_ui_set_class_stats(unsigned int player_class_nr, _uidefaultstats *cla bool pfile_ui_save_create(_uiheroinfo *heroinfo); bool pfile_get_file_name(uint8_t lvl, char *dst); bool pfile_delete_save(_uiheroinfo *hero_info); -void pfile_read_player_from_save(); +void pfile_read_player_from_save(char name[16], int playerId); bool LevelFileExists(); void GetTempLevelNames(char *szTemp); void GetPermLevelNames(char *szPerm);