TurtleBrains  0.2.1
High quality, portable, C++ API for native application and game development.
tb_entity_behavior_interface.h
1 
9 #ifndef _TurtleBrains_EntityBehaviorInterface_h_
10 #define _TurtleBrains_EntityBehaviorInterface_h_
11 
12 #include "tb_entity.h"
13 #include "../core/tb_noncopyable.h"
14 #include "../game/tb_game_timer.h"
15 
16 namespace TurtleBrains
17 {
18  namespace Game
19  {
20 
26  {
27  public:
28 
32  explicit EntityBehaviorInterface(Entity& entity);
33 
38  virtual ~EntityBehaviorInterface(void) = 0;
39 
40  protected:
47 
52  virtual void OnAdded(void);
53 
57  virtual void OnRemoved(void);
58 
63  virtual void OnPaused(void);
64 
69  virtual void OnResume(void);
70 
75  virtual void OnSimulate(void);
76 
81  virtual void OnUpdate(const float deltaTime);
82 
87  virtual void OnRender(void) const;
88 
93  virtual void OnCollideWith(const Entity& other);
94 
95  private:
96  friend class Entity;
97  };
98 
100 
106  {
107  public:
114  DelayBehavior(Entity& entity, const tbGame::GameTimer& delayTimer) :
115  EntityBehaviorInterface(entity),
116  mDelayTimer(delayTimer)
117  {
118  }
119 
123  virtual ~DelayBehavior(void)
124  {
125  }
126 
130  virtual void OnSimulate(void);
131 
132  private:
133  tbGame::GameTimer mDelayTimer;
134  };
135 
136 
143  {
144  public:
150  KillBehavior(Entity& entity) :
152  {
153  }
154 
158  virtual ~KillBehavior(void)
159  {
160  }
161 
165  virtual void OnSimulate(void);
166 
167  private:
168  };
169 
170 
177  {
178  public:
188  MoveBehavior(Entity& entity, const tbMath::Vector2& velocity) :
189  EntityBehaviorInterface(entity),
190  mVelocity(velocity)
191  {
192  }
193 
197  virtual ~MoveBehavior(void)
198  {
199  }
200 
204  virtual void OnSimulate(void);
205 
206  private:
207  tbMath::Vector2 mVelocity;
208  };
209 
210 
216  {
217  public:
226  MoveToBehavior(Entity& entity, const tbMath::Vector2& desiredPosition, float constantMoveSpeed) :
227  EntityBehaviorInterface(entity),
228  mDesiredPosition(desiredPosition),
229  mConstantMoveSpeed(constantMoveSpeed)
230  {
231  }
232 
236  virtual ~MoveToBehavior(void)
237  {
238  }
239 
244  virtual void OnSimulate(void);
245 
246  private:
247  tbMath::Vector2 mDesiredPosition;
248  float mConstantMoveSpeed;
249  };
250 
251  }; /* namespace Game */
252 }; /* namespace TurtleBrains */
253 
254 namespace tbGame = TurtleBrains::Game;
255 
256 #endif /* _TurtleBrains_EntityBehaviorInterface_h_ */
Definition: tb_vector.h:47
Definition: tb_entity_behavior_interface.h:142
virtual void OnCollideWith(const Entity &other)
Definition: tb_entity.h:46
MoveToBehavior(Entity &entity, const tbMath::Vector2 &desiredPosition, float constantMoveSpeed)
Definition: tb_entity_behavior_interface.h:226
Entity & mEntity
Definition: tb_entity_behavior_interface.h:46
Definition: tb_entity_behavior_interface.h:25
MoveBehavior(Entity &entity, const tbMath::Vector2 &velocity)
Definition: tb_entity_behavior_interface.h:188
virtual void OnUpdate(const float deltaTime)
Definition: tb_noncopyable.h:22
Contains all functions, classes and helpers related to game/application development written by Tim "B...
Definition: tb_application_dialog.h:21
virtual ~DelayBehavior(void)
Definition: tb_entity_behavior_interface.h:123
virtual ~MoveBehavior(void)
Definition: tb_entity_behavior_interface.h:197
virtual ~MoveToBehavior(void)
Definition: tb_entity_behavior_interface.h:236
virtual ~KillBehavior(void)
Definition: tb_entity_behavior_interface.h:158
Definition: tb_entity_behavior_interface.h:215
DelayBehavior(Entity &entity, const tbGame::GameTimer &delayTimer)
Definition: tb_entity_behavior_interface.h:114
Definition: tb_entity_behavior_interface.h:105
KillBehavior(Entity &entity)
Definition: tb_entity_behavior_interface.h:150
Definition: tb_entity_behavior_interface.h:176
This is the heart of TurtleBrains for game developers to create GameScenes and Entities to interact w...
Definition: tb_game_timer.h:25