summaryrefslogtreecommitdiff
path: root/inc/creature.hpp
blob: 99226b31b9ac788bdbfc07d70d9ccfb33afe1bba (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
#ifndef creature_h
#define creature_h

#include <SDL2/SDL.h>
#include <list>

#include "entity.hpp"
#include "functions.hpp"
#include "dna.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 = 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::list<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