[Scummvm-cvs-logs] scummvm master -> 77b244e5dfbb13965ae0c1ac2f1c9fa9b522c3c1

sev- sev at scummvm.org
Sun May 18 08:45:13 CEST 2014


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
77b244e5df FULLPIPE: Finish implementation of movGraphCallback()


Commit: 77b244e5dfbb13965ae0c1ac2f1c9fa9b522c3c1
    https://github.com/scummvm/scummvm/commit/77b244e5dfbb13965ae0c1ac2f1c9fa9b522c3c1
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2014-05-18T09:44:28+03:00

Commit Message:
FULLPIPE: Finish implementation of movGraphCallback()

Changed paths:
    engines/fullpipe/motion.cpp
    engines/fullpipe/motion.h



diff --git a/engines/fullpipe/motion.cpp b/engines/fullpipe/motion.cpp
index ccf5fa1..81bfb7d 100644
--- a/engines/fullpipe/motion.cpp
+++ b/engines/fullpipe/motion.cpp
@@ -515,7 +515,7 @@ MovGraphItem::MovGraphItem() {
 	field_1C = 0;
 	field_20 = 0;
 	field_24 = 0;
-	items = 0;
+	movitems = 0;
 	count = 0;
 	field_30 = 0;
 	field_34 = 0;
@@ -529,23 +529,19 @@ void MovGraphItem::free() {
 
 int MovGraph_messageHandler(ExCommand *cmd);
 
-MovArr *movGraphCallback(StaticANIObject *ani, MovItem *item, signed int counter) {
-#if 0
-MovArr *movGraphCallback(StaticANIObject *ani, Common:Array<MovItem *> items, int itemidx, signed int counter) {
-
-	int residx = itemidx;
+Common::Array<MovArr *> *movGraphCallback(StaticANIObject *ani, Common::Array<MovItem *> *items, signed int counter) {
+	int residx = 0;
+	int itemidx = 0;
 
 	while (counter > 1) {
-		if (items[itemidx]._mfield_4 > items[itemidx + 1]._mfield_4)
+		if ((*items)[itemidx]->_mfield_4 > (*items)[itemidx + 1]->_mfield_4)
 			residx = itemidx;
 
 		counter--;
 		itemidx++;
 	}
 
-	return items[residx].movarr;
-#endif
-	return 0;
+	return (*items)[residx]->movarr;
 }
 
 MovGraph::MovGraph() {
@@ -604,8 +600,7 @@ void MovGraph::freeItems() {
 
 	_items.clear();
 }
-
-MovItem *MovGraph::method28(StaticANIObject *ani, int x, int y, int flag1, int *rescount) {
+Common::Array<MovItem *> *MovGraph::method28(StaticANIObject *ani, int x, int y, int flag1, int *rescount) {
 	warning("STUB: MovGraph::method28()");
 
 	return 0;
@@ -642,14 +637,14 @@ bool MovGraph::method44(StaticANIObject *ani, int x, int y) {
 		if (x != -1 || y != -1) {
 			int counter;
 
-			MovItem *movitem = method28(ani, x, y, 0, &counter);
+			Common::Array<MovItem *> *movitem = method28(ani, x, y, 0, &counter);
 
 			if (movitem) {
-				MovArr *movarr = _callback1(ani, movitem, counter);
-				int cnt = movarr->_movStepCount;
+				Common::Array<MovArr *> *movarr = _callback1(ani, movitem, counter);
+				int cnt = (*movarr)[0]->_movStepCount;
 
 				if (cnt > 0) {
-					if (movarr->_movSteps[cnt - 1].link->_flags & 0x4000000)
+					if ((*movarr)[0]->_movSteps[cnt - 1].link->_flags & 0x4000000)
 						return true;
 				}
 			}
@@ -665,16 +660,16 @@ MessageQueue *MovGraph::doWalkTo(StaticANIObject *subj, int xpos, int ypos, int
 	PicAniInfo picAniInfo;
 	int ss;
 
-	MovItem *movitem = method28(subj, xpos, ypos, fuzzyMatch, &ss);
+	Common::Array<MovItem *> *movitem = method28(subj, xpos, ypos, fuzzyMatch, &ss);
 
 	subj->getPicAniInfo(&picAniInfo);
 
 	if (movitem) {
-		MovArr *goal = _callback1(subj, movitem, ss);
+		Common::Array<MovArr *> *goal = _callback1(subj, movitem, ss);
 		int idx = getItemIndexByStaticAni(subj);
 
 		for (uint i = 0; i < _items[idx]->count; i++) {
-			if ((*_items[idx]->items[i].movarr)[0] == goal) {
+			if (_items[idx]->movitems->operator[](i)->movarr == goal) {
 				if (subj->_movement) {
 					Common::Point point;
 
@@ -698,13 +693,13 @@ MessageQueue *MovGraph::doWalkTo(StaticANIObject *subj, int xpos, int ypos, int
 
 	movitem = method28(subj, xpos, ypos, fuzzyMatch, &ss);
 	if (movitem) {
-		MovArr *goal = _callback1(subj, movitem, ss);
+		Common::Array<MovArr *> *goal = _callback1(subj, movitem, ss);
 		int idx = getItemIndexByStaticAni(subj);
 
 		if (_items[idx]->count > 0) {
 			int arridx = 0;
 
-			while ((*_items[idx]->items[arridx].movarr)[0] != goal) {
+			while (_items[idx]->movitems->operator[](arridx)->movarr != goal) {
 				arridx++;
 
 				if (arridx >= _items[idx]->count) {
@@ -715,10 +710,10 @@ MessageQueue *MovGraph::doWalkTo(StaticANIObject *subj, int xpos, int ypos, int
 
 			_items[idx]->movarr->clear();
 
-			for (uint i = 0; i < (*_items[idx]->items[arridx].movarr)[i]->_movStepCount; i++) {
+			for (uint i = 0; i < (*_items[idx]->movitems->operator[](arridx)->movarr)[i]->_movStepCount; i++) {
 				MovArr *m = new MovArr;
 
-				*m = *(*_items[idx]->items[arridx].movarr)[i];
+				*m = *(*_items[idx]->movitems->operator[](arridx)->movarr)[i];
 			}
 
 			_items[idx]->field_10 = -1;
diff --git a/engines/fullpipe/motion.h b/engines/fullpipe/motion.h
index febcf17..cfbca1d 100644
--- a/engines/fullpipe/motion.h
+++ b/engines/fullpipe/motion.h
@@ -53,7 +53,7 @@ public:
 	virtual void addObject(StaticANIObject *obj) {}
 	virtual int removeObject(StaticANIObject *obj) { return 0; }
 	virtual void freeItems() {}
-	virtual MovItem *method28(StaticANIObject *ani, int x, int y, int flag1, int *rescount) { return 0; }
+	virtual Common::Array<MovItem *> *method28(StaticANIObject *ani, int x, int y, int flag1, int *rescount) { return 0; }
 	virtual int method2C(StaticANIObject *obj, int x, int y) { return 0; }
 	virtual int method30() { return 0; }
 	virtual MessageQueue *method34(StaticANIObject *subj, int xpos, int ypos, int fuzzyMatch, int staticsId) { return 0; }
@@ -332,7 +332,7 @@ struct MovGraphItem {
 	int field_1C;
 	int field_20;
 	int field_24;
-	MovItem *items;
+	Common::Array<MovItem *> *movitems;
 	int count;
 	int field_30;
 	int field_34;
@@ -349,7 +349,7 @@ public:
 	ObList _links;
 	int _field_44;
 	Common::Array<MovGraphItem *> _items;
-	MovArr *(*_callback1)(StaticANIObject *ani, MovItem *item, int counter);
+	Common::Array<MovArr *> *(*_callback1)(StaticANIObject *ani, Common::Array<MovItem *> *items, signed int counter);
 	MGM _mgm;
 
 public:
@@ -361,7 +361,7 @@ public:
 	virtual void addObject(StaticANIObject *obj);
 	virtual int removeObject(StaticANIObject *obj);
 	virtual void freeItems();
-	virtual MovItem *method28(StaticANIObject *ani, int x, int y, int flag1, int *rescount);
+	virtual Common::Array<MovItem *> *method28(StaticANIObject *ani, int x, int y, int flag1, int *rescount);
 	virtual int method2C(StaticANIObject *obj, int x, int y);
 	virtual MessageQueue *method34(StaticANIObject *subj, int xpos, int ypos, int fuzzyMatch, int staticsId);
 	virtual int changeCallback();






More information about the Scummvm-git-logs mailing list