Character.hpp
Go to the documentation of this file.
1 // This code is based on Sabberstone project.
2 // Copyright (c) 2017-2019 SabberStone Team, darkfriend77 & rnilva
3 // Hearthstone++ is hearthstone simulator using C++ with reinforcement learning.
4 // Copyright (c) 2019 Chris Ohk, Youngjoong Kim, SeungHyun Jeon
5 
6 #ifndef ROSETTASTONE_CHARACTER_HPP
7 #define ROSETTASTONE_CHARACTER_HPP
8 
10 
11 namespace RosettaStone
12 {
13 class Player;
14 
21 class Character : public Entity
22 {
23  public:
25  Character() = default;
26 
30  Character(Player& _owner, Card& _card);
31 
33  virtual ~Character() = default;
34 
36  Character(const Character& c) = default;
37 
39  Character(Character&& c) = default;
40 
42  Character& operator=(const Character& c) = default;
43 
45  Character& operator=(Character&& c) = default;
46 
49  virtual size_t GetAttack() const;
50 
52  void Destroy() override;
53 
56  bool CanAttack() const;
57 
62  bool IsValidCombatTarget(Player& opponent, Character* target) const;
63 
67  static std::vector<Character*> GetValidCombatTargets(Player& opponent);
68 
73  size_t TakeDamage(Character& source, std::size_t damage);
74 
78  void TakeHeal(Character& source, std::size_t heal);
79 
80  std::size_t numAttacked = 0;
81  std::size_t attack = 0;
82  int health = 0;
83  int maxHealth = 0;
84 };
85 } // namespace RosettaStone
86 
87 #endif // ROSETTASTONE_CHARACTER_HPP
static std::vector< Character * > GetValidCombatTargets(Player &opponent)
Card class.
Definition: Card.hpp:27
size_t TakeDamage(Character &source, std::size_t damage)
virtual size_t GetAttack() const
virtual ~Character()=default
Default destructor.
Abstract entity structure that stores card data.
Definition: Entity.hpp:28
Character()=default
Default constructor.
bool IsValidCombatTarget(Player &opponent, Character *target) const
int health
Definition: Character.hpp:82
std::size_t numAttacked
Definition: Character.hpp:80
void Destroy() override
Destroys character.
int maxHealth
Definition: Character.hpp:83
Player class.
Definition: Player.hpp:33
Definition: AccountInfo.hpp:14
void TakeHeal(Character &source, std::size_t heal)
Character & operator=(const Character &c)=default
Default copy assignment operator.
Abstract character class that stores hero and minion data.
Definition: Character.hpp:21
std::size_t attack
Definition: Character.hpp:81