[Scummvm-cvs-logs] scummvm master -> d197bb04afa9be420d92b5d927d496ddc881d642
sev-
sev at scummvm.org
Sat May 24 10:17:50 CEST 2014
This automated email contains information about 4 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
c4f3f77d74 FULLPIPE: Further work on MovGraph::method50()
9f447e0ff4 FULLPIPE: Fix MovGraphItem structure
46d0e8b76c FULLPIPE: Finish MovGraph::method50() implementation
d197bb04af FULLPIPE: Simplify syntax
Commit: c4f3f77d74adb7a513819c7542dd1eed67badb95
https://github.com/scummvm/scummvm/commit/c4f3f77d74adb7a513819c7542dd1eed67badb95
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2014-05-24T11:17:03+03:00
Commit Message:
FULLPIPE: Further work on MovGraph::method50()
Changed paths:
engines/fullpipe/motion.cpp
engines/fullpipe/motion.h
diff --git a/engines/fullpipe/motion.cpp b/engines/fullpipe/motion.cpp
index ccd246f..cc248e1 100644
--- a/engines/fullpipe/motion.cpp
+++ b/engines/fullpipe/motion.cpp
@@ -738,7 +738,7 @@ bool MovGraph::method44(StaticANIObject *ani, int x, int y) {
int cnt = (*movarr)[0]->_movStepCount;
if (cnt > 0) {
- if ((*movarr)[0]->_movSteps[cnt - 1].link->_flags & 0x4000000)
+ if ((*movarr)[0]->_movSteps[cnt - 1]->link->_flags & 0x4000000)
return true;
}
}
@@ -851,13 +851,13 @@ MessageQueue *MovGraph::fillMGMinfo(StaticANIObject *ani, MovArr *movarr, int st
for (int i = 0; i < movarr->_movStepCount; i++) {
while (i < movarr->_movStepCount - 1) {
- if (movarr->_movSteps[i ].link->_dwordArray1[movarr->_movSteps[i - 1].sfield_0 + _field_44] !=
- movarr->_movSteps[i + 1].link->_dwordArray1[movarr->_movSteps[i ].sfield_0 + _field_44])
+ if (movarr->_movSteps[i ]->link->_dwordArray1[movarr->_movSteps[i - 1]->sfield_0 + _field_44] !=
+ movarr->_movSteps[i + 1]->link->_dwordArray1[movarr->_movSteps[i ]->sfield_0 + _field_44])
break;
i++;
}
- MovStep *st = &movarr->_movSteps[i];
+ MovStep *st = movarr->_movSteps[i];
ani->getMovementById(st->link->_dwordArray1[_field_44 + st->sfield_0]);
@@ -865,7 +865,7 @@ MessageQueue *MovGraph::fillMGMinfo(StaticANIObject *ani, MovArr *movarr, int st
id2 = staticsId;
} else {
if (i < movarr->_movStepCount - 1)
- id2 = ani->getMovementById(movarr->_movSteps[i + 1].link->_dwordArray1[_field_44 + st->sfield_0])->_staticsObj1->_staticsId;
+ id2 = ani->getMovementById(movarr->_movSteps[i + 1]->link->_dwordArray1[_field_44 + st->sfield_0])->_staticsObj1->_staticsId;
else
id2 = st->link->_dwordArray2[_field_44 + st->sfield_0];
}
@@ -955,18 +955,19 @@ MessageQueue *MovGraph::method50(StaticANIObject *ani, Common::Array<MovArr *> *
}
}
- v11 = this->_items;
- v12 = idx << 6;
- v13 = (*(MovItem **)((char *)&v11->movitems + v12))[movidx].movarr;
- if ( *(MovArr **)((char *)&v11->movarr + v12) )
- CObjectFree(*(void **)((char *)&v11->movarr + v12));
- memcpy((char *)&this->_items->movarr + v12, v13, 0x20u);
- *(MovArr **)((char *)&this->_items->movarr + v12) = (MovArr *)operator new(8 * v13->_movStepCount);
- memcpy(*(void **)((char *)&this->_items->movarr + v12), v13->_movSteps, 8 * v13->_movStepCount);
- *(int *)((char *)&this->_items->field_10 + v12) = -1;
- *(int *)((char *)&this->_items->field_14 + v12) = 0;
+ if (_items[idx]->movarr)
+ delete _items[idx]->movarr;
+
+ _items[idx]->movarr = _items[idx]->movitems[movidx].movarr;
+
+ _items[idx]->movarr->_movSteps.clear();
+ _items[idx]->movarr->_movSteps = _items[idx]->movitems[movidx].movarr->_movSteps;
+
+ _items[idx]->field_10 = -1;
+ _items[idx]->field_14 = 0;
+
+ MessageQueue *mq = fillMGMinfo(_items[idx]->ani, _items[idx]->movarr, 0);
- MessageQueue *mq = fillMGMinfo(*(StaticANIObject **)((char *)&this->_items->ani + v12), (MovArr *)((char *)&this->_items->movarr + v12), 0);
if (!mq)
return 0;
diff --git a/engines/fullpipe/motion.h b/engines/fullpipe/motion.h
index 6233174..dbd41b8 100644
--- a/engines/fullpipe/motion.h
+++ b/engines/fullpipe/motion.h
@@ -307,7 +307,7 @@ struct MovStep {
};
struct MovArr {
- MovStep *_movSteps;
+ Common::Array<MovStep *> _movSteps;
int _movStepCount;
int _afield_8;
MovGraphLink *_link;
Commit: 9f447e0ff4b5fa9ec407cf7fc4e1a55fc7837d26
https://github.com/scummvm/scummvm/commit/9f447e0ff4b5fa9ec407cf7fc4e1a55fc7837d26
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2014-05-24T11:17:03+03:00
Commit Message:
FULLPIPE: Fix MovGraphItem structure
Changed paths:
engines/fullpipe/motion.cpp
engines/fullpipe/motion.h
diff --git a/engines/fullpipe/motion.cpp b/engines/fullpipe/motion.cpp
index cc248e1..20ae2df 100644
--- a/engines/fullpipe/motion.cpp
+++ b/engines/fullpipe/motion.cpp
@@ -507,14 +507,6 @@ bool MctlCompoundArray::load(MfcArchive &file) {
MovGraphItem::MovGraphItem() {
ani = 0;
field_4 = 0;
- movarr = 0;
- field_C = 0;
- field_10 = 0;
- field_14 = 0;
- field_18 = 0;
- field_1C = 0;
- field_20 = 0;
- field_24 = 0;
movitems = 0;
count = 0;
field_30 = 0;
@@ -529,7 +521,7 @@ void MovGraphItem::free() {
int MovGraph_messageHandler(ExCommand *cmd);
-Common::Array<MovArr *> *movGraphCallback(StaticANIObject *ani, Common::Array<MovItem *> *items, signed int counter) {
+MovArr *movGraphCallback(StaticANIObject *ani, Common::Array<MovItem *> *items, signed int counter) {
int residx = 0;
int itemidx = 0;
@@ -592,10 +584,7 @@ void MovGraph::freeItems() {
for (uint i = 0; i < _items.size(); i++) {
_items[i]->free();
- for (uint j = 0; j < _items[i]->movarr->size(); j++)
- delete (*_items[i]->movarr)[j];
-
- delete _items[i]->movarr;
+ _items[i]->movarr._movSteps.clear();
}
_items.clear();
@@ -684,7 +673,7 @@ MessageQueue *MovGraph::method34(StaticANIObject *ani, int xpos, int ypos, int f
return method50(ani, _callback1(ani, movitems, count), staticsId);
}
-void MovGraph::changeCallback(Common::Array<MovArr *> *(*callback1)(StaticANIObject *ani, Common::Array<MovItem *> *items, signed int counter)) {
+void MovGraph::changeCallback(MovArr *(*callback1)(StaticANIObject *ani, Common::Array<MovItem *> *items, signed int counter)) {
_callback1 = callback1;
}
@@ -734,11 +723,11 @@ bool MovGraph::method44(StaticANIObject *ani, int x, int y) {
Common::Array<MovItem *> *movitem = method28(ani, x, y, 0, &counter);
if (movitem) {
- Common::Array<MovArr *> *movarr = _callback1(ani, movitem, counter);
- int cnt = (*movarr)[0]->_movStepCount;
+ MovArr *movarr = _callback1(ani, movitem, counter);
+ int cnt = movarr->_movStepCount;
if (cnt > 0) {
- if ((*movarr)[0]->_movSteps[cnt - 1]->link->_flags & 0x4000000)
+ if (movarr->_movSteps[cnt - 1]->link->_flags & 0x4000000)
return true;
}
}
@@ -759,7 +748,7 @@ MessageQueue *MovGraph::doWalkTo(StaticANIObject *subj, int xpos, int ypos, int
subj->getPicAniInfo(&picAniInfo);
if (movitem) {
- Common::Array<MovArr *> *goal = _callback1(subj, movitem, ss);
+ MovArr *goal = _callback1(subj, movitem, ss);
int idx = getItemIndexByStaticAni(subj);
for (int i = 0; i < _items[idx]->count; i++) {
@@ -787,7 +776,7 @@ MessageQueue *MovGraph::doWalkTo(StaticANIObject *subj, int xpos, int ypos, int
movitem = method28(subj, xpos, ypos, fuzzyMatch, &ss);
if (movitem) {
- Common::Array<MovArr *> *goal = _callback1(subj, movitem, ss);
+ MovArr *goal = _callback1(subj, movitem, ss);
int idx = getItemIndexByStaticAni(subj);
if (_items[idx]->count > 0) {
@@ -802,18 +791,13 @@ MessageQueue *MovGraph::doWalkTo(StaticANIObject *subj, int xpos, int ypos, int
}
}
- _items[idx]->movarr->clear();
-
- for (int i = 0; i < (*_items[idx]->movitems->operator[](arridx)->movarr)[i]->_movStepCount; i++) {
- MovArr *m = new MovArr;
-
- *m = *(*_items[idx]->movitems->operator[](arridx)->movarr)[i];
- }
-
- _items[idx]->field_10 = -1;
- _items[idx]->field_14 = 0;
+ _items[idx]->movarr._movSteps.clear();
+ _items[idx]->movarr = *_items[idx]->movitems->operator[](arridx)->movarr;
+ _items[idx]->movarr._movSteps = _items[idx]->movitems->operator[](arridx)->movarr->_movSteps;
+ _items[idx]->movarr._afield_8 = -1;
+ _items[idx]->movarr._link = 0;
- MessageQueue *mq = fillMGMinfo(_items[idx]->ani, (*_items[idx]->movarr)[0], staticsId);
+ MessageQueue *mq = fillMGMinfo(_items[idx]->ani, &_items[idx]->movarr, staticsId);
if (mq) {
ExCommand *ex = new ExCommand();
ex->_messageKind = 17;
@@ -925,7 +909,7 @@ MessageQueue *MovGraph::fillMGMinfo(StaticANIObject *ani, MovArr *movarr, int st
return mq;
}
-MessageQueue *MovGraph::method50(StaticANIObject *ani, Common::Array<MovArr *> *movarr, int staticsId) {
+MessageQueue *MovGraph::method50(StaticANIObject *ani, MovArr *movarr, int staticsId) {
#if 0
if (_itemsCount <= 0)
return 0;
@@ -958,11 +942,9 @@ MessageQueue *MovGraph::method50(StaticANIObject *ani, Common::Array<MovArr *> *
if (_items[idx]->movarr)
delete _items[idx]->movarr;
- _items[idx]->movarr = _items[idx]->movitems[movidx].movarr;
-
+ _items[idx]->copyPart(_items[idx]->movitems[movidx]);
_items[idx]->movarr->_movSteps.clear();
_items[idx]->movarr->_movSteps = _items[idx]->movitems[movidx].movarr->_movSteps;
-
_items[idx]->field_10 = -1;
_items[idx]->field_14 = 0;
diff --git a/engines/fullpipe/motion.h b/engines/fullpipe/motion.h
index dbd41b8..3aa07c1 100644
--- a/engines/fullpipe/motion.h
+++ b/engines/fullpipe/motion.h
@@ -58,7 +58,7 @@ public:
virtual bool method2C(StaticANIObject *obj, int x, int y) { return false; }
virtual int method30() { return 0; }
virtual MessageQueue *method34(StaticANIObject *subj, int xpos, int ypos, int fuzzyMatch, int staticsId) { return 0; }
- virtual void changeCallback(Common::Array<MovArr *> *(*_callback1)(StaticANIObject *ani, Common::Array<MovItem *> *items, signed int counter)) {}
+ virtual void changeCallback(MovArr *(*_callback1)(StaticANIObject *ani, Common::Array<MovItem *> *items, signed int counter)) {}
virtual bool method3C(StaticANIObject *ani, int flag) { return 0; }
virtual int method40() { return 0; }
virtual bool method44(StaticANIObject *ani, int x, int y) { return false; }
@@ -316,7 +316,7 @@ struct MovArr {
};
struct MovItem {
- Common::Array<MovArr *> *movarr;
+ MovArr *movarr;
int _mfield_4;
int _mfield_8;
int _mfield_C;
@@ -325,14 +325,7 @@ struct MovItem {
struct MovGraphItem {
StaticANIObject *ani;
int field_4;
- Common::Array<MovArr *> *movarr;
- int field_C;
- int field_10;
- int field_14;
- int field_18;
- int field_1C;
- int field_20;
- int field_24;
+ MovArr movarr;
Common::Array<MovItem *> *movitems;
int count;
int field_30;
@@ -350,7 +343,7 @@ public:
ObList _links;
int _field_44;
Common::Array<MovGraphItem *> _items;
- Common::Array<MovArr *> *(*_callback1)(StaticANIObject *ani, Common::Array<MovItem *> *items, signed int counter);
+ MovArr *(*_callback1)(StaticANIObject *ani, Common::Array<MovItem *> *items, signed int counter);
MGM _mgm;
public:
@@ -365,11 +358,11 @@ public:
virtual Common::Array<MovItem *> *method28(StaticANIObject *ani, int x, int y, int flag1, int *rescount);
virtual bool method2C(StaticANIObject *obj, int x, int y);
virtual MessageQueue *method34(StaticANIObject *subj, int xpos, int ypos, int fuzzyMatch, int staticsId);
- virtual void changeCallback(Common::Array<MovArr *> *(*_callback1)(StaticANIObject *ani, Common::Array<MovItem *> *items, signed int counter));
+ virtual void changeCallback(MovArr *(*_callback1)(StaticANIObject *ani, Common::Array<MovItem *> *items, signed int counter));
virtual bool method3C(StaticANIObject *ani, int flag);
virtual bool method44(StaticANIObject *ani, int x, int y);
virtual MessageQueue *doWalkTo(StaticANIObject *subj, int xpos, int ypos, int fuzzyMatch, int staticsId);
- virtual MessageQueue *method50(StaticANIObject *ani, Common::Array<MovArr *> *movarr, int staticsId);
+ virtual MessageQueue *method50(StaticANIObject *ani, MovArr *movarr, int staticsId);
double calcDistance(Common::Point *point, MovGraphLink *link, int fuzzyMatch);
void calcNodeDistancesAndAngles();
Commit: 46d0e8b76cb0130c01dcddf4dd3483c1099b5a7c
https://github.com/scummvm/scummvm/commit/46d0e8b76cb0130c01dcddf4dd3483c1099b5a7c
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2014-05-24T11:17:03+03:00
Commit Message:
FULLPIPE: Finish MovGraph::method50() implementation
Changed paths:
engines/fullpipe/motion.cpp
diff --git a/engines/fullpipe/motion.cpp b/engines/fullpipe/motion.cpp
index 20ae2df..69dd648 100644
--- a/engines/fullpipe/motion.cpp
+++ b/engines/fullpipe/motion.cpp
@@ -910,16 +910,15 @@ MessageQueue *MovGraph::fillMGMinfo(StaticANIObject *ani, MovArr *movarr, int st
}
MessageQueue *MovGraph::method50(StaticANIObject *ani, MovArr *movarr, int staticsId) {
-#if 0
- if (_itemsCount <= 0)
+ if (_items.size() == 0)
return 0;
int idx;
int movidx;
bool done = false;
- for (idx = 0; idx <= _itemsCount && !done; idx++) {
- if (idx == _itemsCount)
+ for (idx = 0; idx <= _items.size() && !done; idx++) {
+ if (idx == _items.size())
return 0;
if (_items[idx]->ani == ani) {
@@ -929,8 +928,8 @@ MessageQueue *MovGraph::method50(StaticANIObject *ani, MovArr *movarr, int stati
if (_items[idx]->count < 1)
return 0;
- for (movidx = 0; movidx < _items[idx]->count; movidx++)
- if (_items[idx]->movitems[movidx]->movarr == movarr) {
+ for (movidx = 0; movidx < _items[idx]->count; movidx++) {
+ if (_items[idx]->movitems->operator[](movidx)->movarr == movarr) {
done = true;
break;
@@ -939,16 +938,13 @@ MessageQueue *MovGraph::method50(StaticANIObject *ani, MovArr *movarr, int stati
}
}
- if (_items[idx]->movarr)
- delete _items[idx]->movarr;
+ _items[idx]->movarr._movSteps.clear();
+ _items[idx]->movarr = *_items[idx]->movitems->operator[](movidx)->movarr;
+ _items[idx]->movarr._movSteps = _items[idx]->movitems->operator[](movidx)->movarr->_movSteps;
+ _items[idx]->movarr._afield_8 = -1;
+ _items[idx]->movarr._link = 0;
- _items[idx]->copyPart(_items[idx]->movitems[movidx]);
- _items[idx]->movarr->_movSteps.clear();
- _items[idx]->movarr->_movSteps = _items[idx]->movitems[movidx].movarr->_movSteps;
- _items[idx]->field_10 = -1;
- _items[idx]->field_14 = 0;
-
- MessageQueue *mq = fillMGMinfo(_items[idx]->ani, _items[idx]->movarr, 0);
+ MessageQueue *mq = fillMGMinfo(_items[idx]->ani, &_items[idx]->movarr, 0);
if (!mq)
return 0;
@@ -968,11 +964,6 @@ MessageQueue *MovGraph::method50(StaticANIObject *ani, MovArr *movarr, int stati
}
return mq;
-#endif
-
- warning("STUB: MovGraph::method50()");
-
- return 0;
}
double MovGraph::calcDistance(Common::Point *point, MovGraphLink *link, int fuzzyMatch) {
Commit: d197bb04afa9be420d92b5d927d496ddc881d642
https://github.com/scummvm/scummvm/commit/d197bb04afa9be420d92b5d927d496ddc881d642
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2014-05-24T11:17:03+03:00
Commit Message:
FULLPIPE: Simplify syntax
Changed paths:
engines/fullpipe/motion.cpp
diff --git a/engines/fullpipe/motion.cpp b/engines/fullpipe/motion.cpp
index 69dd648..af615cd 100644
--- a/engines/fullpipe/motion.cpp
+++ b/engines/fullpipe/motion.cpp
@@ -752,7 +752,7 @@ MessageQueue *MovGraph::doWalkTo(StaticANIObject *subj, int xpos, int ypos, int
int idx = getItemIndexByStaticAni(subj);
for (int i = 0; i < _items[idx]->count; i++) {
- if (_items[idx]->movitems->operator[](i)->movarr == goal) {
+ if ((*_items[idx]->movitems)[i]->movarr == goal) {
if (subj->_movement) {
Common::Point point;
@@ -782,7 +782,7 @@ MessageQueue *MovGraph::doWalkTo(StaticANIObject *subj, int xpos, int ypos, int
if (_items[idx]->count > 0) {
int arridx = 0;
- while (_items[idx]->movitems->operator[](arridx)->movarr != goal) {
+ while ((*_items[idx]->movitems)[arridx]->movarr != goal) {
arridx++;
if (arridx >= _items[idx]->count) {
@@ -792,8 +792,8 @@ MessageQueue *MovGraph::doWalkTo(StaticANIObject *subj, int xpos, int ypos, int
}
_items[idx]->movarr._movSteps.clear();
- _items[idx]->movarr = *_items[idx]->movitems->operator[](arridx)->movarr;
- _items[idx]->movarr._movSteps = _items[idx]->movitems->operator[](arridx)->movarr->_movSteps;
+ _items[idx]->movarr = *(*_items[idx]->movitems)[arridx]->movarr;
+ _items[idx]->movarr._movSteps = (*_items[idx]->movitems)[arridx]->movarr->_movSteps;
_items[idx]->movarr._afield_8 = -1;
_items[idx]->movarr._link = 0;
@@ -929,7 +929,7 @@ MessageQueue *MovGraph::method50(StaticANIObject *ani, MovArr *movarr, int stati
return 0;
for (movidx = 0; movidx < _items[idx]->count; movidx++) {
- if (_items[idx]->movitems->operator[](movidx)->movarr == movarr) {
+ if ((*_items[idx]->movitems)[movidx]->movarr == movarr) {
done = true;
break;
@@ -939,8 +939,8 @@ MessageQueue *MovGraph::method50(StaticANIObject *ani, MovArr *movarr, int stati
}
_items[idx]->movarr._movSteps.clear();
- _items[idx]->movarr = *_items[idx]->movitems->operator[](movidx)->movarr;
- _items[idx]->movarr._movSteps = _items[idx]->movitems->operator[](movidx)->movarr->_movSteps;
+ _items[idx]->movarr = *(*_items[idx]->movitems)[movidx]->movarr;
+ _items[idx]->movarr._movSteps = (*_items[idx]->movitems)[movidx]->movarr->_movSteps;
_items[idx]->movarr._afield_8 = -1;
_items[idx]->movarr._link = 0;
More information about the Scummvm-git-logs
mailing list