aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEugene Sandulenko2014-05-15 12:34:55 +0200
committerEugene Sandulenko2014-05-15 12:34:55 +0200
commit230e7713217603de711cf098977daba108cb3087 (patch)
treeede403353b926e016805675ab9278b41a73a4ccb
parentdf0d8bf8746436dcc3ca79829e77aa8e08205884 (diff)
downloadscummvm-rg350-230e7713217603de711cf098977daba108cb3087.tar.gz
scummvm-rg350-230e7713217603de711cf098977daba108cb3087.tar.bz2
scummvm-rg350-230e7713217603de711cf098977daba108cb3087.zip
FULLPIPE: Implement MovGraph::doWalkTo()
-rw-r--r--engines/fullpipe/gfx.cpp1
-rw-r--r--engines/fullpipe/motion.cpp17
-rw-r--r--engines/fullpipe/motion.h2
3 files changed, 9 insertions, 11 deletions
diff --git a/engines/fullpipe/gfx.cpp b/engines/fullpipe/gfx.cpp
index b4eba44a64..520e81835b 100644
--- a/engines/fullpipe/gfx.cpp
+++ b/engines/fullpipe/gfx.cpp
@@ -398,6 +398,7 @@ bool GameObject::getPicAniInfo(PicAniInfo *info) {
info->ox = _ox;
info->oy = _oy;
info->priority = _priority;
+ warning("Yep %d", _id);
return true;
}
diff --git a/engines/fullpipe/motion.cpp b/engines/fullpipe/motion.cpp
index b9fdc43286..b5e0f67a58 100644
--- a/engines/fullpipe/motion.cpp
+++ b/engines/fullpipe/motion.cpp
@@ -628,7 +628,6 @@ int MovGraph::method44() {
}
MessageQueue *MovGraph::doWalkTo(StaticANIObject *subj, int xpos, int ypos, int fuzzyMatch, int staticsId) {
-#if 0
PicAniInfo picAniInfo;
int ss;
@@ -641,7 +640,7 @@ MessageQueue *MovGraph::doWalkTo(StaticANIObject *subj, int xpos, int ypos, int
int idx = getItemIndexByStaticAni(subj);
for (uint i = 0; i < _items[idx]->count; i++) {
- if (_items[idx]->items[i].movarr == goal) {
+ if ((*_items[idx]->items[i].movarr)[0] == goal) {
if (subj->_movement) {
Common::Point point;
@@ -671,7 +670,7 @@ MessageQueue *MovGraph::doWalkTo(StaticANIObject *subj, int xpos, int ypos, int
if (_items[idx]->count > 0) {
int arridx = 0;
- while (_items[idx]->items[arridx].movarr != goal) {
+ while ((*_items[idx]->items[arridx].movarr)[0] != goal) {
arridx++;
if (arridx >= _items[idx]->count) {
@@ -682,16 +681,16 @@ MessageQueue *MovGraph::doWalkTo(StaticANIObject *subj, int xpos, int ypos, int
_items[idx]->movarr->clear();
- for (uint i = 0; i < _items[idx]->items[arridx].movarr->_movStepCount; i++) {
+ for (uint i = 0; i < (*_items[idx]->items[arridx].movarr)[i]->_movStepCount; i++) {
MovArr *m = new MovArr;
- *m = *_items[idx]->items[arridx].movarr[i];
+ *m = *(*_items[idx]->items[arridx].movarr)[i];
}
_items[idx]->field_10 = -1;
_items[idx]->field_14 = 0;
- MessageQueue *mq = fillMGMinfo(_items[idx]->ani, _items[idx]->movarr, staticsId);
+ MessageQueue *mq = fillMGMinfo(_items[idx]->ani, (*_items[idx]->movarr)[0], staticsId);
if (mq) {
ExCommand *ex = new ExCommand();
ex->_messageKind = 17;
@@ -709,10 +708,6 @@ MessageQueue *MovGraph::doWalkTo(StaticANIObject *subj, int xpos, int ypos, int
subj->setPicAniInfo(&picAniInfo);
return 0;
-#endif
- warning("STUB: MovGraph::doWalkTo()");
-
- return 0;
}
MessageQueue *MovGraph::sub1(StaticANIObject *ani, int x, int y, int a5, int x1, int y1, int a8, int a9) {
@@ -1517,6 +1512,8 @@ MessageQueue *MovGraph2::doWalkTo(StaticANIObject *obj, int xpos, int ypos, int
obj->getPicAniInfo(&picAniInfo);
+ warning("p: %d %d", picAniInfo.movementId, picAniInfo.objectId);
+
int idxsub;
if (obj->_movement)
diff --git a/engines/fullpipe/motion.h b/engines/fullpipe/motion.h
index 3ef62a75b3..1b49839e0d 100644
--- a/engines/fullpipe/motion.h
+++ b/engines/fullpipe/motion.h
@@ -315,7 +315,7 @@ struct MovArr {
};
struct MovItem {
- MovArr *movarr;
+ Common::Array<MovArr *> *movarr;
int _mfield_4;
int _mfield_8;
int _mfield_C;