Browse Source

Fix charpanel always showing player 0 stats

pull/2731/head
Anders Jenbo 5 years ago
parent
commit
2d47c12515
  1. 4
      Source/multi.cpp
  2. 3
      Source/panels/charpanel.cpp
  3. 1
      Source/player.cpp
  4. 1
      Source/player.h
  5. 2
      test/writehero_test.cpp

4
Source/multi.cpp

@ -427,6 +427,7 @@ bool InitSingle(GameData *gameData)
}
MyPlayerId = 0;
MyPlayer = &Players[MyPlayerId];
gbIsMultiplayer = false;
return true;
@ -452,9 +453,10 @@ bool InitMulti(GameData *gameData)
return false;
}
MyPlayerId = playerId;
MyPlayer = &Players[MyPlayerId];
gbIsMultiplayer = true;
pfile_read_player_from_save(gSaveNumber, Players[MyPlayerId]);
pfile_read_player_from_save(gSaveNumber, *MyPlayer);
return true;
}

3
Source/panels/charpanel.cpp

@ -7,6 +7,7 @@
#include "DiabloUI/art_draw.h"
#include "control.h"
#include "player.h"
#include "utils/display.h"
#include "engine/render/cel_render.hpp"
#include "engine/render/text_render.hpp"
@ -41,8 +42,6 @@ struct PanelEntry {
std::function<StyledText()> statDisplayFunc = nullptr; // function responsible for displaying stat
};
Player *MyPlayer = &Players[MyPlayerId];
UiFlags GetBaseStatColor(CharacterAttribute attr)
{
UiFlags style = UiFlags::ColorSilver;

1
Source/player.cpp

@ -34,6 +34,7 @@
namespace devilution {
int MyPlayerId;
Player *MyPlayer;
Player Players[MAX_PLRS];
bool MyPlayerIsDead;
int deathdelay;

1
Source/player.h

@ -576,6 +576,7 @@ struct Player {
};
extern int MyPlayerId;
extern Player *MyPlayer;
extern Player Players[MAX_PLRS];
extern bool MyPlayerIsDead;
extern int BlockBonuses[enum_size<HeroClass>::value];

2
test/writehero_test.cpp

@ -333,6 +333,8 @@ TEST(Writehero, pfile_write_hero)
leveltype = DTYPE_TOWN;
MyPlayerId = 0;
MyPlayer = &Players[MyPlayerId];
_uiheroinfo info {};
strcpy(info.name, "TestPlayer");
info.heroclass = HeroClass::Rogue;

Loading…
Cancel
Save