diff options
author | Eugene Sandulenko | 2013-11-14 23:57:01 +0200 |
---|---|---|
committer | Eugene Sandulenko | 2013-11-14 23:57:32 +0200 |
commit | 228c1af0f62eb706485519e45373621c4a9dc450 (patch) | |
tree | 9b96ebef6cde62fe02fed1d1ab02a510184beaca /engines/fullpipe/motion.cpp | |
parent | 8b9d4348f8e590de5693f6dd2ea0df0f5a4e445a (diff) | |
download | scummvm-rg350-228c1af0f62eb706485519e45373621c4a9dc450.tar.gz scummvm-rg350-228c1af0f62eb706485519e45373621c4a9dc450.tar.bz2 scummvm-rg350-228c1af0f62eb706485519e45373621c4a9dc450.zip |
FULLPIPE: MovGraph2::buildMovInfo1MessageQueue() implementation
Diffstat (limited to 'engines/fullpipe/motion.cpp')
-rw-r--r-- | engines/fullpipe/motion.cpp | 37 |
1 files changed, 15 insertions, 22 deletions
diff --git a/engines/fullpipe/motion.cpp b/engines/fullpipe/motion.cpp index ebb838e2fb..79bafb6ec2 100644 --- a/engines/fullpipe/motion.cpp +++ b/engines/fullpipe/motion.cpp @@ -670,31 +670,29 @@ MessageQueue *MovGraph2::buildMovInfo1MessageQueue(MovInfo1 *movInfo) { mq = new MessageQueue(g_fullpipe->globalMessageQueueList->compact()); for (int i = 0; i < movInfo->_itemsCount - 1; i++) { - v10 = movInfo->items[i + 1].subIndex; - - if (v10 != 10) { + if (movInfo->items[i + 1].subIndex != 10) { if (i >= movInfo->itemsCount - 2 || movInfo->items[i + 2].subIndex != 10) { - v17 = (char *)_items[1] + 16 * (v10 + 8); + v17 = (char *)_items[1] + 16 * (movInfo->items[i + 1].subIndex + 8); movinfo.flags = 0; subidx = 8 * 93 * movInfo->field_0; v15 = (MovGraph2Item *)(&v17[184 * movInfo->items[i].subIndex] + subidx); } else { - v12 = (char *)_items[1] + 16 * (v10 + 4); + v12 = (char *)_items[1] + 16 * (movInfo->items[i + 1].subIndex + 4); movinfo.flags = 2; subidx = 8 * 93 * movInfo->field_0; v15 = (MovGraph2Item *)(&v12[184 * movInfo->items[i].subIndex] + subidx); } if (i < movInfo->itemsCount - 2 - || (v19 = movInfo->items[i + 1].x, v20 = (char *)&movInfo->items[i].x, v47 = (int *)v20, v21 = *(_DWORD *)v20, v21 == v19) - && movInfo->items[i].y == movInfo->items[i + 1].y - || v21 == -1 + || (movInfo->items[i].x == movInfo->items[i + 1].x + && movInfo->items[i].y == movInfo->items[i + 1].y) + || movInfo->items[i].x == -1 || movInfo->items[i].y == -1 - || v19 == -1 + || movInfo->items[i + 1].x == -1 || movInfo->items[i + 1].y == -1) { ExCommand *ex = new ExCommand(_items[1][movInfo->field_0].objectId, 1, v15->_objectId, 0, 0, 0, 1, 0, 0, 0); - ex->_excFlags |= 2u; + ex->_excFlags |= 2; ex->_keyCode = _items[1][movInfo->field_0].obj->GameObject.okeyCode; ex->_field_24 = 1; ex->_field_14 = -1; @@ -705,17 +703,14 @@ MessageQueue *MovGraph2::buildMovInfo1MessageQueue(MovInfo1 *movInfo) { } else { memset(mgminfo, 0, sizeof(mgminfo)); - HIWORD(v22) = 0; - v23 = (Movement *)v15->obj; - mgminfo.ani = *(StaticANIObject **)((char *)&this->items[1]->obj + v14); - LOWORD(v22) = v23->staticsObj2->staticsId; - mgminfo.staticsId2 = v22; + mgminfo.ani = *(StaticANIObject **)((char *)&this->items[1]->obj + subidx); + mgminfo.staticsId2 = v15->obj->staticsObj2->staticsId; mgminfo.x1 = movInfo->items[i + 1].x; mgminfo.y1 = movInfo->items[i + 1].y; mgminfo.field_1C = movInfo->items[i + 1].field_C; - mgminfo.staticsId1 = v23->staticsObj1->staticsId; + mgminfo.staticsId1 = v15->obj->staticsObj1->staticsId; - mgminfo.x2 = *v47; + mgminfo.x2 = movInfo->items[i].x; mgminfo.y2 = movInfo->items[i].y; mgminfo.field_10 = 1; mgminfo.flags = 0x7f; @@ -724,12 +719,10 @@ MessageQueue *MovGraph2::buildMovInfo1MessageQueue(MovInfo1 *movInfo) { v25 = (MessageQueue *)MGM_sub_445330((MGM *)&this->movGraph.mgm, &mgminfo); mq->transferExCommands(v25); - if (v25) - (*(void (__thiscall **)(MessageQueue *, signed int))(v25->CObject.vmt + 4))(v25, 1); + delete v25; - v26 = (MovInfo1Sub *)movInfo->items; - curX = v26[i + 1].x; - curY = v26[i + 1].y; + curX = movInfo->items[i + 1].x; + curY = movInfo->items[i + 1].y; } } else { movinfo.item1Index = movInfo->items[i].subIndex; |