diff options
author | Eugene Sandulenko | 2013-07-29 22:16:14 +0300 |
---|---|---|
committer | Eugene Sandulenko | 2013-09-06 14:51:08 +0300 |
commit | 56cb6bbd4523dd92bf3a4ad6b896363da887b9cd (patch) | |
tree | 91dd267c0aaa2b638fb1b615b2e3d08e1add23dd /engines/fullpipe/messages.cpp | |
parent | 8cceaae590792b8a96b295530288437b17b21437 (diff) | |
download | scummvm-rg350-56cb6bbd4523dd92bf3a4ad6b896363da887b9cd.tar.gz scummvm-rg350-56cb6bbd4523dd92bf3a4ad6b896363da887b9cd.tar.bz2 scummvm-rg350-56cb6bbd4523dd92bf3a4ad6b896363da887b9cd.zip |
FULLPIPE: Implemented CGameLoader::gotoScene()
Diffstat (limited to 'engines/fullpipe/messages.cpp')
-rw-r--r-- | engines/fullpipe/messages.cpp | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/engines/fullpipe/messages.cpp b/engines/fullpipe/messages.cpp index 6b07a4ef69..69b29dcef8 100644 --- a/engines/fullpipe/messages.cpp +++ b/engines/fullpipe/messages.cpp @@ -42,6 +42,14 @@ ExCommand::ExCommand(ExCommand *src) : Message(src) { } +ExCommand::ExCommand(int16 parentId, int messageKind, int messageNum, int x, int y, int a7, int a8, int sceneClickX, int sceneClickY, int a11) : + Message(parentId, messageKind, x, y, a7, a8, sceneClickX, sceneClickY, a11) { + _field_3C = 1; + _messageNum = messageNum; + _excFlags = 0; + _parId = 0; +} + bool ExCommand::load(MfcArchive &file) { debug(5, "ExCommand::load()"); @@ -103,6 +111,22 @@ Message::Message(Message *src) { _field_34 = src->_field_34; } +Message::Message(int16 parentId, int messageKind, int x, int y, int a6, int a7, int sceneClickX, int sceneClickY, int a10) { + _messageKind = messageKind; + _parentId = parentId; + _x = x; + _y = y; + _field_14 = a6; + _sceneClickX = sceneClickX; + _sceneClickY = sceneClickY; + _field_24 = a7; + _field_20 = a10; + _param28 = 0; + _field_2C = 0; + _field_30 = 0; + _field_34 = 0; +} + CObjstateCommand::CObjstateCommand() { _value = 0; } @@ -128,6 +152,32 @@ MessageQueue::MessageQueue() { _flags = 0; } +MessageQueue::MessageQueue(MessageQueue *src, int parId, int field_38) { + _counter = 0; + _field_38 = (field_38 == 0); + + for (uint i = 0; i < src->_exCommands.size(); i++) { + ExCommand *ex = new ExCommand((ExCommand *)src->_exCommands[i]); + ex->_excFlags |= 2; + + _exCommands.push_back(ex); + } + _field_14 = src->_field_14; + + if (parId) + _parId = parId; + else + _parId = src->_parId; + + _id = g_fullpipe->_globalMessageQueueList->compact(); + _dataId = src->_dataId; + _flags = src->_flags; + + g_fullpipe->_globalMessageQueueList->addMessageQueue(this); + + _isFinished = 0; +} + bool MessageQueue::load(MfcArchive &file) { debug(5, "MessageQueue::load()"); @@ -153,6 +203,13 @@ bool MessageQueue::load(MfcArchive &file) { return true; } +bool MessageQueue::chain(StaticANIObject *ani) { + warning("STUB: MessageQueue::chain()"); + + return true; +} + + MessageQueue *GlobalMessageQueueList::getMessageQueueById(int id) { for (CPtrList::iterator s = begin(); s != end(); ++s) { if (((MessageQueue *)s)->_id == id) @@ -179,6 +236,18 @@ void GlobalMessageQueueList::disableQueueById(int id) { } } +int GlobalMessageQueueList::compact() { + warning("STUB: GlobalMessageQueueList::compact()"); + + return 0; +} + +void GlobalMessageQueueList::addMessageQueue(MessageQueue *msg) { + msg->setFlags(msg->getFlags() | 2); + + push_back(msg); +} + bool removeMessageHandler(int16 id, int pos) { if (g_fullpipe->_messageHandlers) { MessageHandler *curItem = g_fullpipe->_messageHandlers; |