TurtleBrains  0.3.5
High quality, portable, C++ framework for rapid 2D game development.
tb_game_scene.hpp
1 
9 #ifndef TurtleBrains_GameSceneInterface_hpp
10 #define TurtleBrains_GameSceneInterface_hpp
11 
12 #include <turtle_brains/game/tb_entity_manager.hpp>
13 #include <turtle_brains/graphics/tb_graphic_list.hpp>
14 #include <turtle_brains/graphics/tb_camera.hpp>
15 #include <turtle_brains/graphics/tb_render_target.hpp>
16 #include <turtle_brains/graphics/tb_sprite.hpp>
17 
18 #include <list>
19 
20 namespace TurtleBrains::Game
21 {
22  class TransitionScene;
23 
29  class GameScene : public EntityManager
30  {
31  public:
32 
37  GameScene(void);
38 
43  virtual ~GameScene(void) = 0;
44 
45  static bool IsTransitionPlaying(void);
46 
59  static void ChangeToScene(GameScene& gameScene);
60 
77  static void ChangeToScene(GameScene& gameScene, std::unique_ptr<TransitionScene>&& transitionScene);
78 
88  static void PerformFrame(const float deltaTime);
89 
98  static void PerformFrame(GameScene& gameScene, const float deltaTime);
99 
100  protected:
107  virtual void OnSimulate(void);
108 
118  virtual void OnUpdate(const float deltaTime);
119 
123  virtual void OnRender(void) const;
124 
130  virtual void OnOpen(void);
131 
136  virtual void OnClose(void);
137 
141  virtual void OnRuntimeReload(void);
142 
143  private:
144  tbGraphics::Camera mCamera;
145  float mAccumulatedSimulationTime;
146  };
147 
148 //--------------------------------------------------------------------------------------------------------------------//
149 //--------------------------------------------------------------------------------------------------------------------//
150 //--------------------------------------------------------------------------------------------------------------------//
151 
152  class TransitionScene : public GameScene
153  {
154  public:
155  TransitionScene(void);
156  virtual ~TransitionScene(void) = 0;
157 
158  inline bool IsTransitionStarted(void) const { return mIsStarted; }
159 
160  virtual bool IsTransitionFinished(void) const = 0;
161 
162  protected:
163 
164  virtual void OnSimulate(void) override;
165  virtual void OnUpdate(const float deltaTime) override;
166 
174  virtual void OnRender(void) const override;
175  virtual void OnOpen(void) override;
176  virtual void OnClose(void) override;
177 
178  tbGraphics::Sprite RenderBeforeScene(void) const;
179  tbGraphics::Sprite RenderAfterScene(void) const;
180 
181  private:
182  friend class GameScene;
183 
184  // This is actually an implementation detail... we may want to make it private and add a friend to preotect
185  // the developer from calling it unexpectedly...
186  void SetBeforeAndAfterScenes(GameScene* before, GameScene* after);
187 
188  std::unique_ptr<tbGraphics::RenderTarget> mBeforeSceneTarget;
189  std::unique_ptr<tbGraphics::RenderTarget> mAfterSceneTarget;
190 
191  GameScene* mBeforeScene;
192  GameScene* mAfterScene;
193  bool mIsStarted;
194  };
195 
196 }; /* namespace TurtleBrains::Game */
197 
198 namespace tbGame = TurtleBrains::Game;
199 
200 #endif /* TurtleBrains_GameSceneInterface_hpp */
Definition: tb_entity_manager.hpp:33
Definition: tb_game_scene.hpp:30
static void PerformFrame(const float deltaTime)
static void ChangeToScene(GameScene &gameScene)
virtual void OnClose(void)
static void ChangeToScene(GameScene &gameScene, std::unique_ptr< TransitionScene > &&transitionScene)
virtual void OnSimulate(void)
virtual void OnOpen(void)
virtual void OnRuntimeReload(void)
static void PerformFrame(GameScene &gameScene, const float deltaTime)
virtual void OnRender(void) const
virtual void OnUpdate(const float deltaTime)
Definition: tb_game_scene.hpp:153
virtual void OnOpen(void) override
virtual void OnUpdate(const float deltaTime) override
virtual void OnSimulate(void) override
virtual void OnClose(void) override
virtual void OnRender(void) const override
Definition: tb_camera.hpp:48
Definition: tb_sprite.hpp:135
This is the heart of TurtleBrains for game developers to create GameScenes and Entities to interact w...