diff options
author | johndoe123 | 2014-04-01 11:22:58 +0200 |
---|---|---|
committer | Eugene Sandulenko | 2018-07-20 06:43:33 +0000 |
commit | d77d4ed4a61d79ffc75bb9dbdab01157da387a13 (patch) | |
tree | bcf62f7f9ce9b3dd8a95cca16fe96bfc22d8ff66 /engines/illusions/thread.cpp | |
parent | f2c48e3ae0e5775da6f3dcac841414cf8b5379ef (diff) | |
download | scummvm-rg350-d77d4ed4a61d79ffc75bb9dbdab01157da387a13.tar.gz scummvm-rg350-d77d4ed4a61d79ffc75bb9dbdab01157da387a13.tar.bz2 scummvm-rg350-d77d4ed4a61d79ffc75bb9dbdab01157da387a13.zip |
ILLUSIONS: Fix bug which occured when trying to walk while talking
- Fix minor bugs
- Work on talk thread handling
Diffstat (limited to 'engines/illusions/thread.cpp')
-rw-r--r-- | engines/illusions/thread.cpp | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/engines/illusions/thread.cpp b/engines/illusions/thread.cpp index 38e69007c0..980a8afc4b 100644 --- a/engines/illusions/thread.cpp +++ b/engines/illusions/thread.cpp @@ -22,6 +22,7 @@ #include "illusions/illusions.h" #include "illusions/thread.h" +#include "illusions/actor.h" namespace Illusions { @@ -55,7 +56,7 @@ void Thread::onTerminated() { } void Thread::onKill() { - // TODO artmgrThreadIsDead(thread->threadId); + _vm->_controls->threadIsDead(_threadId); terminate(); } @@ -110,11 +111,11 @@ int Thread::update() { void Thread::terminate() { if (!_terminated) { - if (!(_notifyFlags & 1)) + if (!(_notifyFlags & 1)) { _vm->notifyThreadId(_callingThreadId); + } _callingThreadId = 0; onTerminated(); - // TODO _vm->removeThread(_threadId, this); _terminated = true; } } @@ -128,7 +129,6 @@ ThreadList::ThreadList(IllusionsEngine *vm) void ThreadList::startThread(Thread *thread) { // TODO tag has to be set by the Thread class scrmgrGetCurrentScene(); _threads.push_back(thread); - // TODO _vm->addThread(thread->_threadId, thread); } void ThreadList::updateThreads() { @@ -246,6 +246,14 @@ void ThreadList::endTalkThreads() { } } +void ThreadList::endTalkThreadsNoNotify() { + for (Iterator it = _threads.begin(); it != _threads.end(); ++it) { + Thread *thread = *it; + if (thread->_type == kTTTalkThread && thread->_callingThreadId == 0) + thread->terminate(); + } +} + void ThreadList::killThread(uint32 threadId) { if (!threadId) |