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/script/script_instance.cpp | |
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/script/script_instance.cpp')
-rw-r--r-- | src/script/script_instance.cpp | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/src/script/script_instance.cpp b/src/script/script_instance.cpp index 95fcf6f0d..dc56c6c1f 100644 --- a/src/script/script_instance.cpp +++ b/src/script/script_instance.cpp @@ -54,6 +54,7 @@ ScriptInstance::ScriptInstance(const char *APIName) : instance(NULL), is_started(false), is_dead(false), + is_paused(false), is_save_data_on_stack(false), suspend(0), callback(NULL) @@ -165,6 +166,7 @@ void ScriptInstance::GameLoop() this->Died(); return; } + if (this->is_paused) return; this->controller->ticks++; if (this->suspend < -1) this->suspend++; // Multiplayer suspend, increase up to -1. @@ -520,10 +522,23 @@ void ScriptInstance::Save() } } -void ScriptInstance::Suspend() +void ScriptInstance::Pause() { + /* Suspend script. */ HSQUIRRELVM vm = this->engine->GetVM(); Squirrel::DecreaseOps(vm, _settings_game.script.script_max_opcode_till_suspend); + + this->is_paused = true; +} + +void ScriptInstance::Unpause() +{ + this->is_paused = false; +} + +bool ScriptInstance::IsPaused() +{ + return this->is_paused; } /* static */ bool ScriptInstance::LoadObjects(HSQUIRRELVM vm) |