diff options
Diffstat (limited to 'engines')
4 files changed, 11 insertions, 9 deletions
diff --git a/engines/titanic/star_control/camera_auto_mover.cpp b/engines/titanic/star_control/camera_auto_mover.cpp index 60a1cbde82..b94c4d601c 100644 --- a/engines/titanic/star_control/camera_auto_mover.cpp +++ b/engines/titanic/star_control/camera_auto_mover.cpp @@ -50,8 +50,7 @@ void CCameraAutoMover::proc2(const FVector &oldPos, const FVector &newPos, _destPos = newPos; _posDelta = _destPos - _srcPos; float temp = 0.0; - bool unused_status = _posDelta.normalize(temp); // Do the normalization, put the scale amount in temp - + _posDelta.normalize(temp); // Do the normalization, put the scale amount in temp _distance = temp; _active = false; _field34 = false; @@ -90,17 +89,16 @@ void CCameraAutoMover::setPath(const FVector &srcV, const FVector &destV, const _transitionPercent = 1.0; } -void CCameraAutoMover::proc6(int val1, int val2, float val) { +void CCameraAutoMover::calcSpeeds(int val1, int val2, float distance) { _field44 = val1; _field4C = val1 + 62; - _field38 = val / (double)(val1 + val2 * 2); + _field38 = distance / (double)(val1 + val2 * 2); _field40 = 31; _field48 = 31; _field3C = (double)val2 * _field38; // Calculate the speeds for a graduated movement between stars double base = 0.0, total = 0.0; - _speeds.resize(32); for (int idx = 31; idx >= 0; --idx) { _speeds[idx] = pow(base, 4.0); total += _speeds[idx]; diff --git a/engines/titanic/star_control/camera_auto_mover.h b/engines/titanic/star_control/camera_auto_mover.h index dc9cf6df45..7b2e44fe13 100644 --- a/engines/titanic/star_control/camera_auto_mover.h +++ b/engines/titanic/star_control/camera_auto_mover.h @@ -49,7 +49,7 @@ protected: int _field44; int _field48; int _field4C; - Common::Array<double> _speeds; + double _speeds[32]; int _field54; double _transitionPercent; double _transitionPercentInc; @@ -63,7 +63,11 @@ public: virtual void proc3(const FMatrix &srcOrient, const FMatrix &destOrient); virtual void setPath(const FVector &srcV, const FVector &destV, const FMatrix &orientation); virtual int proc5(CErrorCode &errorCode, FVector &pos, FMatrix &orientation) { return 2; } - virtual void proc6(int val1, int val2, float val); + /** + * Given a distance to cover, determines a bunch of speeds for a gradual transition + * from one position to another (the mover). The speeds go from fast to slow + */ + virtual void calcSpeeds(int val1, int val2, float distance); bool isActive() const { return _active; } }; diff --git a/engines/titanic/star_control/marked_auto_mover.cpp b/engines/titanic/star_control/marked_auto_mover.cpp index 0a2da6dda1..22eb695427 100644 --- a/engines/titanic/star_control/marked_auto_mover.cpp +++ b/engines/titanic/star_control/marked_auto_mover.cpp @@ -34,7 +34,7 @@ void CMarkedAutoMover::proc2(const FVector &oldPos, const FVector &newPos, double distance = _distance; _active = true; _field34 = true; - proc6(120, 4, distance); + calcSpeeds(120, 4, distance); _orientationChanger.load(oldOrientation, newOrientation); diff --git a/engines/titanic/star_control/unmarked_auto_mover.cpp b/engines/titanic/star_control/unmarked_auto_mover.cpp index 71063fa615..1461132c13 100644 --- a/engines/titanic/star_control/unmarked_auto_mover.cpp +++ b/engines/titanic/star_control/unmarked_auto_mover.cpp @@ -42,7 +42,7 @@ void CUnmarkedAutoMover::setPath(const FVector &srcV, const FVector &destV, cons if (_distance > 8000.0) { _active = true; _field34 = 1; - proc6(120, 4, _distance - 8000.0); + calcSpeeds(120, 4, _distance - 8000.0); } FVector row3 = orientation._row3; |