aboutsummaryrefslogtreecommitdiff
path: root/kyra/script_v1.cpp
diff options
context:
space:
mode:
authorJohannes Schickel2005-12-20 10:58:07 +0000
committerJohannes Schickel2005-12-20 10:58:07 +0000
commitf241049961e4758894a0d1abefce6a225956f7d8 (patch)
tree6b1b9ff10043fc125543e5aa03acedf8c21fba65 /kyra/script_v1.cpp
parent53f13b76e41298536145b9e511c2938cc1bc1eb0 (diff)
downloadscummvm-rg350-f241049961e4758894a0d1abefce6a225956f7d8.tar.gz
scummvm-rg350-f241049961e4758894a0d1abefce6a225956f7d8.tar.bz2
scummvm-rg350-f241049961e4758894a0d1abefce6a225956f7d8.zip
Fixes gfx bug in the temple and the cave, also corrected
the encodeShape and drawShape function for CD version. svn-id: r19814
Diffstat (limited to 'kyra/script_v1.cpp')
-rw-r--r--kyra/script_v1.cpp47
1 files changed, 35 insertions, 12 deletions
diff --git a/kyra/script_v1.cpp b/kyra/script_v1.cpp
index fb6271c261..bae0bcd2c5 100644
--- a/kyra/script_v1.cpp
+++ b/kyra/script_v1.cpp
@@ -576,7 +576,7 @@ int KyraEngine::cmd_setBrandonStatusBit(ScriptState *script) {
int KyraEngine::cmd_pauseSeconds(ScriptState *script) {
debug(3, "cmd_pauseSeconds(0x%X) (%d)", script, stackPos(0));
if (stackPos(0) > 0)
- delay(stackPos(0)*1000);
+ delay(stackPos(0)*1000, false);
return 0;
}
@@ -673,15 +673,20 @@ int KyraEngine::cmd_runWSAFromBeginningToEnd(ScriptState *script) {
while (running) {
wsa_play(_wsaObjects[wsaIndex], wsaFrame++, xpos, ypos, 0);
+ _updateScreen = true;
if (wsaFrame >= wsa_getNumFrames(_wsaObjects[wsaIndex]))
running = false;
- delay(waitTime * _tickLength);
- if (worldUpdate) {
- _sprites->updateSceneAnims();
- updateAllObjectShapes();
+ uint32 continueTime = waitTime * _tickLength + _system->getMillis();
+ while (_system->getMillis() < continueTime) {
+ if (worldUpdate) {
+ _sprites->updateSceneAnims();
+ updateAllObjectShapes();
+ } else {
+ _screen->updateScreen();
+ }
+ delay(10);
}
- _updateScreen = true;
}
_screen->showMouse();
@@ -698,7 +703,12 @@ int KyraEngine::cmd_displayWSAFrame(ScriptState *script) {
int wsaIndex = stackPos(4);
_screen->hideMouse();
wsa_play(_wsaObjects[wsaIndex], frame, xpos, ypos, 0);
- delay(waitTime * _tickLength);
+ uint32 continueTime = waitTime * _tickLength + _system->getMillis();
+ while (_system->getMillis() < continueTime) {
+ _sprites->updateSceneAnims();
+ updateAllObjectShapes();
+ delay(10);
+ }
_updateScreen = true;
_screen->showMouse();
return 0;
@@ -893,9 +903,12 @@ int KyraEngine::cmd_displayWSAFrameOnHidPage(ScriptState *script) {
_screen->hideMouse();
wsa_play(_wsaObjects[wsaIndex], frame, xpos, ypos, 2);
- delay(waitTime*_tickLength);
- _sprites->updateSceneAnims();
- updateAllObjectShapes();
+ uint32 continueTime = waitTime * _tickLength + _system->getMillis();
+ while (_system->getMillis() < continueTime) {
+ _sprites->updateSceneAnims();
+ updateAllObjectShapes();
+ delay(10);
+ }
_screen->showMouse();
return 0;
@@ -920,16 +933,26 @@ int KyraEngine::cmd_displayWSASequentialFrames(ScriptState *script) {
int frame = startFrame;
while (endFrame >= frame) {
wsa_play(_wsaObjects[wsaIndex], frame, xpos, ypos, 0);
- delay(waitTime * _tickLength);
_updateScreen = true;
+ uint32 continueTime = waitTime * _tickLength + _system->getMillis();
+ while (_system->getMillis() < continueTime) {
+ _sprites->updateSceneAnims();
+ updateAllObjectShapes();
+ delay(10);
+ }
++frame;
}
} else {
int frame = endFrame;
while (startFrame <= frame) {
wsa_play(_wsaObjects[wsaIndex], frame, xpos, ypos, 0);
- delay(waitTime * _tickLength);
_updateScreen = true;
+ uint32 continueTime = waitTime * _tickLength + _system->getMillis();
+ while (_system->getMillis() < continueTime) {
+ _sprites->updateSceneAnims();
+ updateAllObjectShapes();
+ delay(10);
+ }
--frame;
}
}