diff options
author | johndoe123 | 2014-03-21 17:21:55 +0100 |
---|---|---|
committer | Eugene Sandulenko | 2018-07-20 06:43:33 +0000 |
commit | 762be35a364fe66359d29b85b650c6e7add80e47 (patch) | |
tree | 61a1d7dd5849f7d79f961f4f46ce77036a88ade9 /engines/illusions/scriptman.cpp | |
parent | 43cd806f17377d5244e575b863519f013e5f033c (diff) | |
download | scummvm-rg350-762be35a364fe66359d29b85b650c6e7add80e47.tar.gz scummvm-rg350-762be35a364fe66359d29b85b650c6e7add80e47.tar.bz2 scummvm-rg350-762be35a364fe66359d29b85b650c6e7add80e47.zip |
ILLUSIONS: Add more script opcodes and fix/add stuff along the way
- Unload backgrounds
- Add transparent sprite drawing
- Add AbortableThread
Diffstat (limited to 'engines/illusions/scriptman.cpp')
-rw-r--r-- | engines/illusions/scriptman.cpp | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/engines/illusions/scriptman.cpp b/engines/illusions/scriptman.cpp index 527c0a5f3e..2ba39c7ae5 100644 --- a/engines/illusions/scriptman.cpp +++ b/engines/illusions/scriptman.cpp @@ -21,6 +21,7 @@ */ #include "illusions/illusions.h" +#include "illusions/abortablethread.h" #include "illusions/actor.h" #include "illusions/scriptman.h" #include "illusions/scriptthread.h" @@ -171,6 +172,15 @@ uint32 ScriptMan::startTimerThread(uint32 duration, uint32 threadId) { return newTimerThread(duration, threadId, false); } +uint32 ScriptMan::startAbortableThread(byte *scriptCodeIp1, byte *scriptCodeIp2, uint32 callingThreadId) { + debug("Starting abortable thread"); + uint32 tempThreadId = newTempThreadId(); + uint32 scriptThreadId = startTempScriptThread(scriptCodeIp1, tempThreadId, 0, 0, 0); + AbortableThread *abortableThread = new AbortableThread(_vm, tempThreadId, callingThreadId, 0, scriptThreadId, scriptCodeIp2); + _threads->startThread(abortableThread); + return tempThreadId; +} + void ScriptMan::setCurrFontId(uint32 fontId) { _fontId = fontId; } @@ -198,7 +208,7 @@ void ScriptMan::exitScene(uint32 threadId) { _threads->terminateThreadsByTag(sceneId, threadId); _vm->_controls->destroyControlsByTag(sceneId); // TODO causeFunc_removeBySceneId(sceneId); - // TODO _vm->_resSys->unloadResourceByTag(sceneId); + _vm->_resSys->unloadResourcesByTag(sceneId); _activeScenes.pop(); } |