diff options
author | Eugene Sandulenko | 2013-08-02 02:04:03 +0300 |
---|---|---|
committer | Eugene Sandulenko | 2013-09-06 14:51:09 +0300 |
commit | c78803db2d38afed1cd0a55aff5b599c7441172c (patch) | |
tree | 05719b209aa0db85b580ef87b47e5a2370d20d09 /engines/fullpipe/messages.cpp | |
parent | 9232315880633e66f99e874623446664ca262719 (diff) | |
download | scummvm-rg350-c78803db2d38afed1cd0a55aff5b599c7441172c.tar.gz scummvm-rg350-c78803db2d38afed1cd0a55aff5b599c7441172c.tar.bz2 scummvm-rg350-c78803db2d38afed1cd0a55aff5b599c7441172c.zip |
FULLPIPE: Unstubbed ExCommand::handleMessage()
Diffstat (limited to 'engines/fullpipe/messages.cpp')
-rw-r--r-- | engines/fullpipe/messages.cpp | 38 |
1 files changed, 36 insertions, 2 deletions
diff --git a/engines/fullpipe/messages.cpp b/engines/fullpipe/messages.cpp index ee9210f066..e7b317116c 100644 --- a/engines/fullpipe/messages.cpp +++ b/engines/fullpipe/messages.cpp @@ -79,8 +79,23 @@ bool ExCommand::load(MfcArchive &file) { return true; } -void ExCommand::handleMessage() { - warning("STUB: ExCommand::handleMessage()"); +bool ExCommand::handleMessage() { + int cnt = 0; + for (MessageHandler *m = g_fullpipe->_messageHandlers; m; m = m->nextItem) + cnt += m->callback(this); + + if (_messageKind == 17 || (_excFlags & 1)) { + if (_parId) { + MessageQueue *m = g_fullpipe->_globalMessageQueueList->getMessageQueueById(_parId); + if (m) + m->update(); + } + } + + if (_excFlags & 2) + delete this; + + return (cnt > 0); } Message::Message() { @@ -213,6 +228,25 @@ bool MessageQueue::chain(StaticANIObject *ani) { return true; } +void MessageQueue::update() { + if (_counter > 0) + _counter--; + + if (_exCommands.size()) { + sendNextCommand(); + } else if (_counter == 0 ) { + _isFinished = 1; + finish(); + } +} + +void MessageQueue::sendNextCommand() { + warning("STUB: MessageQueue::sendNextCommand()"); +} + +void MessageQueue::finish() { + warning("STUB: MessageQueue::finish()"); +} MessageQueue *GlobalMessageQueueList::getMessageQueueById(int id) { for (CPtrList::iterator s = begin(); s != end(); ++s) { |