diff options
author | zuu <zuu@openttd.org> | 2012-09-21 19:58:18 +0000 |
---|---|---|
committer | zuu <zuu@openttd.org> | 2012-09-21 19:58:18 +0000 |
commit | f3f4c562ff0625df99782af09725391d0f1c0a8a (patch) | |
tree | 6c456062b1bf0217a16fc19e4e21f9d505baabec /src/game | |
parent | 2e1936b11cfb64f08b43e454a402b6ada276a67a (diff) | |
download | openttd-f3f4c562ff0625df99782af09725391d0f1c0a8a.tar.xz |
(svn r24537) -Feature: Scripts can be suspended even if the game is still progressing, thus break-on-log now works also for Game Scripts.
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 */ |