diff options
| -rw-r--r-- | engines/fullpipe/statics.cpp | 38 | ||||
| -rw-r--r-- | engines/fullpipe/statics.h | 1 | 
2 files changed, 39 insertions, 0 deletions
| diff --git a/engines/fullpipe/statics.cpp b/engines/fullpipe/statics.cpp index 87b308007b..e0e6e4eb0b 100644 --- a/engines/fullpipe/statics.cpp +++ b/engines/fullpipe/statics.cpp @@ -838,6 +838,44 @@ void StaticANIObject::updateStepPos() {  	setOXY(ox + x, oy + y);  } +Common::Point *StaticANIObject::calcNextStep(Common::Point *pRes) { +	if (!_movement) { +		pRes->x = 0; +		pRes->y = 0; + +		return pRes; +	} + +	Common::Point point; + +	_movement->calcSomeXY(point, 1); + +	int resX = point.x; +	int resY = point.y; + +	int pointN, offset; + +	if (_someDynamicPhaseIndex <= 0) { +		pointN = _stepArray.getCurrPointIndex(); +		offset = _stepArray.getPointsCount() - _stepArray.getCurrPointIndex(); +	} else { +		pointN = _stepArray.getCurrPointIndex(); +		offset = 1 - _movement->_currDynamicPhaseIndex + _someDynamicPhaseIndex; +	} + +	if (pointN >= 0) { +		_stepArray.getPoint(&point, pointN, offset); + +		resX += point.x; +		resY += point.y; +	} + +	pRes->x = resX; +	pRes->y = resY; + +	return pRes; +} +  void StaticANIObject::stopAnim_maybe() {  	debug(6, "StaticANIObject::stopAnim_maybe()"); diff --git a/engines/fullpipe/statics.h b/engines/fullpipe/statics.h index 3f1f14c7bf..d38737fd54 100644 --- a/engines/fullpipe/statics.h +++ b/engines/fullpipe/statics.h @@ -247,6 +247,7 @@ public:  	void updateStepPos();  	void stopAnim_maybe(); +	Common::Point *calcNextStep(Common::Point *point);  	MessageQueue *changeStatics1(int msgNum);  	void changeStatics2(int objId); | 
