diff options
-rw-r--r-- | engines/lure/events.cpp | 7 | ||||
-rw-r--r-- | engines/lure/intro.cpp | 28 | ||||
-rw-r--r-- | engines/lure/intro.h | 1 |
3 files changed, 26 insertions, 10 deletions
diff --git a/engines/lure/events.cpp b/engines/lure/events.cpp index 68dc808392..c93ae257e9 100644 --- a/engines/lure/events.cpp +++ b/engines/lure/events.cpp @@ -205,10 +205,9 @@ bool Events::interruptableDelay(uint32 milliseconds) { 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; + if ((events.type() == Common::EVENT_KEYDOWN) || + (events.type() == Common::EVENT_LBUTTONDOWN)) + return true; } uint32 delayAmount = delayCtr - g_system->getMillis(); diff --git a/engines/lure/intro.cpp b/engines/lure/intro.cpp index f1ca06d90e..e59f21d3ad 100644 --- a/engines/lure/intro.cpp +++ b/engines/lure/intro.cpp @@ -59,18 +59,34 @@ bool Introduction::showScreen(uint16 screenId, uint16 paletteId, uint16 delaySiz Palette p(paletteId); _screen.paletteFadeIn(&p); - bool result = events.interruptableDelay(delaySize); + bool result = interruptableDelay(delaySize); if (events.quitFlag) return true; _screen.paletteFadeOut(); return result; } +// interruptableDelay +// Delays for a given number of milliseconds. If it returns true, it indicates that +// the Escape has been pressed to abort whatever sequence is being displayed + +bool Introduction::interruptableDelay(uint32 milliseconds) { + Events &events = Events::getReference(); + + if (events.interruptableDelay(milliseconds)) { + if (events.type() == Common::EVENT_KEYDOWN) + return events.event().kbd.keycode == 27; + else if (events.type() == Common::EVENT_LBUTTONDOWN) + return false; + } + + 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 @@ -104,13 +120,13 @@ bool Introduction::show() { anim = new AnimationSequence(_screen, _system, curr_anim->resourceId, coll.getPalette(curr_anim->paletteIndex), fadeIn); if (curr_anim->initialPause != 0) - if (events.interruptableDelay(curr_anim->initialPause * 1000 / 50)) return true; + if (interruptableDelay(curr_anim->initialPause * 1000 / 50)) return true; result = false; switch (anim->show()) { case ABORT_NONE: if (curr_anim->endingPause != 0) { - result = events.interruptableDelay(curr_anim->endingPause * 1000 / 50); + result = interruptableDelay(curr_anim->endingPause * 1000 / 50); } break; @@ -134,9 +150,9 @@ bool Introduction::show() { result = false; anim = new AnimationSequence(_screen, _system, 0x48, coll.getPalette(4), false); do { - result = events.interruptableDelay(2000); + result = interruptableDelay(2000); _screen.paletteFadeOut(); - if (!result) result = events.interruptableDelay(500); + if (!result) result = interruptableDelay(500); if (result) break; } while (anim->step()); delete anim; diff --git a/engines/lure/intro.h b/engines/lure/intro.h index 14c733e16b..d6b42c455b 100644 --- a/engines/lure/intro.h +++ b/engines/lure/intro.h @@ -36,6 +36,7 @@ private: OSystem &_system; bool showScreen(uint16 screenId, uint16 paletteId, uint16 delaySize); + bool interruptableDelay(uint32 milliseconds); public: Introduction(Screen &screen, OSystem &system): _screen(screen), _system(system) {} |