aboutsummaryrefslogtreecommitdiff
path: root/engines/lure/intro.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/lure/intro.cpp')
-rw-r--r--engines/lure/intro.cpp39
1 files changed, 8 insertions, 31 deletions
diff --git a/engines/lure/intro.cpp b/engines/lure/intro.cpp
index e8107e2f1a..3f939c6389 100644
--- a/engines/lure/intro.cpp
+++ b/engines/lure/intro.cpp
@@ -47,47 +47,24 @@ static const AnimRecord anim_screens[] = {{0x40, 0, true, true}, {0x42, 1, false
// should be aborted
bool Introduction::showScreen(uint16 screenId, uint16 paletteId, uint16 delaySize) {
+ Events &events = Events::getReference();
_screen.screen().loadScreen(screenId);
_screen.update();
Palette p(paletteId);
_screen.paletteFadeIn(&p);
- bool result = delay(delaySize);
- if (Events::getReference().quitFlag) return true;
+ bool result = events.interruptableDelay(delaySize);
+ if (events.quitFlag) return true;
_screen.paletteFadeOut();
return result;
}
-// delay
-// Delays for a given number of milliseconds. If it returns true, it indicates that
-// Escape has been pressed, and the introduction should be aborted.
-
-bool Introduction::delay(uint32 milliseconds) {
- Events &events = Events::getReference();
- uint32 delayCtr = _system.getMillis() + milliseconds;
-
- while (_system.getMillis() < delayCtr) {
- if (events.quitFlag) return true;
-
- if (events.pollEvent()) {
- if (events.type() == Common::EVENT_KEYDOWN)
- return events.event().kbd.keycode == 27;
- else if (events.type() == Common::EVENT_LBUTTONDOWN)
- return false;
- }
-
- uint32 delayAmount = delayCtr - _system.getMillis();
- if (delayAmount > 10) delayAmount = 10;
- _system.delayMillis(delayAmount);
- }
- return false;
-}
-
// show
// Main method for the introduction sequence
bool Introduction::show() {
+ Events &events = Events::getReference();
_screen.setPaletteEmpty();
// Initial game company and then game screen
@@ -109,13 +86,13 @@ bool Introduction::show() {
anim = new AnimationSequence(_screen, _system, curr_anim->resourceId,
coll.getPalette(curr_anim->paletteIndex), fadeIn);
if (curr_anim->initialPause)
- if (delay(12000)) return true;
+ if (events.interruptableDelay(12000)) return true;
result = false;
switch (anim->show()) {
case ABORT_NONE:
if (curr_anim->endingPause) {
- result = delay(12000);
+ result = events.interruptableDelay(12000);
}
break;
@@ -136,9 +113,9 @@ bool Introduction::show() {
result = false;
anim = new AnimationSequence(_screen, _system, 0x48, coll.getPalette(4), false);
do {
- result = delay(2000);
+ result = events.interruptableDelay(2000);
_screen.paletteFadeOut();
- if (!result) result = delay(500);
+ if (!result) result = events.interruptableDelay(500);
if (result) break;
} while (anim->step());
delete anim;