aboutsummaryrefslogtreecommitdiff
path: root/engines/fullpipe/messages.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/fullpipe/messages.cpp')
-rw-r--r--engines/fullpipe/messages.cpp54
1 files changed, 32 insertions, 22 deletions
diff --git a/engines/fullpipe/messages.cpp b/engines/fullpipe/messages.cpp
index a7337b98ed..a9fc5210a3 100644
--- a/engines/fullpipe/messages.cpp
+++ b/engines/fullpipe/messages.cpp
@@ -57,18 +57,18 @@ ExCommand::ExCommand(int16 parentId, int messageKind, int messageNum, int x, int
}
bool ExCommand::load(MfcArchive &file) {
- debug(5, "ExCommand::load()");
+ debugC(5, kDebugLoading, "ExCommand::load()");
_parentId = file.readUint16LE();
_messageKind = file.readUint32LE();
- _x = file.readUint32LE();
- _y = file.readUint32LE();
+ _x = file.readSint32LE();
+ _y = file.readSint32LE();
_field_14 = file.readUint32LE();
_sceneClickX = file.readUint32LE();
_sceneClickY = file.readUint32LE();
_field_20 = file.readUint32LE();
_field_24 = file.readUint32LE();
- _keyCode = file.readUint32LE();
+ _param = file.readUint32LE();
_field_2C = file.readUint32LE();
_field_30 = file.readUint32LE();
_field_34 = file.readUint32LE();
@@ -135,7 +135,7 @@ void ExCommand::setf3c(int val) {
void ExCommand::firef34() {
if (_field_34) {
- if (_field_3C >= _keyCode) {
+ if (_field_3C >= _param) {
_field_34 = 0;
sendMessage();
@@ -192,7 +192,7 @@ Message::Message() {
_sceneClickY = 0;
_field_20 = 0;
_field_24 = 0;
- _keyCode = 0;
+ _param = 0;
_field_2C = 0;
_field_30 = 0;
_field_34 = 0;
@@ -208,7 +208,7 @@ Message::Message(Message *src) {
_sceneClickY = src->_sceneClickY;
_field_20 = src->_field_20;
_field_24 = src->_field_24;
- _keyCode = src->_keyCode;
+ _param = src->_param;
_field_2C = src->_field_2C;
_field_30 = src->_field_30;
_field_34 = src->_field_34;
@@ -224,7 +224,7 @@ Message::Message(int16 parentId, int messageKind, int x, int y, int a6, int a7,
_sceneClickY = sceneClickY;
_field_24 = a7;
_field_20 = a10;
- _keyCode = 0;
+ _param = 0;
_field_2C = 0;
_field_30 = 0;
_field_34 = 0;
@@ -233,11 +233,13 @@ Message::Message(int16 parentId, int messageKind, int x, int y, int a6, int a7,
ObjstateCommand::ObjstateCommand() {
_value = 0;
_objCommandName = 0;
+ _objtype = kObjTypeObjstateCommand;
}
ObjstateCommand::ObjstateCommand(ObjstateCommand *src) : ExCommand(src) {
_value = src->_value;
_objCommandName = (char *)calloc(strlen(src->_objCommandName) + 1, 1);
+ _objtype = kObjTypeObjstateCommand;
strncpy(_objCommandName, src->_objCommandName, strlen(src->_objCommandName));
}
@@ -247,7 +249,7 @@ ObjstateCommand::~ObjstateCommand() {
}
bool ObjstateCommand::load(MfcArchive &file) {
- debug(5, "ObjStateCommand::load()");
+ debugC(5, kDebugLoading, "ObjStateCommand::load()");
_objtype = kObjTypeObjstateCommand;
@@ -341,7 +343,7 @@ MessageQueue::~MessageQueue() {
}
bool MessageQueue::load(MfcArchive &file) {
- debug(5, "MessageQueue::load()");
+ debugC(5, kDebugLoading, "MessageQueue::load()");
_dataId = file.readUint16LE();
@@ -457,7 +459,7 @@ void MessageQueue::deleteExCommandByIndex(uint idx, bool doFree) {
_exCommands.erase(it);
}
-void MessageQueue::transferExCommands(MessageQueue *mq) {
+void MessageQueue::mergeQueue(MessageQueue *mq) { // Original belongs to AniHandler
while (mq->_exCommands.size()) {
_exCommands.push_back(mq->_exCommands.front());
mq->_exCommands.pop_front();
@@ -500,7 +502,10 @@ bool MessageQueue::checkGlobalExCommandList1() {
if (ex1->_messageKind != 1 && ex1->_messageKind != 20 && ex1->_messageKind != 5 && ex1->_messageKind != 27)
continue;
- if (ex1->_keyCode != ex->_keyCode && ex1->_keyCode != -1 && ex->_keyCode != -1)
+ if (ex1->_parentId != ex->_parentId)
+ continue;
+
+ if (ex1->_param != ex->_param && ex1->_param != -1 && ex->_param != -1)
continue;
MessageQueue *mq = g_fp->_globalMessageQueueList->getMessageQueueById(ex1->_parId);
@@ -531,7 +536,12 @@ bool MessageQueue::checkGlobalExCommandList2() {
continue;
}
- if (ex1->_keyCode != ex->_keyCode && ex1->_keyCode != -1 && ex->_keyCode != -1) {
+ if (ex1->_parentId != ex->_parentId) {
+ it++;
+ continue;
+ }
+
+ if (ex1->_param != ex->_param && ex1->_param != -1 && ex->_param != -1) {
it++;
continue;
}
@@ -577,14 +587,14 @@ void MessageQueue::finish() {
mq->update();
}
-void MessageQueue::replaceKeyCode(int key1, int key2) {
+void MessageQueue::setParamInt(int key1, int key2) {
for (uint i = 0; i < getCount(); i++) {
ExCommand *ex = getExCommandByIndex(i);
int k = ex->_messageKind;
if ((k == 1 || k == 20 || k == 5 || k == 6 || k == 2 || k == 18 || k == 19 || k == 22 || k == 55)
- && ex->_keyCode == key1)
- ex->_keyCode = key2;
- }
+ && ex->_param == key1)
+ ex->_param = key2;
+ }
}
int MessageQueue::calcDuration(StaticANIObject *obj) {
@@ -615,10 +625,10 @@ void MessageQueue::changeParam28ForObjectId(int objId, int oldParam28, int newPa
int k = ex->_messageKind;
if ((k == 1 || k == 20 || k == 5 || k == 6 || k == 2 || k == 18 || k == 19 || k == 22 || k == 55)
- && ex->_keyCode == oldParam28
+ && ex->_param == oldParam28
&& ex->_parentId == objId)
- ex->_keyCode = newParam28;
- }
+ ex->_param = newParam28;
+ }
}
int MessageQueue::activateExCommandsByKind(int kind) {
@@ -682,7 +692,7 @@ int GlobalMessageQueueList::compact() {
useList[i] = 0;
for (uint i = 0; i < size();) {
- if (((MessageQueue *)_storage[i])->_isFinished) {
+ if (_storage[i]->_isFinished) {
disableQueueById(_storage[i]->_id);
remove_at(i);
} else {
@@ -962,7 +972,7 @@ bool chainObjQueue(StaticANIObject *obj, int queueId, int flags) {
void postExCommand(int parentId, int keyCode, int x, int y, int f20, int f14) {
ExCommand *ex = new ExCommand(parentId, 17, 64, 0, 0, 0, 1, 0, 0, 0);
- ex->_keyCode = keyCode;
+ ex->_param = keyCode;
ex->_excFlags |= 3;
ex->_x = x;
ex->_y = y;