aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMax Horn2002-12-25 20:29:40 +0000
committerMax Horn2002-12-25 20:29:40 +0000
commit9187172fe2f771b1d2036b231170446008631a98 (patch)
tree539578951e261b769f42d4e13873fa28bdfcd2dc
parentaed55eff698f8e67ec3e5307cb02fdd33bcb1fe4 (diff)
downloadscummvm-rg350-9187172fe2f771b1d2036b231170446008631a98.tar.gz
scummvm-rg350-9187172fe2f771b1d2036b231170446008631a98.tar.bz2
scummvm-rg350-9187172fe2f771b1d2036b231170446008631a98.zip
implemented V8 kernel function 'killAllScriptsButMe' - not sure if I did it right, though
svn-id: r6145
-rw-r--r--scumm/script.cpp8
-rw-r--r--scumm/script_v8.cpp1
-rw-r--r--scumm/scumm.h1
3 files changed, 10 insertions, 0 deletions
diff --git a/scumm/script.cpp b/scumm/script.cpp
index 2613acc3b1..1c161732b2 100644
--- a/scumm/script.cpp
+++ b/scumm/script.cpp
@@ -748,6 +748,14 @@ void Scumm::killScriptsAndResources()
}
}
+void Scumm::killAllScriptsExceptCurrent()
+{
+ for (int i = 1; i < NUM_SCRIPT_SLOT; i++) {
+ if (i != _currentScript)
+ vm.slot[i].status = ssDead;
+ }
+}
+
void Scumm::checkAndRunSentenceScript()
{
int i;
diff --git a/scumm/script_v8.cpp b/scumm/script_v8.cpp
index 37f45a83eb..f3cc78e95d 100644
--- a/scumm/script_v8.cpp
+++ b/scumm/script_v8.cpp
@@ -1239,6 +1239,7 @@ void Scumm_v8::o6_kernelSetFunctions()
break;
case 30: // killAllScriptsButMe
warning("o6_kernelSetFunctions: killAllScriptsButMe()");
+ killAllScriptsExceptCurrent();
break;
case 31: // stopAllVideo
warning("o6_kernelSetFunctions: stopAllVideo()");
diff --git a/scumm/scumm.h b/scumm/scumm.h
index 0045ab11e7..1414ad16f2 100644
--- a/scumm/scumm.h
+++ b/scumm/scumm.h
@@ -506,6 +506,7 @@ public:
void beginOverride();
void endOverride();
+ void killAllScriptsExceptCurrent();
void killScriptsAndResources();
void checkAndRunSentenceScript();
void decreaseScriptDelay(int amount);