From 72d9c94289e21ca177b6c27bb4fb6df916b58ee6 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Wed, 25 Apr 2018 20:27:12 -0400 Subject: XEEN: Fixes for Dark Side ending --- engines/xeen/scripts.cpp | 3 +++ engines/xeen/worldofxeen/darkside_cutscenes.cpp | 8 ++++++-- engines/xeen/worldofxeen/worldofxeen_resources.cpp | 13 ++++++------- 3 files changed, 15 insertions(+), 9 deletions(-) (limited to 'engines') diff --git a/engines/xeen/scripts.cpp b/engines/xeen/scripts.cpp index 22f65fdc24..b40ba3059f 100644 --- a/engines/xeen/scripts.cpp +++ b/engines/xeen/scripts.cpp @@ -238,6 +238,9 @@ int Scripts::checkEvents() { _vm->_mode = oldMode; windows.closeAll(); + if (g_vm->shouldExit()) + return g_vm->_gameMode; + if (_scriptExecuted) intf.clearEvents(); if (_scriptExecuted || intf._objNumber == -1 || _dirFlag) { diff --git a/engines/xeen/worldofxeen/darkside_cutscenes.cpp b/engines/xeen/worldofxeen/darkside_cutscenes.cpp index b30bb71324..d7f821fe6b 100644 --- a/engines/xeen/worldofxeen/darkside_cutscenes.cpp +++ b/engines/xeen/worldofxeen/darkside_cutscenes.cpp @@ -1285,7 +1285,7 @@ bool DarkSideCutscenes::showDarkSideEnding3() { screen.horizMerge(0); sc16.draw(0, 0, Common::Point(7, 29)); _subtitles.show(); - sound.playSound("fail1.voc"); + sound.playVoice("fail1.voc", 2); for (int idx = 0; idx < 5; ++idx) { screen.horizMerge(0); @@ -1689,21 +1689,25 @@ void DarkSideCutscenes::showDarkSideScore(uint endingScore) { sound.stopAllAudio(); - if (g_vm->shouldExit()) { + if (!g_vm->shouldExit()) { sound.playSong("outday3.m"); Common::String str = Common::String::format(Res.DARKSIDE_ENDING1, endingScore); showPharaohEndText(str.c_str(), Res.DARKSIDE_ENDING2); + g_vm->_mode = MODE_INTERACTIVE; if (!g_vm->shouldExit()) saves.saveGame(); } } bool DarkSideCutscenes::showPharaohEndText(const char *msg1, const char *msg2, const char *msg3) { + Windows &windows = *g_vm->_windows; _ball.load("ball.int"); _claw.load("claw.int"); _dragon1.load("dragon1.int"); + + windows[39].setBounds(Common::Rect(12, 8, 162, 198)); bool result = showPharaohEndTextInner(msg1, msg2, msg3); _ball.clear(); diff --git a/engines/xeen/worldofxeen/worldofxeen_resources.cpp b/engines/xeen/worldofxeen/worldofxeen_resources.cpp index 5bd6247d08..f0d35c9090 100644 --- a/engines/xeen/worldofxeen/worldofxeen_resources.cpp +++ b/engines/xeen/worldofxeen/worldofxeen_resources.cpp @@ -25,9 +25,10 @@ namespace Xeen { namespace WorldOfXeen { -const char *const WorldOfXeenResources::CLOUDS_INTRO1 = "\xC" "00\xB" "082\x9" "040\x3" - "cKing Burlock\xB" "190\x9" "040Peasants\xB" "082\x9" "247" - "Lord Xeen\xB" "190\x9" "258Xeen's Pet\xB" "179\x9" "150Crodo"; +// FIXME: These should really go into into the xeen.ccs datafile +const char *const WorldOfXeenResources::CLOUDS_INTRO1 = "\f00\v082\t040\x3" + "cKing Burlock\v190\t040Peasants\v082\t247" + "Lord Xeen\v190\t258Xeen's Pet\v179\t150Crodo"; const char *const WorldOfXeenResources::DARKSIDE_ENDING1 = "\n\x3" "cCongratulations\n" "\n" @@ -53,10 +54,8 @@ const char *const WorldOfXeenResources::DARKSIDE_ENDING2 = "\n" "Load your game afterwards and come visit me in the " "Great Pyramid for further instructions"; -const char *const WorldOfXeenResources::PHAROAH_ENDING_TEXT1 = "\xC" "d\xB" - "001\x9" "001%s\x3" "c\x9" "000\xB" "180Press a Key!\x3" "l"; -const char *const WorldOfXeenResources::PHAROAH_ENDING_TEXT2 = "\xC" "04\xB" - "000\x9" "000%s\x3" "c\x9" "000\xB" "180Press a Key!\x3" "l\xC" "d"; +const char *const WorldOfXeenResources::PHAROAH_ENDING_TEXT1 = "\fd\v001\t001%s\x3" "c\t000\v180Press a Key!\x3" "l"; +const char *const WorldOfXeenResources::PHAROAH_ENDING_TEXT2 = "\f04\v000\t000%s\x3" "c\t000\v180Press a Key!\x3" "l\fd"; } // End of namespace WorldOfXeen } // End of namespace Xeen -- cgit v1.2.3