From f3f4c562ff0625df99782af09725391d0f1c0a8a Mon Sep 17 00:00:00 2001 From: zuu Date: Fri, 21 Sep 2012 19:58:18 +0000 Subject: (svn r24537) -Feature: Scripts can be suspended even if the game is still progressing, thus break-on-log now works also for Game Scripts. --- src/script/script_instance.cpp | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'src/script/script_instance.cpp') 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) -- cgit v1.2.3-54-g00ecf