diff options
author | Sven Hesse | 2007-08-19 17:26:06 +0000 |
---|---|---|
committer | Sven Hesse | 2007-08-19 17:26:06 +0000 |
commit | 2d15e4af78cf70fbc5063824b25b84af587b7d9b (patch) | |
tree | 65acbebc16aaf3dc7b082c47a0fb552102afe8a5 /engines/gob/game_v1.cpp | |
parent | 5103e92410e92aff9eebd6d7fc7ed3203ebba1e7 (diff) | |
download | scummvm-rg350-2d15e4af78cf70fbc5063824b25b84af587b7d9b.tar.gz scummvm-rg350-2d15e4af78cf70fbc5063824b25b84af587b7d9b.tar.bz2 scummvm-rg350-2d15e4af78cf70fbc5063824b25b84af587b7d9b.zip |
Checking in patch #1777241 by Uwe Ryssel (GOB: Some optimizations for slow computers)
svn-id: r28664
Diffstat (limited to 'engines/gob/game_v1.cpp')
-rw-r--r-- | engines/gob/game_v1.cpp | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/engines/gob/game_v1.cpp b/engines/gob/game_v1.cpp index 9c18ec1151..d8ebcf1802 100644 --- a/engines/gob/game_v1.cpp +++ b/engines/gob/game_v1.cpp @@ -345,6 +345,7 @@ int16 Game_v1::checkCollisions(byte handleMouse, int16 deltaTime, int16 oldIndex; int16 oldId; uint32 timeKey; + bool firstIteration = true; if (deltaTime >= -1) { _lastCollKey = 0; @@ -357,6 +358,8 @@ int16 Game_v1::checkCollisions(byte handleMouse, int16 deltaTime, resIndex = 0; + timeKey = _vm->_util->getTimeKey(); + if ((_vm->_draw->_cursorIndex == -1) && (handleMouse != 0) && (_lastCollKey == 0)) { _lastCollKey = checkMousePoint(1, &_lastCollId, &_lastCollAreaIndex); @@ -374,7 +377,6 @@ int16 Game_v1::checkCollisions(byte handleMouse, int16 deltaTime, if (handleMouse != 0) _vm->_draw->animateCursor(-1); - timeKey = _vm->_util->getTimeKey(); while (1) { if (_vm->_inter->_terminate) { if (handleMouse) @@ -395,7 +397,7 @@ int16 Game_v1::checkCollisions(byte handleMouse, int16 deltaTime, // Additionally, I added a 'deltaTime == -1' check there, since // when this function is called with deltaTime == -1 in inputArea, // and the return value is then discarded. - if (deltaTime < 0) { + if (deltaTime < 0 && !firstIteration) { uint32 curtime = _vm->_util->getTimeKey(); if ((deltaTime == -1) || ((curtime + deltaTime) > timeKey)) { if (pResId != 0) @@ -538,7 +540,10 @@ int16 Game_v1::checkCollisions(byte handleMouse, int16 deltaTime, if (handleMouse != 0) _vm->_draw->animateCursor(-1); - _vm->_util->delay(10); + if (deltaTime < -10) + _vm->_util->delay(10); + + firstIteration = false; } } @@ -617,7 +622,7 @@ void Game_v1::collisionsBlock(void) { int16 var_26; int16 collStackPos; Collision *collPtr; - int16 timeKey; + uint32 timeKey; byte *savedIP; if (_shouldPushColls) @@ -910,9 +915,9 @@ void Game_v1::collisionsBlock(void) { _shouldPushColls = 0; _vm->_global->_inter_execPtr = savedIP; + deltaTime = timeVal - - ((_vm->_util->getTimeKey() - timeKey) - - _vm->_video->_lastRetraceLength); + (_vm->_util->getTimeKey() - timeKey); if (deltaTime < 2) deltaTime = 2; |