aboutsummaryrefslogtreecommitdiff
path: root/engines/gob/game_v1.cpp
diff options
context:
space:
mode:
authorSven Hesse2007-08-19 17:26:06 +0000
committerSven Hesse2007-08-19 17:26:06 +0000
commit2d15e4af78cf70fbc5063824b25b84af587b7d9b (patch)
tree65acbebc16aaf3dc7b082c47a0fb552102afe8a5 /engines/gob/game_v1.cpp
parent5103e92410e92aff9eebd6d7fc7ed3203ebba1e7 (diff)
downloadscummvm-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.cpp17
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;