diff options
author | Paul Gilbert | 2017-12-17 16:55:25 -0500 |
---|---|---|
committer | Paul Gilbert | 2017-12-17 16:55:25 -0500 |
commit | d413344c8a0728e023ea76da2c970bd180177bae (patch) | |
tree | 203bfbe7a0a4dfe131cb5a60de57cc1e4b650d40 | |
parent | 34b85b3c5d0b1a042ce0c3d929dc1425cfde833a (diff) | |
download | scummvm-rg350-d413344c8a0728e023ea76da2c970bd180177bae.tar.gz scummvm-rg350-d413344c8a0728e023ea76da2c970bd180177bae.tar.bz2 scummvm-rg350-d413344c8a0728e023ea76da2c970bd180177bae.zip |
XEEN: Allow Dwarf Mines cutscene to be interrupted
Because I'm already sick of letting it play all the way through
-rw-r--r-- | engines/xeen/locations.cpp | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/engines/xeen/locations.cpp b/engines/xeen/locations.cpp index 6aa8fbf4fc..e4b1ae2143 100644 --- a/engines/xeen/locations.cpp +++ b/engines/xeen/locations.cpp @@ -1829,8 +1829,6 @@ int DwarfCutscene::show() { // Zoom in on the mine entrance for (int idx = (_isDarkCc ? 10 : 12); idx >= 0; --idx) { - if (g_vm->shouldQuit()) - return 0; events.updateGameCounter(); screen.blitFrom(savedBg); @@ -1843,7 +1841,11 @@ int DwarfCutscene::show() { Common::Point(DWARF_X2[idx], DWARF_Y[_isDarkCc][idx]), 0, idx); windows[0].update(); + events.wait(1); + checkEvents(g_vm); + if (g_vm->shouldQuit() || _buttonValue) + goto exit; } // Have character rise up from the bottom of the screen @@ -1856,7 +1858,11 @@ int DwarfCutscene::show() { screen.blitFrom(savedBg); sprites2.draw(0, 0, Common::Point(DWARF2_X[_isDarkCc][idx], DWARF2_Y[_isDarkCc][idx]), 0, idx); windows[0].update(); + events.wait(1); + checkEvents(g_vm); + if (g_vm->shouldQuit() || _buttonValue) + goto exit; } sound.setMusicVolume(48); @@ -1864,7 +1870,7 @@ int DwarfCutscene::show() { sprites2.draw(0, 0); windows[0].update(); - for (int idx = 0; !g_vm->shouldQuit() && idx < (_isDarkCc ? 2 : 3); ++idx) { + for (int idx = 0; idx < (_isDarkCc ? 2 : 3); ++idx) { switch (idx) { case 0: sound.playSound(_isDarkCc ? "pass2.voc" : "dwarf10.voc"); @@ -1898,14 +1904,19 @@ int DwarfCutscene::show() { updateSubtitles(); events.timeMark5(); - while (!g_vm->shouldQuit() && events.timeElapsed5() < 2) + while (events.timeElapsed5() < 2) { events.pollEventsAndWait(); - } while (!g_vm->shouldQuit() && (sound.isPlaying() || _subtitleCtr)); + checkEvents(g_vm); + if (g_vm->shouldQuit() || _buttonValue) + goto exit; + } + } while (sound.isPlaying() || _subtitleCtr); while (!g_vm->shouldQuit() && events.timeElapsed() < 3) events.pollEventsAndWait(); } +exit: sprites2.draw(0, 0); if (!_isDarkCc) sprites3.draw(0, 1); |