aboutsummaryrefslogtreecommitdiff
path: root/engines/fullpipe/motion.cpp
diff options
context:
space:
mode:
authorRetro-Junk2016-08-14 19:33:27 +0300
committerEugene Sandulenko2016-08-14 21:43:42 +0200
commitb670c02835f52673064cce9b025a353ca8fe82ce (patch)
tree01d0addd301a1fded5613e2f4d9a41542812d77d /engines/fullpipe/motion.cpp
parent35a1ad3463a5acc7003572b5dfdb488e77f218df (diff)
downloadscummvm-rg350-b670c02835f52673064cce9b025a353ca8fe82ce.tar.gz
scummvm-rg350-b670c02835f52673064cce9b025a353ca8fe82ce.tar.bz2
scummvm-rg350-b670c02835f52673064cce9b025a353ca8fe82ce.zip
FULLPIPE: Rearrange code and fix flags initalization in MovGraph2::buildMovInfo1MessageQueue
Diffstat (limited to 'engines/fullpipe/motion.cpp')
-rw-r--r--engines/fullpipe/motion.cpp37
1 files changed, 20 insertions, 17 deletions
diff --git a/engines/fullpipe/motion.cpp b/engines/fullpipe/motion.cpp
index cb45ca45ba..590a83db3d 100644
--- a/engines/fullpipe/motion.cpp
+++ b/engines/fullpipe/motion.cpp
@@ -2042,23 +2042,12 @@ MessageQueue *MovGraph2::buildMovInfo1MessageQueue(MovInfo1 *movInfo) {
movinfo.pt2.y = movInfo->items[i + 2]->y;
movinfo.distance2 = movInfo->items[i + 2]->distance;
- 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
- || 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 {
- MG2I *m = &_items2[movInfo->index]->_subItems[movInfo->items[i + 2]->subIndex]._turnS[movInfo->items[i + 3]->subIndex];
- movinfo.pt2.x -= m->_mx;
- movinfo.pt2.y -= m->_my;
- movinfo.flags &= 3;
- }
- } else {
+ 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) {
+
MG2I *m = &_items2[movInfo->index]->_subItems[movInfo->items[i + 2]->subIndex]._turn[movInfo->items[i + 3]->subIndex];
if (movinfo.item1Index && movinfo.item1Index != 1) {
@@ -2068,7 +2057,21 @@ MessageQueue *MovGraph2::buildMovInfo1MessageQueue(MovInfo1 *movInfo) {
movinfo.pt2.x -= m->_mx;
movinfo.flags = (movinfo.flags & 2) | 1;
}
+
+ } else if (i < movInfo->itemsCount - 3
+ && movInfo->items[i + 2]->subIndex != 10
+ && movInfo->items[i + 3]->subIndex != 10
+ && movInfo->items[i + 2]->subIndex != movInfo->items[i + 3]->subIndex) {
+
+ MG2I *m = &_items2[movInfo->index]->_subItems[movInfo->items[i + 2]->subIndex]._turnS[movInfo->items[i + 3]->subIndex];
+ movinfo.pt2.x -= m->_mx;
+ movinfo.pt2.y -= m->_my;
+ movinfo.flags = (movinfo.flags & 2) | (movInfo->flags & 1);
+
+ } else {
+ movinfo.flags = (movinfo.flags & 2) | (movInfo->flags & 1);
}
+
i++; // intentional
MessageQueue *mq2 = genMovement(&movinfo);