summaryrefslogtreecommitdiff
path: root/inc/creature.hpp
blob: 01f6557170ca35b8c8b4f448441d43a1f12bff5f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#ifndef creature_h
#define creature_h

#include <cstdlib>
#include <vector>
#include <list>
#include <algorithm>

#include "entity.hpp"
#include "functions.hpp"

class Creature: public Entity
{
        public:
                Creature(Rectangle t, DNA D);

                void    Behavior();
                void    Action();
                void    Priority();
                void    setTarget();
                void    checkTarget();
                void    moveTowards(Rectangle t);
                void    impregnate(DNA D);
                void    giveNearMe(std::list<Entity*> n){nearMe = {std::begin(n),std::end(n)};};

                DNA     getDNA(){return myDNA;};
                DNA     getChildsDNA(){return childsDNA;};
                int     getHealth(){return health;};
                int     getBestSense(){return myDNA.bestSense;};
                bool    getGender(){return gender;};
                bool    getPregnancyReady(){return pregnancyReady;};
                void    hadPregnancy(){pregnate = pregnancyReady = false;};

        private:
                Rectangle               wTarget;
                Entity*                 target;
                std::vector<Entity*>    nearMe;
                DNA                     myDNA;
                DNA                     childsDNA;

                int                     health; 
                int                     amountAte;
                int                     pregnancyTime;
                int                     age;

                bool                    hungry; 
                bool                    pregnancyReady;
                bool                    able;     
                bool                    hasTarget;
                bool                    wander;
};

#endif