#ifndef EVENT_H
#define EVENT_H

#include <sstream>
#include <iostream>
#include <string>
#include <vector>
#include <fstream>
#include <math.h>

#include "misc.h"
// describe basic informations about a rare event occuring on the map or a cell

class Event
{
    public:
        Event(std::string name, bool isGlobal, std::string relatedTrait);
        Event(std::string i_name, bool i_isGlobal, std::string i_relatedTrait, float i_lethality, float i_handicap, std::string i_law, float i_paramA, float i_paramB, float i_vmax, float i_offset);
        std::string get_name();
        bool get_isGlobal();
        std::string get_relatedTrait();
        float get_lethality();
        float get_handicap();
        std::string get_law();
        std::vector<float> get_params();
        float pick_cutValue();

    private:
        std::string name;
        bool isGlobal; // does the event occur on the whole map?
        std::string relatedTrait;
        float freq; // how frequently does the event occur?
        float lethality;
        float handicap;
        std::string law;
        float paramA;
        float paramB;
        float vmax;
        float offset;
};

class EventOccur
{
    public:
        //EventOccur(std::string name, std::string relatedTrait, float cutValue);
        EventOccur(Event e, float cutValue);
        std::string get_name();
        std::string get_relatedTrait();
        float get_cutValue();
        float get_lethality();
        float get_handicap();

    private:
        std::string name;
        std::string relatedTrait;
        float cutValue; // what is the expected value for this event?
        float lethality;
        float handicap;
};

#endif // EVENT_H
