GEJM  1.0.0.0
a 2D platformer made by students
Creature.h
1 #ifndef CREATURE_H
2 #define CREATURE_H
3 
4 #include "SolidObject.h"
5 #include "Timer.h"
6 
12 enum class CollisionState
13 {
17  None = 0x0,
18 
22  FromAbove = 0x1,
23 
27  FromBelow = 0x2,
28 
32  FromLeft = 0x4,
33 
37  FromRight = 0x8
38 };
39 
44 inline CollisionState operator| (CollisionState a, CollisionState b)
45 {
46  // Cast to int first otherwise we'll just end up recursing
47  return static_cast<CollisionState>(static_cast<int>(a) | static_cast<int>(b));
48 }
49 
54 inline CollisionState operator& (CollisionState a, CollisionState b)
55 {
56  return static_cast<CollisionState>(static_cast<int>(a)& static_cast<int>(b));
57 }
58 
63 inline CollisionState& operator|= (CollisionState& a, CollisionState b)
64 {
65  return a = a | b;
66 }
67 
74 class Creature :
75  public SolidObject
76 {
77 public:
88  Creature(double x = 0.0, double y = 0.0, double width = 1.0, double height = 1.0, Uint8 health = 1);
89 
93  virtual ~Creature();
94 
101  void savePrevious() override;
102 
109  void moveBy(double x, double y);
110 
118  void hurt(Sint8 damage);
119 
126  void setSpeedVector(double x, double y);
127 
133  void addCollisionState(CollisionState state);
134 
141  virtual void onCollision(SolidObject* collider);
142 
147  Uint8 getHealth() const;
148 
153  bool getIsAlive() const;
154 
159  bool getIsInvulnerable() const;
160 
165  bool getWasInvulnerable() const;
166 
171  double getSpeedX() const;
172 
177  double getSpeedY() const;
178 
183  CollisionState getCollisionState() const;
184 
188  Creature& operator=(Creature const&) = delete;
189 
190 protected:
194  Uint8 health;
195 
199  Uint32 const invFrames;
200 
204  bool isAlive;
205 
210 
215 
219  double speedX;
220 
224  double speedY;
225 
229  CollisionState collisionState;
230 
235 };
236 
237 #endif // CREATURE_H
Definition: Creature.h:74
Definition: Timer.h:9
double speedY
Definition: Creature.h:224
Uint32 const invFrames
Definition: Creature.h:199
bool isAlive
Definition: Creature.h:204
Timer invTimer
Definition: Creature.h:234
bool wasInvulnerable
Definition: Creature.h:214
Definition: SolidObject.h:9
double speedX
Definition: Creature.h:219
CollisionState collisionState
Definition: Creature.h:229
Uint8 health
Definition: Creature.h:194
bool isInvulnerable
Definition: Creature.h:209