aboutsummaryrefslogtreecommitdiff
path: root/engines/illusions/scriptman.cpp
diff options
context:
space:
mode:
authorjohndoe1232014-03-20 14:16:48 +0100
committerEugene Sandulenko2018-07-20 06:43:33 +0000
commit43cd806f17377d5244e575b863519f013e5f033c (patch)
tree089f4367800ac59a51d23cbaeea9958e554b6a23 /engines/illusions/scriptman.cpp
parentf47575ca906682bab942d19a36cc33ea7465a4b2 (diff)
downloadscummvm-rg350-43cd806f17377d5244e575b863519f013e5f033c.tar.gz
scummvm-rg350-43cd806f17377d5244e575b863519f013e5f033c.tar.bz2
scummvm-rg350-43cd806f17377d5244e575b863519f013e5f033c.zip
ILLUSIONS: Add more script opcodes
Diffstat (limited to 'engines/illusions/scriptman.cpp')
-rw-r--r--engines/illusions/scriptman.cpp22
1 files changed, 22 insertions, 0 deletions
diff --git a/engines/illusions/scriptman.cpp b/engines/illusions/scriptman.cpp
index d94a32316a..527c0a5f3e 100644
--- a/engines/illusions/scriptman.cpp
+++ b/engines/illusions/scriptman.cpp
@@ -21,6 +21,7 @@
*/
#include "illusions/illusions.h"
+#include "illusions/actor.h"
#include "illusions/scriptman.h"
#include "illusions/scriptthread.h"
#include "illusions/scriptopcodes.h"
@@ -116,6 +117,10 @@ int16 ScriptStack::peek() {
return value;
}
+int16 *ScriptStack::topPtr() {
+ return &_stack[_stackPos];
+}
+
// ScriptMan
ScriptMan::ScriptMan(IllusionsEngine *vm)
@@ -170,6 +175,12 @@ void ScriptMan::setCurrFontId(uint32 fontId) {
_fontId = fontId;
}
+void ScriptMan::reset() {
+ // TODO _scriptResource->_blockCounters.clear();
+ // TODO _scriptResource->_properties.clear();
+ // TODO script_sub_417FF0(1, 0);
+}
+
bool ScriptMan::enterScene(uint32 sceneId, uint32 threadId) {
ProgInfo *progInfo = _scriptResource->getProgInfo(sceneId & 0xFFFF);
if (!progInfo) {
@@ -180,6 +191,17 @@ bool ScriptMan::enterScene(uint32 sceneId, uint32 threadId) {
return progInfo != 0;
}
+void ScriptMan::exitScene(uint32 threadId) {
+ uint32 sceneId = _activeScenes.getCurrentScene();
+ // TODO krnfileDump(sceneId);
+ // TODO UpdateFunctions_disableByTag__TODO_maybe(sceneId);
+ _threads->terminateThreadsByTag(sceneId, threadId);
+ _vm->_controls->destroyControlsByTag(sceneId);
+ // TODO causeFunc_removeBySceneId(sceneId);
+ // TODO _vm->_resSys->unloadResourceByTag(sceneId);
+ _activeScenes.pop();
+}
+
void ScriptMan::newScriptThread(uint32 threadId, uint32 callingThreadId, uint notifyFlags,
byte *scriptCodeIp, uint32 value8, uint32 valueC, uint32 value10) {
ScriptThread *scriptThread = new ScriptThread(_vm, threadId, callingThreadId, notifyFlags,