diff options
author | Retro-Junk | 2016-08-14 19:33:27 +0300 |
---|---|---|
committer | Eugene Sandulenko | 2016-08-14 21:43:42 +0200 |
commit | b670c02835f52673064cce9b025a353ca8fe82ce (patch) | |
tree | 01d0addd301a1fded5613e2f4d9a41542812d77d /engines/fullpipe | |
parent | 35a1ad3463a5acc7003572b5dfdb488e77f218df (diff) | |
download | scummvm-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')
-rw-r--r-- | engines/fullpipe/motion.cpp | 37 |
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); |