diff --git a/source/game/GameStates.cpp b/source/game/GameStates.cpp index 4413109033ae92f86ec4b8da350e665a4845555f..4241ef43b875ce9794ce95b8eefaef06a0aae40a 100644 --- a/source/game/GameStates.cpp +++ b/source/game/GameStates.cpp @@ -27,15 +27,27 @@ void CMainMenuGameState::activate() { GameData::m_pGUIStack->setActiveDesktop(m_pDesktop); - if (GameData::m_pGameLayer) - GameData::m_pGameLayer->play(false); - - if (GameData::m_pGuiLayer) + if(GameData::m_pGuiLayer) { GameData::m_pGuiLayer->play(true); - if (GameData::m_pSoundPlayer) + if(GameData::m_pSoundPlayer) + { GameData::m_pSoundPlayer->play(); + } + } +} + +void CMainMenuGameState::deactivate() +{ + if(GameData::m_pGuiLayer) + { + GameData::m_pGuiLayer->play(false); + + if(GameData::m_pSoundPlayer) + { + GameData::m_pSoundPlayer->stop(); + } } } @@ -61,6 +73,31 @@ CIngameMenuGameState::~CIngameMenuGameState() void CIngameMenuGameState::activate() { GameData::m_pGUIStack->setActiveDesktop(m_pDesktop); + + if(GameData::m_pGuiLayer) + { + GameData::m_pGuiLayer->play(true); + + if(GameData::m_pSoundPlayer) + { + GameData::m_pSoundPlayer->play(); + } + } +} + +void CIngameMenuGameState::deactivate() +{ + GameData::m_pGUIStack->setActiveDesktop(m_pDesktop); + + if(GameData::m_pGuiLayer) + { + GameData::m_pGuiLayer->play(false); + + if(GameData::m_pSoundPlayer) + { + GameData::m_pSoundPlayer->stop(); + } + } } //########################################################################## @@ -76,15 +113,9 @@ void CIngameGameState::activate() SSInput_SetEnable(true); SPhysics_EnableSimulation(); - if (GameData::m_pGameLayer) - GameData::m_pGameLayer->play(true); - - if (GameData::m_pGuiLayer) + if(GameData::m_pGameLayer) { - GameData::m_pGuiLayer->play(false); - - if (GameData::m_pSoundPlayer) - GameData::m_pSoundPlayer->stop(); + GameData::m_pGameLayer->play(true); } } @@ -96,15 +127,9 @@ void CIngameGameState::deactivate() SSInput_SetEnable(false); SPhysics_DisableSimulation(); - if (GameData::m_pGameLayer) - GameData::m_pGameLayer->play(false); - - if (GameData::m_pGuiLayer) + if(GameData::m_pGameLayer) { - GameData::m_pGuiLayer->play(true); - - if (GameData::m_pSoundPlayer) - GameData::m_pSoundPlayer->play(); + GameData::m_pGameLayer->play(false); } } diff --git a/source/game/GameStates.h b/source/game/GameStates.h index da4364658c24a8d13ca49e9a6535b7a6ba4256d4..4e23299023c89d96b6d5fe73ccdd6329911d91cc 100644 --- a/source/game/GameStates.h +++ b/source/game/GameStates.h @@ -4,26 +4,28 @@ #include "IGameState.h" #include <gui/guimain.h> -class CMainMenuGameState: public IGameState +class CMainMenuGameState final: public IGameState { public: CMainMenuGameState(); ~CMainMenuGameState(); - void activate(); + void activate() override; + void deactivate() override; protected: - gui::IDesktop * m_pDesktop; + gui::IDesktop *m_pDesktop; }; -class CIngameMenuGameState: public IGameState +class CIngameMenuGameState final: public IGameState { public: CIngameMenuGameState(); ~CIngameMenuGameState(); - void activate(); + void activate() override; + void deactivate() override; protected: - gui::IDesktop * m_pDesktop; + gui::IDesktop *m_pDesktop; }; class CIngameGameState: public IGameState