#pragma once #include #include class Spell { //waiting for a realisation }; class Cell { //waiting for a realisation public: bool isEmpty() { return true; } std::vector actualPath(Cell* destination) { //the shortest existing path from (*this) to (*destination) std::vector path; return path; } }; class Unit { protected: std::vector skills_; private: //personal growth double experience_; double level_; //actions and events double initiative_; //movement Cell* location_; double movement_points_; //how many cells can move for one activity point //attack action double agility_; double attack_range_; double damage_per_hit_; double energy_points_; //for physical attacks double intelligence_; double mana_points_; //for magic attacks double strength_; //durability double health_points_; double magic_defence_; //less or equal 40 double physic_defence_; //less or equal 40 public: Unit(); virtual ~Unit() = delete; double getExperience(); void setExperience(double value); double getLevel(); void setLevel(double value); double getHealthPoints(); void setHealthPoints(double value); double getManaPoints(); void setManaPoints(double value); double getEnergyPoints(); void setEnergyPoints(double value); double getAttackRange(); void setAttackRange(double value); Cell* getLocation(); void setLocation(Cell* to); int getMovementPoints(); void setMovementPoints(int value); double getInitiative(); void setInitiative(double value); double getDamagePerHit(); void setDamagePerHit(double value); double getIntelligence(); void setIntelligence(double value); double getStrength(); void setStrength(double value); double getAgility(); void setAgility(double value); double getMagicDefence(); void setMagicDefence(double value); double getPhysicDefence(); void setPhysicDefence(double value); virtual void calculateDamagePerHit(); double reduceIncomingDamage(std::string damageType, int value); int lenOfActualPath(Cell* destination); bool canMoveForDistance(int distance); bool canMoveToCell(Cell* destination); void moveToCell(Cell* destination); // bool canAttackForDistance(int distance); };