diff options
Diffstat (limited to 'engines')
-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); |