diff options
author | johndoe123 | 2014-03-20 14:16:48 +0100 |
---|---|---|
committer | Eugene Sandulenko | 2018-07-20 06:43:33 +0000 |
commit | 43cd806f17377d5244e575b863519f013e5f033c (patch) | |
tree | 089f4367800ac59a51d23cbaeea9958e554b6a23 /engines/illusions/scriptman.cpp | |
parent | f47575ca906682bab942d19a36cc33ea7465a4b2 (diff) | |
download | scummvm-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.cpp | 22 |
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, |