aboutsummaryrefslogtreecommitdiff
path: root/engines/wintermute/ad/ad_scene.cpp
diff options
context:
space:
mode:
authorEinar Johan Trøan Sømåen2013-01-24 14:48:36 +0100
committerEinar Johan Trøan Sømåen2013-01-24 15:12:02 +0100
commite829a57762d60623264fa51c52f2f9aceb3b972f (patch)
tree60c0ebb5a80407ce047e578da917ff0d9e115164 /engines/wintermute/ad/ad_scene.cpp
parent2e8e3ae13e68859bd077a96fcb5ae72c891ae024 (diff)
downloadscummvm-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.cpp10
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);
}
}