diff options
-rw-r--r-- | engines/fullpipe/motion.cpp | 88 | ||||
-rw-r--r-- | engines/fullpipe/motion.h | 2 |
2 files changed, 43 insertions, 47 deletions
diff --git a/engines/fullpipe/motion.cpp b/engines/fullpipe/motion.cpp index 256d48afb6..ebb838e2fb 100644 --- a/engines/fullpipe/motion.cpp +++ b/engines/fullpipe/motion.cpp @@ -670,34 +670,29 @@ MessageQueue *MovGraph2::buildMovInfo1MessageQueue(MovInfo1 *movInfo) { mq = new MessageQueue(g_fullpipe->globalMessageQueueList->compact()); for (int i = 0; i < movInfo->_itemsCount - 1; i++) { - v9 = (MovInfo1Sub *)movInfo->items; - v10 = v9[i + 1].subIndex; + v10 = movInfo->items[i + 1].subIndex; if (v10 != 10) { - if (i >= movInfo->_itemsCount - 2 || v9[i + 2].subIndex != 10) { - v16 = v9[i].subIndex; + if (i >= movInfo->itemsCount - 2 || movInfo->items[i + 2].subIndex != 10) { v17 = (char *)_items[1] + 16 * (v10 + 8); - subidx = 93 * movInfo->field_0; movinfo.flags = 0; - v14 = 8 * subidx; - v15 = (MovGraph2Item *)(&v17[184 * v16] + v14); + subidx = 8 * 93 * movInfo->field_0; + v15 = (MovGraph2Item *)(&v17[184 * movInfo->items[i].subIndex] + subidx); } else { - v11 = v9[i].subIndex; v12 = (char *)_items[1] + 16 * (v10 + 4); - v13 = 93 * movInfo->field_0; movinfo.flags = 2; - v14 = 8 * v13; - v15 = (MovGraph2Item *)(&v12[184 * v11] + v14); + subidx = 8 * 93 * movInfo->field_0; + v15 = (MovGraph2Item *)(&v12[184 * movInfo->items[i].subIndex] + subidx); } - if (i < movInfo->_itemsCount - 2 - || (v19 = v9[i + 1].x, v20 = (char *)&v9[i].x, v47 = (int *)v20, v21 = *(_DWORD *)v20, v21 == v19) - && v9[i].y == v9[i + 1].y + 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 - || v9[i].y == -1 + || movInfo->items[i].y == -1 || v19 == -1 - || v9[i + 1].y == -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); + ExCommand *ex = new ExCommand(_items[1][movInfo->field_0].objectId, 1, v15->_objectId, 0, 0, 0, 1, 0, 0, 0); ex->_excFlags |= 2u; ex->_keyCode = _items[1][movInfo->field_0].obj->GameObject.okeyCode; @@ -705,29 +700,29 @@ MessageQueue *MovGraph2::buildMovInfo1MessageQueue(MovInfo1 *movInfo) { ex->_field_14 = -1; mq->_exCommands.push_back(ex); - curX += v15->subItems[0].staticsId2; - curY += v15->subItems[0].staticsId1; + curX += v15->_subItems[0].staticsId2; + curY += v15->_subItems[0].staticsId1; } else { memset(mgminfo, 0, sizeof(mgminfo)); - HIWORD(v22) = 0a; - v23 = v15->obj; + HIWORD(v22) = 0; + v23 = (Movement *)v15->obj; mgminfo.ani = *(StaticANIObject **)((char *)&this->items[1]->obj + v14); - LOWORD(v22) = *(_WORD *)(v23->callback1 + 132); + LOWORD(v22) = v23->staticsObj2->staticsId; mgminfo.staticsId2 = v22; - mgminfo.x1 = v9[i + 1].x; - mgminfo.y1 = v9[i + 1].y; - mgminfo.field_1C = v9[i + 1].field_C; - mgminfo.staticsId1 = *(_WORD *)(v23->initialCounter + 132); + 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.x2 = *v47; - v24 = v15->objectId; - mgminfo.y2 = v9[i].y; + mgminfo.y2 = movInfo->items[i].y; mgminfo.field_10 = 1; - mgminfo.flags = 127; - mgminfo.movementId = v24; + mgminfo.flags = 0x7f; + mgminfo.movementId = v15->_objectId; v25 = (MessageQueue *)MGM_sub_445330((MGM *)&this->movGraph.mgm, &mgminfo); - MessageQueue_transferExCommands(mq, v25); + mq->transferExCommands(v25); if (v25) (*(void (__thiscall **)(MessageQueue *, signed int))(v25->CObject.vmt + 4))(v25, 1); @@ -737,33 +732,34 @@ MessageQueue *MovGraph2::buildMovInfo1MessageQueue(MovInfo1 *movInfo) { curY = v26[i + 1].y; } } else { - movinfo.item1Index = v9[i].subIndex; + movinfo.item1Index = movInfo->items[i].subIndex; movinfo.subIndex = movinfo.item1Index; movinfo.pt1.y = curY; movinfo.pt1.x = curX; + movinfo.distance1 = curDistance; - movinfo.pt2.x = v9[i + 2].x; - movinfo.pt2.y = v9[i + 2].y; - movinfo.distance2 = v9[i + 2].field_C; - - if (i >= movInfo->_itemsCount - 4 - || v9[i + 2].subIndex == 10 - || v9[i + 3].subIndex == 10 - || v9[i + 2].subIndex == v9[i + 3].subIndex - || v9[i + 4].subIndex != 10) { + movinfo.pt2.x = movInfo->items[i + 2].x; + movinfo.pt2.y = movInfo->items[i + 2].y; + movinfo.distance2 = movInfo->items[i + 2].field_C; + + if (i >= movInfo->itemsCount - 4 + || movInfo->items[i + 2].subIndex == 10 + || movInfo->items[i + 3].subIndex == 10 + || movInfo->items[i + 2].subIndex == movInfo->items[i + 3].subIndex + || movInfo->items[i + 4].subIndex != 10) { if (i >= movInfo->itemsCount - 3 - || v9[i + 2].subIndex == 10 - || v9[i + 3].subIndex == 10 - || v9[i + 2].subIndex == v9[i + 3].subIndex) { + || movInfo->items[i + 2].subIndex == 10 + || movInfo->items[i + 3].subIndex == 10 + || movInfo->items[i + 2].subIndex == movInfo->items[i + 3].subIndex) { movinfo.flags &= 3; } else { - v35 = (MovInfo1 *)((char *)&_items[1][movInfo->field_0] + 184 * v9[i + 2].subIndex + 16 * (v9[i + 3].subIndex + 8)); + v35 = (MovInfo1 *)((char *)&_items[1][movInfo->field_0] + 184 * movInfo->items[i + 2].subIndex + 16 * (movInfo->items[i + 3].subIndex + 8)); movinfo.pt2.x -= v35->pt1.y; movinfo.pt2.y -= v35->pt2.x; movinfo.flags &= 3; } } else { - v32 = (MovInfo1 *)((char *)&_items[1][movInfo->field_0] + 184 * v9[i + 2].subIndex + 16 * (v9[i + 3].subIndex + 4)); + v32 = (MovInfo1 *)((char *)&_items[1][movInfo->field_0] + 184 * movInfo->items[i + 2].subIndex + 16 * (movInfo->items[i + 3].subIndex + 4)); if (movinfo.item1Index && movinfo.item1Index != 1) { movinfo.pt2.y -= v32->pt2.x; diff --git a/engines/fullpipe/motion.h b/engines/fullpipe/motion.h index b79e66decb..0df520ce4a 100644 --- a/engines/fullpipe/motion.h +++ b/engines/fullpipe/motion.h @@ -306,7 +306,7 @@ struct MovInfo1 { struct MovGraph2Item { int _objectId; StaticANIObject *_obj; - MovGraph2ItemSub _subItems[4]; + MovGraph2ItemSub _subItems[4]; // 184 }; class MovGraph2 : public MovGraph { |