//
// Created by IgorBat on 17.03.2018.
//

#ifndef THE_GAME_EFFECT_H
#define THE_GAME_EFFECT_H

#pragma once
#include <iostream>
#include <vector>
//#include "AbstractFactory.h"

class Unit;
class Cell;

enum typeEffect{instancePoint, ongoingPoint, instanceUnit, ongoingUnit};
enum specieEffect{agility_, attack_range_, damage_per_hit_, intelligence_};

class Effect {

private:
    int count_;
    typeEffect typeEffect_;
    specieEffect specieEffect_;
public:
    Effect() = delete;
    Effect(std::string path) {

    }
    virtual ~Effect() = delete;

    int getCount();
    void setCount(int value);

    typeEffect getType();
    void setType(typeEffect value);

    specieEffect getSpecie();
    void setSpecie(specieEffect value);

    void OperateOnCell(Cell*);
    void OperateOnUnit(Unit*);
    //logic here. 
};
#endif //THE_GAME_EFFECT_H