diff options
author | Einar Johan Trøan Sømåen | 2013-01-24 14:48:36 +0100 |
---|---|---|
committer | Einar Johan Trøan Sømåen | 2013-01-24 15:12:02 +0100 |
commit | e829a57762d60623264fa51c52f2f9aceb3b972f (patch) | |
tree | 60c0ebb5a80407ce047e578da917ff0d9e115164 /engines/wintermute/ad/ad_scene.cpp | |
parent | 2e8e3ae13e68859bd077a96fcb5ae72c891ae024 (diff) | |
download | scummvm-rg350-e829a57762d60623264fa51c52f2f9aceb3b972f.tar.gz scummvm-rg350-e829a57762d60623264fa51c52f2f9aceb3b972f.tar.bz2 scummvm-rg350-e829a57762d60623264fa51c52f2f9aceb3b972f.zip |
WINTERMUTE: Fix scrollspeed (and break character animation the same way WME Lite does)
Diffstat (limited to 'engines/wintermute/ad/ad_scene.cpp')
-rw-r--r-- | engines/wintermute/ad/ad_scene.cpp | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/engines/wintermute/ad/ad_scene.cpp b/engines/wintermute/ad/ad_scene.cpp index a985c517e2..213d5564a8 100644 --- a/engines/wintermute/ad/ad_scene.cpp +++ b/engines/wintermute/ad/ad_scene.cpp @@ -932,24 +932,26 @@ bool AdScene::traverseNodes(bool doUpdate) { if (_autoScroll) { // adjust horizontal scroll if (_gameRef->_timer - _lastTimeH >= _scrollTimeH) { + int timesMissed = (_gameRef->_timer - _lastTimeH) / _scrollTimeH; _lastTimeH = _gameRef->_timer; if (_offsetLeft < _targetOffsetLeft) { - _offsetLeft += _scrollPixelsH; + _offsetLeft += _scrollPixelsH * timesMissed; _offsetLeft = MIN(_offsetLeft, _targetOffsetLeft); } else if (_offsetLeft > _targetOffsetLeft) { - _offsetLeft -= _scrollPixelsH; + _offsetLeft -= _scrollPixelsH * timesMissed; _offsetLeft = MAX(_offsetLeft, _targetOffsetLeft); } } // adjust vertical scroll if (_gameRef->_timer - _lastTimeV >= _scrollTimeV) { + int timesMissed = (_gameRef->_timer - _lastTimeV) / _scrollTimeV; _lastTimeV = _gameRef->_timer; if (_offsetTop < _targetOffsetTop) { - _offsetTop += _scrollPixelsV; + _offsetTop += _scrollPixelsV * timesMissed; _offsetTop = MIN(_offsetTop, _targetOffsetTop); } else if (_offsetTop > _targetOffsetTop) { - _offsetTop -= _scrollPixelsV; + _offsetTop -= _scrollPixelsV * timesMissed; _offsetTop = MAX(_offsetTop, _targetOffsetTop); } } |