[Scummvm-cvs-logs] scummvm master -> b90e76f21f6cbbfd11ac266748789c1396383710

sev- sev at scummvm.org
Fri Oct 4 22:39:01 CEST 2013


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:
b90e76f21f FULLPIPE: Implement MctlCompound::method4C()


Commit: b90e76f21f6cbbfd11ac266748789c1396383710
    https://github.com/scummvm/scummvm/commit/b90e76f21f6cbbfd11ac266748789c1396383710
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2013-10-04T13:38:29-07:00

Commit Message:
FULLPIPE: Implement MctlCompound::method4C()

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



diff --git a/engines/fullpipe/motion.cpp b/engines/fullpipe/motion.cpp
index 6908344..2ff2c00 100644
--- a/engines/fullpipe/motion.cpp
+++ b/engines/fullpipe/motion.cpp
@@ -62,7 +62,7 @@ bool MctlCompound::load(MfcArchive &file) {
 			debug(6, "ConnectionPoint[%d]", j);
 			MctlConnectionPoint *obj1 = (MctlConnectionPoint *)file.readClass();
 
-			obj->_connectionPoints.push_back(*obj1);
+			obj->_connectionPoints.push_back(obj1);
 		}
 
 		obj->_field_20 = file.readUint32LE();
@@ -123,11 +123,6 @@ MessageQueue *MctlCompound::method34(StaticANIObject *subj, int xpos, int ypos,
 }
 
 MessageQueue *MctlCompound::method4C(StaticANIObject *subj, int xpos, int ypos, int flag, int staticsId) {
-	warning("STUB: MctlCompound::method4C()");
-
-	return 0;
-
-#if 0
 	int match1 = -1;
 	int match2 = -1;
 
@@ -166,15 +161,15 @@ MessageQueue *MctlCompound::method4C(StaticANIObject *subj, int xpos, int ypos,
 	if (!closestP)
 		return 0;
 
-	MctlConnectionPoint *nextP = _motionControllers[match1]->_motionControllerObj->method4C(subj, closestP->connectionX, closestP->connectionY, 1, closestP->field_14);
+	MessageQueue *mq = _motionControllers[match1]->_motionControllerObj->method4C(subj, closestP->_connectionX, closestP->_connectionY, 1, closestP->_field_14);
 
 	ExCommand *ex;
 
-	if (nextP) {
+	if (mq) {
 		for (uint i = 0; i < closestP->_messageQueueObj->getCount(); i++) {
 			ex = new ExCommand(closestP->_messageQueueObj->getExCommandByIndex(i));
-			ex->excFlags |= 2;
-			nextP->messageQueueObj->CPtrList::AddTail(ex);
+			ex->_excFlags |= 2;
+			mq->_exCommands.push_back(ex);
 		}
 
 		ex = new ExCommand(subj->_id, 51, 0, xpos, ypos, 0, 1, 0, 0, 0);
@@ -183,11 +178,16 @@ MessageQueue *MctlCompound::method4C(StaticANIObject *subj, int xpos, int ypos,
 		ex->_keyCode = subj->_okeyCode;
 		ex->_excFlags |= 2;
 
-		nextP->messageQueueObj->CPtrList::AddTail(ex);
+		mq->_exCommands.push_back(ex);
 	}
 
-	return nextP;
-#endif
+	return mq;
+}
+
+MctlConnectionPoint *MctlCompound::findClosestConnectionPoint(int ox, int oy, int destIndex, int connectionX, int connectionY, int sourceIndex, int *minDistancePtr) {
+	warning("STUB: MctlCompound::findClosestConnectionPoint()");
+
+	return 0;
 }
 
 bool MctlCompoundArray::load(MfcArchive &file) {
@@ -697,6 +697,18 @@ void ReactParallel::createRegion() {
 	// GdiObject::Attach(_rgn, CreatePolygonRgn(_points, 4, 2);
 }
 
+void ReactParallel::method14() {
+	warning("STUB: ReactParallel::method14()");
+}
+
+bool ReactParallel::pointInRegion(int x, int y) {
+	warning("STUB: ReactParallel::pointInRegion()");
+
+	warning("%d %d, %d %d, %d %d, %d %d", _points[0]->x, _points[0]->y, _points[1]->x, _points[1]->y, _points[2]->x, _points[2]->y, _points[3]->x, _points[3]->y);
+
+	return false;
+}
+
 ReactPolygonal::ReactPolygonal() {
 	_field_C = 0;
 	_points = 0;
@@ -735,6 +747,16 @@ void ReactPolygonal::createRegion() {
 	}
 }
 
+void ReactPolygonal::method14() {
+	warning("STUB: ReactPolygonal::method14()");
+}
+
+bool ReactPolygonal::pointInRegion(int x, int y) {
+	warning("STUB: ReactPolygonal::pointInRegion()");
+
+	return false;
+}
+
 int startWalkTo(int objId, int objKey, int x, int y, int a5) {
 	MctlCompound *mc = getSc2MctlCompoundBySceneId(g_fullpipe->_currentScene->_sceneId);
 
diff --git a/engines/fullpipe/motion.h b/engines/fullpipe/motion.h
index a5bbfbe..f94fbc0 100644
--- a/engines/fullpipe/motion.h
+++ b/engines/fullpipe/motion.h
@@ -27,6 +27,7 @@ namespace Fullpipe {
 
 class Statics;
 class Movement;
+class MctlConnectionPoint;
 
 int startWalkTo(int objId, int objKey, int x, int y, int a5);
 int doSomeAnimation(int objId, int objKey, int a3);
@@ -61,18 +62,19 @@ public:
 };
 
 class MovGraphReact : public CObject {
-	// Empty
+public:
+	virtual void method14() {}
+	virtual void createRegion() {}
+	virtual bool pointInRegion(int x, int y) { return false; }
 };
 
-typedef Common::Array<CObject> MctlConnectionPointsArray;
-
 class MctlCompoundArrayItem : public CObject {
 	friend class MctlCompound;
 
   protected:
 	MotionController *_motionControllerObj;
 	MovGraphReact *_movGraphReactObj;
-	MctlConnectionPointsArray _connectionPoints;
+	Common::Array<MctlConnectionPoint *> _connectionPoints;
 	int _field_20;
 	int _field_24;
 	int _field_28;
@@ -101,6 +103,7 @@ class MctlCompound : public MotionController {
 	virtual MessageQueue *method4C(StaticANIObject *subj, int xpos, int ypos, int flag, int staticsId);
 
 	void initMovGraph2();
+	MctlConnectionPoint *findClosestConnectionPoint(int ox, int oy, int destIndex, int connectionX, int connectionY, int sourceIndex, int *minDistancePtr);
 };
 
 struct MGMSubItem {
@@ -162,7 +165,10 @@ class ReactParallel : public MovGraphReact {
   public:
 	ReactParallel();
 	virtual bool load(MfcArchive &file);
-	void createRegion();
+
+	virtual void method14();
+	virtual void createRegion();
+	virtual bool pointInRegion(int x, int y);
 };
 
 class ReactPolygonal : public MovGraphReact {
@@ -175,7 +181,10 @@ class ReactPolygonal : public MovGraphReact {
   public:
 	ReactPolygonal();
 	virtual bool load(MfcArchive &file);
-	void createRegion();
+
+	virtual void method14();
+	virtual void createRegion();
+	virtual bool pointInRegion(int x, int y);
 };
 
 class MovGraphLink : public CObject {
@@ -293,7 +302,7 @@ public:
 	int _field_10;
 	int16 _field_14;
 	int16 _field_16;
-	int _messageQueueObj;
+	MessageQueue *_messageQueueObj;
 	int _motionControllerObj;
 };
 






More information about the Scummvm-git-logs mailing list