Make the Prepare and Destroy step more customizable.
This commit is contained in:
parent
250600d8b2
commit
63bb31e728
5 changed files with 20 additions and 5 deletions
|
@ -108,4 +108,11 @@ namespace cloonel {
|
||||||
bool GameBase::ShouldQuit() const {
|
bool GameBase::ShouldQuit() const {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///------------------------------------------------------------------------
|
||||||
|
///------------------------------------------------------------------------
|
||||||
|
void GameBase::Prepare() {
|
||||||
|
this->OnPrepare();
|
||||||
|
this->OnPrepareDone();
|
||||||
|
}
|
||||||
} //namespace cloonel
|
} //namespace cloonel
|
||||||
|
|
|
@ -32,13 +32,13 @@ namespace cloonel {
|
||||||
float Exec ( void );
|
float Exec ( void );
|
||||||
bool WantsToQuit ( void ) const;
|
bool WantsToQuit ( void ) const;
|
||||||
|
|
||||||
|
void Prepare ( void );
|
||||||
|
virtual void Destroy ( void ) noexcept = 0;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
explicit GameBase ( SDLMain* parSdlMain );
|
explicit GameBase ( SDLMain* parSdlMain );
|
||||||
virtual ~GameBase ( void ) noexcept;
|
virtual ~GameBase ( void ) noexcept;
|
||||||
|
|
||||||
virtual void Prepare ( void ) = 0;
|
|
||||||
virtual void Destroy ( void ) noexcept = 0;
|
|
||||||
|
|
||||||
SDLMain* SDLObject ( void ) { return m_sdlmain; }
|
SDLMain* SDLObject ( void ) { return m_sdlmain; }
|
||||||
InputBag* InputBagObject ( void ) { return m_input.get(); }
|
InputBag* InputBagObject ( void ) { return m_input.get(); }
|
||||||
|
|
||||||
|
@ -46,6 +46,8 @@ namespace cloonel {
|
||||||
virtual void OnRender ( void ) = 0;
|
virtual void OnRender ( void ) = 0;
|
||||||
virtual void OnPreUpdate ( void ) = 0;
|
virtual void OnPreUpdate ( void ) = 0;
|
||||||
virtual void OnUpdate ( float parDelta ) = 0;
|
virtual void OnUpdate ( float parDelta ) = 0;
|
||||||
|
virtual void OnPrepare ( void ) = 0;
|
||||||
|
virtual void OnPrepareDone ( void ) = 0;
|
||||||
virtual bool ShouldQuit ( void ) const;
|
virtual bool ShouldQuit ( void ) const;
|
||||||
|
|
||||||
const std::unique_ptr<InputBag> m_input;
|
const std::unique_ptr<InputBag> m_input;
|
||||||
|
|
|
@ -36,6 +36,9 @@ namespace cloonel {
|
||||||
void AddMover ( Mover* parMover ) { assert(parMover); m_movers.push_back(parMover); }
|
void AddMover ( Mover* parMover ) { assert(parMover); m_movers.push_back(parMover); }
|
||||||
void AddDrawable ( const Drawable* parDrawable ) { assert(parDrawable); m_drawables.push_back(parDrawable); }
|
void AddDrawable ( const Drawable* parDrawable ) { assert(parDrawable); m_drawables.push_back(parDrawable); }
|
||||||
|
|
||||||
|
virtual void Destroy ( void ) noexcept;
|
||||||
|
|
||||||
|
protected:
|
||||||
private:
|
private:
|
||||||
virtual void OnRender ( void );
|
virtual void OnRender ( void );
|
||||||
virtual void OnUpdate ( float parDelta );
|
virtual void OnUpdate ( float parDelta );
|
||||||
|
|
|
@ -60,7 +60,7 @@ namespace cloonel {
|
||||||
|
|
||||||
///--------------------------------------------------------------------------
|
///--------------------------------------------------------------------------
|
||||||
///--------------------------------------------------------------------------
|
///--------------------------------------------------------------------------
|
||||||
void GameplaySceneClassic::Prepare() {
|
void GameplaySceneClassic::OnPrepare() {
|
||||||
const float halfRefHeight = static_cast<float>(REFERENCE_HEIGHT) / 2.0f;
|
const float halfRefHeight = static_cast<float>(REFERENCE_HEIGHT) / 2.0f;
|
||||||
|
|
||||||
std::unique_ptr<MoverSine> moverSine(new MoverSine());
|
std::unique_ptr<MoverSine> moverSine(new MoverSine());
|
||||||
|
@ -101,6 +101,8 @@ namespace cloonel {
|
||||||
///--------------------------------------------------------------------------
|
///--------------------------------------------------------------------------
|
||||||
///--------------------------------------------------------------------------
|
///--------------------------------------------------------------------------
|
||||||
void GameplaySceneClassic::Destroy() noexcept {
|
void GameplaySceneClassic::Destroy() noexcept {
|
||||||
|
GameplayScene::Destroy();
|
||||||
|
|
||||||
//Destroy in reverse creation order
|
//Destroy in reverse creation order
|
||||||
m_platforms = std::move(std::unique_ptr<PlatformSystem>(nullptr));
|
m_platforms = std::move(std::unique_ptr<PlatformSystem>(nullptr));
|
||||||
m_wallpaper = std::move(std::unique_ptr<TiledWallpaper>(nullptr));
|
m_wallpaper = std::move(std::unique_ptr<TiledWallpaper>(nullptr));
|
||||||
|
@ -108,6 +110,7 @@ namespace cloonel {
|
||||||
m_moverLeftRight = std::move(std::unique_ptr<MoverLeftRight>(nullptr));
|
m_moverLeftRight = std::move(std::unique_ptr<MoverLeftRight>(nullptr));
|
||||||
m_player = std::move(std::unique_ptr<Character>(nullptr));
|
m_player = std::move(std::unique_ptr<Character>(nullptr));
|
||||||
m_moverSine = std::move(std::unique_ptr<MoverSine>(nullptr));
|
m_moverSine = std::move(std::unique_ptr<MoverSine>(nullptr));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
///--------------------------------------------------------------------------
|
///--------------------------------------------------------------------------
|
||||||
|
|
|
@ -38,11 +38,11 @@ namespace cloonel {
|
||||||
explicit GameplaySceneClassic ( SDLMain* parSdlMain );
|
explicit GameplaySceneClassic ( SDLMain* parSdlMain );
|
||||||
virtual ~GameplaySceneClassic ( void ) noexcept;
|
virtual ~GameplaySceneClassic ( void ) noexcept;
|
||||||
|
|
||||||
virtual void Prepare ( void );
|
|
||||||
virtual void Destroy ( void ) noexcept;
|
virtual void Destroy ( void ) noexcept;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
virtual void OnPreUpdate ( void );
|
virtual void OnPreUpdate ( void );
|
||||||
|
virtual void OnPrepare ( void );
|
||||||
|
|
||||||
std::unique_ptr<Character> m_player;
|
std::unique_ptr<Character> m_player;
|
||||||
std::unique_ptr<MoverSine> m_moverSine;
|
std::unique_ptr<MoverSine> m_moverSine;
|
||||||
|
|
Loading…
Reference in a new issue