[Scummvm-cvs-logs] scummvm master -> 627769a2f5d9ec0bbcf6ce9f9200a173bfea84bf

sev- sev at scummvm.org
Wed Nov 6 22:46:36 CET 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:
627769a2f5 FULLPIPE: Implement another Movement class copy constructor.


Commit: 627769a2f5d9ec0bbcf6ce9f9200a173bfea84bf
    https://github.com/scummvm/scummvm/commit/627769a2f5d9ec0bbcf6ce9f9200a173bfea84bf
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2013-11-06T13:46:03-08:00

Commit Message:
FULLPIPE: Implement another Movement class copy constructor.

Changed paths:
    engines/fullpipe/statics.cpp



diff --git a/engines/fullpipe/statics.cpp b/engines/fullpipe/statics.cpp
index 0599125..e281b9b 100644
--- a/engines/fullpipe/statics.cpp
+++ b/engines/fullpipe/statics.cpp
@@ -1201,8 +1201,86 @@ Movement::Movement(Movement *src, StaticANIObject *ani) {
 	updateCurrDynamicPhase();
 }
 
-Movement::Movement(Movement *src, int *flag1, int flag2, StaticANIObject *ani) {
-	warning("STUB: Movement(src, %p, %d, ani)", (void *)flag1, flag2);
+Movement::Movement(Movement *src, int *oldIdxs, int newSize, StaticANIObject *ani) : GameObject(src) {
+	_lastFrameSpecialFlag = 0;
+	_updateFlag1 = 1;
+	_staticsObj1 = 0;
+	_staticsObj2 = 0;
+	_mx = 0;
+	_my = 0;
+	_m2x = 0;
+	_m2y = 0;
+
+	_field_78 = 0;
+	_framePosOffsets = 0;
+	_field_84 = 0;
+	_currDynamicPhase = 0;
+	_field_8C = 0;
+	_currDynamicPhaseIndex = 0;
+	_field_94 = 0;
+
+	_field_50 = src->_field_50;
+	_flipFlag = src->_flipFlag;
+	_currMovement = 0;
+	_mx = src->_mx;
+	_my = src->_my;
+	_m2x = src->_m2x;
+	_m2y = src->_m2y;
+
+	if (newSize != -1) {
+		if (newSize >= src->_dynamicPhases.size() + 1)
+			newSize = src->_dynamicPhases.size() + 1;
+	} else {
+		newSize = src->_dynamicPhases.size();
+	}
+
+	_framePosOffsets = (Common::Point **)calloc(newSize, sizeof(Common::Point *));
+
+	for (int i = 0; i < newSize; i++)
+		_framePosOffsets[i] = new Common::Point();
+
+	if (oldIdxs) {
+		for (int i = 0; i < newSize - 1; i++, oldIdxs++) {
+			if (oldIdxs[i] == -1) {
+				_dynamicPhases.push_back(src->_staticsObj1);
+
+				_framePosOffsets[i]->x = 0;
+				_framePosOffsets[i]->y = 0;
+			} else {
+				src->setDynamicPhaseIndex(oldIdxs[i]);
+
+				_dynamicPhases.push_back(src->_currDynamicPhase);
+
+				_framePosOffsets[i]->x = src->_framePosOffsets[oldIdxs[i]]->x;
+				_framePosOffsets[i]->y = src->_framePosOffsets[oldIdxs[i]]->y;
+			}
+		}
+		_staticsObj1 = (Statics *)_dynamicPhases.front();
+		_staticsObj2 = (Statics *)_dynamicPhases.back();
+	} else {
+		for (int i = 0; i < newSize; i++) {
+			src->setDynamicPhaseIndex(i);
+
+			if (i < newSize - 1)
+				_dynamicPhases.push_back(new DynamicPhase(src->_currDynamicPhase, 0));
+
+			_framePosOffsets[i]->x = src->_framePosOffsets[i]->x;
+			_framePosOffsets[i]->y = src->_framePosOffsets[i]->y;
+		}
+
+		_staticsObj1 = ani->getStaticsById(src->_staticsObj1->_staticsId);
+		_staticsObj2 = ani->getStaticsById(src->_staticsObj2->_staticsId);
+
+		_dynamicPhases.push_back(_staticsObj2);
+
+		this->_updateFlag1 = src->_updateFlag1;
+	}
+
+	updateCurrDynamicPhase();
+	removeFirstPhase();
+
+	_counterMax = src->_counterMax;
+	_counter = src->_counter;
 }
 
 bool Movement::load(MfcArchive &file) {






More information about the Scummvm-git-logs mailing list