diff --git a/apps/openmw/engine.cpp b/apps/openmw/engine.cpp index 741f7564f..4de198b64 100644 --- a/apps/openmw/engine.cpp +++ b/apps/openmw/engine.cpp @@ -92,7 +92,8 @@ bool OMW::Engine::frameRenderingQueued (const Ogre::FrameEvent& evt) MWBase::Environment::get().getSoundManager()->update(frametime); // global scripts - if (MWBase::Environment::get().getStateManager()->isGameRunning()) + if (MWBase::Environment::get().getStateManager()->getState()== + MWBase::StateManager::State_Running) { MWBase::Environment::get().getScriptManager()->getGlobalScripts().run(); diff --git a/apps/openmw/mwbase/statemanager.hpp b/apps/openmw/mwbase/statemanager.hpp index 076e66b8c..4fd1a297d 100644 --- a/apps/openmw/mwbase/statemanager.hpp +++ b/apps/openmw/mwbase/statemanager.hpp @@ -6,6 +6,15 @@ namespace MWBase /// \brief Interface for game state manager (implemented in MWState) class StateManager { + public: + + enum State + { + State_NoGame, + State_Ended, + State_Running + }; + private: StateManager (const StateManager&); @@ -24,7 +33,7 @@ namespace MWBase virtual bool hasQuitRequest() const = 0; - virtual bool isGameRunning() const = 0; + virtual State getState() const = 0; virtual void newGame (bool bypass = false) = 0; ///< Start a new game. diff --git a/apps/openmw/mwstate/statemanagerimp.cpp b/apps/openmw/mwstate/statemanagerimp.cpp index a226b166d..c4cd45c8e 100644 --- a/apps/openmw/mwstate/statemanagerimp.cpp +++ b/apps/openmw/mwstate/statemanagerimp.cpp @@ -8,7 +8,7 @@ #include "../mwbase/windowmanager.hpp" MWState::StateManager::StateManager() -: mQuitRequest (false), mRunning (false) +: mQuitRequest (false), mState (State_NoGame) { } @@ -23,18 +23,18 @@ bool MWState::StateManager::hasQuitRequest() const return mQuitRequest; } -bool MWState::StateManager::isGameRunning() const +MWState::StateManager::State MWState::StateManager::getState() const { - return mRunning; + return mState; } void MWState::StateManager::newGame (bool bypass) { - if (mRunning) + if (mState!=State_NoGame) { MWBase::Environment::get().getDialogueManager()->clear(); MWBase::Environment::get().getJournal()->clear(); - mRunning = false; + mState = State_NoGame; } if (!bypass) @@ -44,5 +44,5 @@ void MWState::StateManager::newGame (bool bypass) MWBase::Environment::get().getWindowManager()->setNewGame (true); } - mRunning = true; + mState = State_Running; } diff --git a/apps/openmw/mwstate/statemanagerimp.hpp b/apps/openmw/mwstate/statemanagerimp.hpp index 9f8096a4a..078a899b2 100644 --- a/apps/openmw/mwstate/statemanagerimp.hpp +++ b/apps/openmw/mwstate/statemanagerimp.hpp @@ -8,7 +8,7 @@ namespace MWState class StateManager : public MWBase::StateManager { bool mQuitRequest; - bool mRunning; + State mState; public: @@ -18,7 +18,7 @@ namespace MWState virtual bool hasQuitRequest() const; - virtual bool isGameRunning() const; + virtual State getState() const; virtual void newGame (bool bypass = false); ///< Start a new game.