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 
15 namespace TurtleBrains
16 {
17  namespace Game
18  {
19 
24  {
25  public:
26 
30  explicit EntityBehaviorInterface(EntityInterface& entity);
31 
36  virtual ~EntityBehaviorInterface(void) = 0;
37 
38  protected:
43 
47  virtual void OnAdded(void);
48 
52  virtual void OnRemoved(void);
53 
57  virtual void OnPaused(void);
58 
62  virtual void OnResume(void);
63 
67  virtual void OnSimulate(void);
68 
72  virtual void OnUpdate(const float deltaTime);
73 
77  virtual void OnRender(void) const;
78 
82  virtual void OnCollideWith(const EntityInterface& other);
83 
84  private:
85  friend class Entity;
86  };
87 
89 
95  {
96  public:
100  DelayBehavior(Entity& entity, float delayInSeconds) :
101  EntityBehaviorInterface(entity),
102  mTimer(delayInSeconds)
103  {
104  }
105 
109  virtual ~DelayBehavior(void)
110  {
111  }
112 
116  virtual void OnSimulate(void);
117 
118  private:
119  float mTimer;
120  };
121 
122 
128  {
129  public:
133  KillBehavior(Entity& entity) :
135  {
136  }
137 
141  virtual void OnSimulate(void);
142 
143  private:
144  };
145 
146 
152  {
153  public:
157  MoveBehavior(Entity& entity, tbMath::Vector2 velocity) :
158  EntityBehaviorInterface(entity),
159  mVelocity(velocity)
160  {
161  }
162 
166  virtual ~MoveBehavior(void)
167  {
168  }
169 
173  virtual void OnSimulate(void);
174 
175  private:
176  tbMath::Vector2 mVelocity;
177  };
178 
179 
185  {
186  public:
190  MoveToBehavior(Entity& entity, const tbMath::Vector2& desiredPosition, float constantMoveSpeed) :
191  EntityBehaviorInterface(entity),
192  mDesiredPosition(desiredPosition),
193  mConstantMoveSpeed(constantMoveSpeed)
194  {
195  }
196 
200  virtual ~MoveToBehavior(void)
201  {
202  }
203 
207  virtual void OnSimulate(void);
208 
209  private:
210  tbMath::Vector2 mDesiredPosition;
211  float mConstantMoveSpeed;
212  };
213 
214  }; /* namespace Game */
215 }; /* namespace TurtleBrains */
216 
217 namespace tbGame = TurtleBrains::Game;
218 
219 #endif /* _TurtleBrains_EntityBehaviorInterface_h_ */
Definition: tb_vector.h:48
EntityBehaviorInterface(EntityInterface &entity)
Definition: tb_entity_behavior_interface.h:127
Definition: tb_entity.h:39
MoveToBehavior(Entity &entity, const tbMath::Vector2 &desiredPosition, float constantMoveSpeed)
Definition: tb_entity_behavior_interface.h:190
Entity & mEntity
Definition: tb_entity_behavior_interface.h:42
Definition: tb_entity_behavior_interface.h:23
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
MoveBehavior(Entity &entity, tbMath::Vector2 velocity)
Definition: tb_entity_behavior_interface.h:157
virtual ~DelayBehavior(void)
Definition: tb_entity_behavior_interface.h:109
virtual ~MoveBehavior(void)
Definition: tb_entity_behavior_interface.h:166
virtual ~MoveToBehavior(void)
Definition: tb_entity_behavior_interface.h:200
Definition: tb_entity_behavior_interface.h:184
virtual void OnCollideWith(const EntityInterface &other)
Definition: tb_entity_behavior_interface.h:94
DelayBehavior(Entity &entity, float delayInSeconds)
Definition: tb_entity_behavior_interface.h:100
KillBehavior(Entity &entity)
Definition: tb_entity_behavior_interface.h:133
Definition: tb_entity_behavior_interface.h:151
This is the heart of TurtleBrains for game developers to create GameScenes and Entities to interact w...