#ifndef ACTOR_HPP #define ACTOR_HPP #include #include #include "Item.hpp" class Actor { public: const unsigned maxHp; const std::string name; Actor() = delete; virtual ~Actor(); void damage(int amt); void heal(int amt); void store(Item &item); Item& drop(); /* accessors */ bool alive() const { return _alive; } unsigned hp() const { return _hp; } unsigned attack() const { return _attack; } unsigned defence() const { return _defence; } unsigned magicAttack() const { return _magicAttack; } unsigned magicDefence() const { return _magicDefence; } unsigned precisionProbabiliy() const { return _precisionProbability; } unsigned dodgeProbabiliy() const { return _dodgeProbability; } unsigned reactionSpeed() const { return _reactionSpeed; } const std::list& inventory() const { return _inventory; } //TODO add weaponslot Item* weapon() const { return _weapon; } unsigned levelAxe() const { return _levelAxe; } unsigned levelLance() const { return _levelLance; } unsigned levelSword() const { return _levelSword; } unsigned levelRanged() const { return _levelRanged; } unsigned levelStick() const { return _levelStick; } unsigned levelMedicine() const { return _levelMedicine; } int x() { return _x; } int y() { return _y; } protected: bool _alive; unsigned _hp; /* movement related */ unsigned _movements; int _x, _y; /* combat related */ unsigned _attack; unsigned _defence; unsigned _magicAttack; // nota come magia unsigned _magicDefence; // nota come resistenza unsigned _precisionProbability; unsigned _dodgeProbability; unsigned _reactionSpeed; // unsigned _abilityProbability; /* others */ unsigned _inventorySize; std::list _inventory; Item* _weapon; unsigned _levelAxe; unsigned _levelLance; unsigned _levelSword; unsigned _levelRanged; unsigned _levelStick; unsigned _levelMedicine; Actor(std::string _name, unsigned _maxHp); }; #endif