#ifndef HERO_H #define HERO_H #include "entity.h" enum class Direction { Left, Up, Right, Down, None }; /// Represents a controlable by player game character class Hero : public Entity { private: int hero_charges; bool on_exit; public: explicit Hero(coordinate row = 0, coordinate col = 0, int initial_charges = 0); /// Add more charges for hero to use void refillCharges(int append_charges); /// Get amount of charges int charges() const noexcept; /// Spend one charge on action bool useCharge(); /// Set amount of hero charges explicitly void setCharges(int charges) noexcept; /// Move hero by one cell to any direction void move(const Direction &direction); /// Sets on_exit flag to true, game will load next level void reachExit() noexcept; /// Are we exiting level? bool onExit() const noexcept; }; #endif // HERO_H