aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohannes Schickel2008-03-28 01:10:58 +0000
committerJohannes Schickel2008-03-28 01:10:58 +0000
commit5fd6af307195d5a04f18a9d00f8f03456ed6e5f9 (patch)
tree5fc243e8d4444f32547dab7608a8d58f58c298b3
parent615a40d19cb7d2129c8176dc6456ee52c81c0d03 (diff)
downloadscummvm-rg350-5fd6af307195d5a04f18a9d00f8f03456ed6e5f9.tar.gz
scummvm-rg350-5fd6af307195d5a04f18a9d00f8f03456ed6e5f9.tar.bz2
scummvm-rg350-5fd6af307195d5a04f18a9d00f8f03456ed6e5f9.zip
Finished o2_delay implementation.
svn-id: r31284
-rw-r--r--engines/kyra/script_v2.cpp22
1 files changed, 17 insertions, 5 deletions
diff --git a/engines/kyra/script_v2.cpp b/engines/kyra/script_v2.cpp
index 3ab5bc6f14..cde2bb51d5 100644
--- a/engines/kyra/script_v2.cpp
+++ b/engines/kyra/script_v2.cpp
@@ -621,12 +621,24 @@ int KyraEngine_v2::o2_delaySecs(ScriptState *script) {
int KyraEngine_v2::o2_delay(ScriptState *script) {
debugC(3, kDebugLevelScriptFuncs, "KyraEngine_v2::o2_delay(%p) (%d, %d)", (const void *)script, stackPos(0), stackPos(1));
- if (stackPos(1))
- warning("unimplemented o2_delay subfunction");
- //if (stackPos(1))
- // sub_27100(stackPos(0) * _tickLength);
- //else
+ if (stackPos(1)) {
+ uint32 maxWaitTime = _system->getMillis() + stackPos(0) * _tickLength;
+ while (_system->getMillis() < maxWaitTime) {
+ int inputFlag = checkInput(0);
+ removeInputTop();
+
+ if (inputFlag == 198 || inputFlag == 199)
+ return 1;
+
+ if (_chatText)
+ updateWithText();
+ else
+ update();
+ _system->delayMillis(10);
+ }
+ } else {
delay(stackPos(0) * _tickLength, true);
+ }
return 0;
}