// // Created by IgorBat on 17.03.2018. // #ifndef THE_GAME_EFFECT_H #define THE_GAME_EFFECT_H #pragma once #include #include #include #include #include #include class Unit; class Cell; class Effect : public QObject { Q_OBJECT public: enum TypeOfTrigger{ InCome = 1, AfterAction = 2, AfterEndTurn = 3 }; Effect() = default; explicit Effect(QString parameters); virtual ~Effect() {} int getCount(); void setCount(int value); int getDurability(); void setDurability(int value); //---------------------------------------------// //----------------GUI section------------------// //---------------------------------------------// QString getEffectName() const; QString getEffectDescr() const; QImage getEffectIcon() const; //---------------------------------------------// //-----------Parameters load section-----------// //---------------------------------------------// private: void loadEffectDescr(QString effect_folder); void loadEffectIcon(QString effect_folder); public: virtual void OperateOnCell(Cell* cell) = 0; virtual void OperateOnUnit(Unit* unit) = 0; virtual void OperateOnUnitToCell(Unit* who, Cell* where) = 0; virtual void Execute(Cell* from, Cell* where, Unit* who, Unit* whom, TypeOfTrigger Type) = 0; protected: int count_; int durability_; // GUI values QString effect_name_; QString effect_descr_; QImage effect_icon_; }; #endif //THE_GAME_EFFECT_H