aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/kyra/lol.cpp19
1 files changed, 12 insertions, 7 deletions
diff --git a/engines/kyra/lol.cpp b/engines/kyra/lol.cpp
index a5e9f38ffe..d2939a9b92 100644
--- a/engines/kyra/lol.cpp
+++ b/engines/kyra/lol.cpp
@@ -1780,23 +1780,28 @@ uint16 *LoLEngine::getCharacterOrMonsterProtectionAgainstItems(int id) {
}
void LoLEngine::delay(uint32 millis, bool doUpdate, bool) {
- int del = (int)(millis);
- while (del > 0 && !shouldQuit()) {
+ while (millis && !shouldQuit()) {
if (doUpdate)
update();
else
updateInput();
- int step = del >= _tickLength ? _tickLength : del;
+
+ uint32 step = MIN<uint32>(millis, _tickLength);
_system->delayMillis(step);
- del -= step;
+ millis -= step;
}
}
void LoLEngine::delayUntil(uint32 timeStamp) {
- int del = (int)(timeStamp - _system->getMillis());
- while (del > 0) {
+ const uint32 curTime = _system->getMillis();
+ if (curTime < timeStamp)
+ return;
+
+ uint32 del = timeStamp - curTime;
+ while (del) {
updateInput();
- int step = del >= _tickLength ? _tickLength : del;
+
+ uint32 step = MIN<uint32>(del, _tickLength);
_system->delayMillis(step);
del -= step;
}