#pragma once #include #include #include "game/Team.h" namespace td { namespace game { class Player { private: game::TeamColor m_TeamColor; std::uint32_t m_Gold; std::uint32_t m_Exp; std::string m_Name; std::uint8_t m_ID; std::uint8_t m_GoldPerSecond; bool m_GoldChanged; bool m_ExpChanged; public: Player(std::uint8_t id = 0) : m_TeamColor(game::TeamColor::None), m_Gold(0), m_Exp(0), m_ID(id), m_GoldPerSecond(5), m_GoldChanged(false), m_ExpChanged(false) {} const std::string& getName() const { return m_Name; } void setName(const std::string& name) { m_Name = name; } game::TeamColor getTeamColor() const { return m_TeamColor; } void setTeamColor(game::TeamColor teamColor) { m_TeamColor = teamColor; } std::uint8_t getGoldPerSecond() const { return m_GoldPerSecond; } void setGoldPerSecond(std::uint8_t goldPerSecond) { m_GoldPerSecond = goldPerSecond; } std::uint32_t getGold() const { return m_Gold;} void setGold(std::uint32_t gold) { m_GoldChanged = true; m_Gold = gold; } void addGold(std::uint32_t gold) { m_GoldChanged = true; m_Gold += gold; } void removeGold(std::uint32_t gold) { m_GoldChanged = true; m_Gold -= gold; } std::uint32_t getExp() const { return m_Exp; } void setExp(std::uint32_t exp) { m_ExpChanged = true; m_Exp = exp; } void addExp(std::uint32_t exp) { m_ExpChanged = true; m_Exp += exp; } void removeExp(std::uint32_t exp) { m_ExpChanged = true; m_Exp -= exp; } bool hasGoldChanged() const { return m_GoldChanged; } bool hasExpChanged() const { return m_ExpChanged; } void updateGold() { m_GoldChanged = false; } void updateExp() { m_ExpChanged = false; } std::uint8_t getID() const { return m_ID; } }; } // namespace game } // namespace td