diff options
Diffstat (limited to 'src/game')
-rw-r--r-- | src/game/game.hpp | 20 | ||||
-rw-r--r-- | src/game/game_core.cpp | 15 |
2 files changed, 35 insertions, 0 deletions
diff --git a/src/game/game.hpp b/src/game/game.hpp index 0347758e4..66a155bd5 100644 --- a/src/game/game.hpp +++ b/src/game/game.hpp @@ -47,6 +47,26 @@ public: static void Uninitialize(bool keepConfig); /** + * Suspends the Game Script and then pause the execution of the script. The + * script will not be resumed from its suspended state until the script + * has been unpaused. + */ + static void Pause(); + + /** + * Resume execution of the Game Script. This function will not actually execute + * the script, but set a flag so that the script is executed my the usual + * mechanism that executes the script. + */ + static void Unpause(); + + /** + * Checks if the Game Script is paused. + * @return true if the Game Script is paused, otherwise false. + */ + static bool IsPaused(); + + /** * Queue a new event for a Game Script. */ static void NewEvent(class ScriptEvent *event); diff --git a/src/game/game_core.cpp b/src/game/game_core.cpp index f56dddf83..f32a99b27 100644 --- a/src/game/game_core.cpp +++ b/src/game/game_core.cpp @@ -117,6 +117,21 @@ } } +/* static */ void Game::Pause() +{ + if (Game::instance != NULL) Game::instance->Pause(); +} + +/* static */ void Game::Unpause() +{ + if (Game::instance != NULL) Game::instance->Unpause(); +} + +/* static */ bool Game::IsPaused() +{ + return Game::instance != NULL? Game::instance->IsPaused() : false; +} + /* static */ void Game::NewEvent(ScriptEvent *event) { /* AddRef() and Release() need to be called at least once, so do it here */ |