aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorPaul Gilbert2017-12-17 11:31:13 -0500
committerPaul Gilbert2017-12-17 11:31:13 -0500
commit9ff4159a7960a71b65625ce48ab710611dae2bf9 (patch)
tree13df8598697e46f8c29fca01aa1ed887dc519a9d /engines
parenta124b1d26a6b2e7d121a48b45d5aaf9f413dbe80 (diff)
downloadscummvm-rg350-9ff4159a7960a71b65625ce48ab710611dae2bf9.tar.gz
scummvm-rg350-9ff4159a7960a71b65625ce48ab710611dae2bf9.tar.bz2
scummvm-rg350-9ff4159a7960a71b65625ce48ab710611dae2bf9.zip
XEEN: Fix Dwarf Mine cutscene
Diffstat (limited to 'engines')
-rw-r--r--engines/xeen/locations.cpp26
1 files changed, 18 insertions, 8 deletions
diff --git a/engines/xeen/locations.cpp b/engines/xeen/locations.cpp
index 5ce6d92292..dcb9db6758 100644
--- a/engines/xeen/locations.cpp
+++ b/engines/xeen/locations.cpp
@@ -1821,32 +1821,42 @@ int DwarfCutscene::show() {
Windows &windows = *g_vm->_windows;
SpriteResource sprites1(_isDarkCc ? "town1.zom" : "dwarf1.vga");
- SpriteResource sprites2(_isDarkCc ? "town2.zom" : "dwarf2.vga");
- SpriteResource sprites3(_isDarkCc ? "town3.zom" : "dwarf3.vga");
+ SpriteResource sprites2(_isDarkCc ? "town2.zom" : "dwarf3.vga");
+ SpriteResource sprites3(_isDarkCc ? "town3.zom" : "dwarf2.vga");
getNewLocation();
// Save the screen contents
Graphics::ManagedSurface savedBg;
savedBg.copyFrom(screen);
- for (int idx = 0; idx < (_isDarkCc ? 10 : 12); ++idx) {
+ // 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);
sprites1.draw(0, 0,
- Common::Point(DWARF_X0[_isDarkCc][idx], DWARF_Y[_isDarkCc][idx]));
+ Common::Point(DWARF_X0[_isDarkCc][idx], DWARF_Y[_isDarkCc][idx]), 0, idx);
sprites1.draw(0, 1,
- Common::Point(DWARF_X1[_isDarkCc][idx], DWARF_Y[_isDarkCc][idx]));
+ Common::Point(DWARF_X1[_isDarkCc][idx], DWARF_Y[_isDarkCc][idx]), 0, idx);
if (_isDarkCc)
sprites1.draw(0, 2,
- Common::Point(DWARF_X2[idx], DWARF_Y[_isDarkCc][idx]));
+ Common::Point(DWARF_X2[idx], DWARF_Y[_isDarkCc][idx]), 0, idx);
windows[0].update();
events.wait(1);
}
+ // Have character rise up from the bottom of the screen
savedBg.copyFrom(screen);
for (int idx = 15; idx >= 0; --idx) {
+ if (g_vm->shouldQuit())
+ return 0;
+ events.updateGameCounter();
+
screen.blitFrom(savedBg);
- sprites2.draw(0, 0, Common::Point(DWARF2_X[_isDarkCc][idx], DWARF2_Y[_isDarkCc][idx]));
+ sprites2.draw(0, 0, Common::Point(DWARF2_X[_isDarkCc][idx], DWARF2_Y[_isDarkCc][idx]), 0, idx);
windows[0].update();
events.wait(1);
}
@@ -1856,7 +1866,7 @@ int DwarfCutscene::show() {
sprites2.draw(0, 0);
windows[0].update();
- for (int idx = 0; idx < (_isDarkCc ? 2 : 3); ++idx) {
+ for (int idx = 0; !g_vm->shouldQuit() && idx < (_isDarkCc ? 2 : 3); ++idx) {
switch (idx) {
case 0:
sound.playSound(_isDarkCc ? "pass2.voc" : "dwarf10.voc");