Browse Source

Remove memset for PlayerStruct

pull/2049/head
obligaron 5 years ago committed by Anders Jenbo
parent
commit
3a6e631261
  1. 9
      Source/player.cpp
  2. 8
      Source/player.h

9
Source/player.cpp

@ -367,6 +367,13 @@ bool PlayerStruct::IsWalking() const
}
}
void PlayerStruct::Reset()
{
// Create empty default initialized PlayerStruct on heap to avoid excessive stack usage
auto emptyPlayer = std::make_unique<PlayerStruct>();
*this = std::move(*emptyPlayer);
}
void SetPlayerGPtrs(byte *pData, byte **pAnim)
{
int i;
@ -772,7 +779,7 @@ void CreatePlayer(int pnum, HeroClass c)
}
auto &player = plr[pnum];
memset(&player, 0, sizeof(PlayerStruct));
player.Reset();
SetRndSeed(SDL_GetTicks());
player._pClass = c;

8
Source/player.h

@ -150,6 +150,9 @@ enum player_weapon_type : uint8_t {
struct PlayerStruct {
PlayerStruct() = default;
PlayerStruct(PlayerStruct &&) noexcept = default;
PlayerStruct &operator=(PlayerStruct &&) noexcept = default;
PLR_MODE _pmode;
int8_t walkpath[MAX_PATH_LENGTH];
bool plractive;
@ -395,6 +398,11 @@ struct PlayerStruct {
* @brief Is the player currently walking?
*/
bool IsWalking() const;
/**
* @brief Resets all Data of the current PlayerStruct
*/
void Reset();
};
extern int myplr;

Loading…
Cancel
Save