aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorPaul Gilbert2017-12-18 08:19:27 -0500
committerPaul Gilbert2017-12-18 08:19:27 -0500
commitda8c9a718114cf1dba85584e2ea5f8617087dcda (patch)
treead3c800e95807848f1e75a2e5c10176699635957 /engines
parent7fe75a0b6c7c6f7ebff4449f55fc2e2c7d94a078 (diff)
downloadscummvm-rg350-da8c9a718114cf1dba85584e2ea5f8617087dcda.tar.gz
scummvm-rg350-da8c9a718114cf1dba85584e2ea5f8617087dcda.tar.bz2
scummvm-rg350-da8c9a718114cf1dba85584e2ea5f8617087dcda.zip
XEEN: Fixes for Sphinx cutscene
Diffstat (limited to 'engines')
-rw-r--r--engines/xeen/locations.cpp27
1 files changed, 22 insertions, 5 deletions
diff --git a/engines/xeen/locations.cpp b/engines/xeen/locations.cpp
index 2da3487d25..392b7007cd 100644
--- a/engines/xeen/locations.cpp
+++ b/engines/xeen/locations.cpp
@@ -2121,11 +2121,16 @@ int SphinxCutscene::show() {
bgSurface.copyFrom(screen);
for (int idx = 8; idx >= 0; --idx) {
+ events.updateGameCounter();
screen.blitFrom(bgSurface);
- sprites1.draw(0, 0, Common::Point(SPHINX_X1[idx], SPHINX_Y1[idx]));
- sprites1.draw(0, 1, Common::Point(SPHINX_X2[idx], SPHINX_Y1[idx]));
+ sprites1.draw(0, 0, Common::Point(SPHINX_X1[idx], SPHINX_Y1[idx]), 0, idx);
+ sprites1.draw(0, 1, Common::Point(SPHINX_X2[idx], SPHINX_Y1[idx]), 0, idx);
windows[0].update();
+
events.wait(1);
+ checkEvents(g_vm);
+ if (g_vm->shouldQuit() || _buttonValue)
+ goto exit;
}
sound.setMusicVolume(48);
@@ -2144,13 +2149,17 @@ int SphinxCutscene::show() {
}
do {
+ events.updateGameCounter();
sprites1.draw(0, 0, Common::Point(0, 0));
sprites1.draw(0, 1, Common::Point(160, 0));
sprites1.draw(0, g_vm->getRandomNumber(2, 10));
updateSubtitles();
events.wait(1);
- } while (!g_vm->shouldQuit() && (sound.isPlaying() || _subtitleCtr));
+ checkEvents(g_vm);
+ if (g_vm->shouldQuit() || _buttonValue)
+ goto exit;
+ } while (sound.isPlaying() || _subtitleCtr);
sprites1.draw(0, 0, Common::Point(0, 0));
sprites1.draw(0, 1, Common::Point(160, 0));
@@ -2160,16 +2169,24 @@ int SphinxCutscene::show() {
if (!_mazeFlag) {
for (int idx = 0; idx < 8; ++idx) {
+ events.updateGameCounter();
screen.blitFrom(bgSurface);
- sprites1.draw(0, 0, Common::Point(SPHINX_X1[idx], SPHINX_Y1[idx]));
- sprites1.draw(0, 1, Common::Point(SPHINX_X2[idx], SPHINX_Y1[idx]));
+ sprites1.draw(0, 0, Common::Point(SPHINX_X1[idx], SPHINX_Y1[idx]), 0, idx);
+ sprites1.draw(0, 1, Common::Point(SPHINX_X2[idx], SPHINX_Y1[idx]), 0, idx);
windows[0].update();
+
events.wait(1);
+ checkEvents(g_vm);
+ if (g_vm->shouldQuit() || _buttonValue)
+ goto exit;
}
screen.blitFrom(bgSurface);
windows[0].update();
}
+exit:
+ screen.blitFrom(bgSurface);
+ windows[0].update();
setNewLocation();