diff options
-rw-r--r-- | engines/xeen/worldofxeen/darkside_cutscenes.cpp | 12 | ||||
-rw-r--r-- | engines/xeen/worldofxeen/darkside_cutscenes.h | 13 | ||||
-rw-r--r-- | engines/xeen/worldofxeen/worldofxeen.cpp | 19 | ||||
-rw-r--r-- | engines/xeen/xeen.cpp | 2 |
4 files changed, 33 insertions, 13 deletions
diff --git a/engines/xeen/worldofxeen/darkside_cutscenes.cpp b/engines/xeen/worldofxeen/darkside_cutscenes.cpp index 89ac9c6783..904e94e4b2 100644 --- a/engines/xeen/worldofxeen/darkside_cutscenes.cpp +++ b/engines/xeen/worldofxeen/darkside_cutscenes.cpp @@ -134,10 +134,18 @@ bool DarkSideCutscenes::showDarkSideTitle() { screen.fadeIn(); WAIT(60); + screen.fadeOut(8); return true; } bool DarkSideCutscenes::showDarkSideIntro() { + _vm->_files->_isDarkCc = true; + _vm->_files->setGameCc(1); + + return showDarkSideIntro1(); +} + +bool DarkSideCutscenes::showDarkSideIntro1() { EventsManager &events = *_vm->_events; Screen &screen = *_vm->_screen; Sound &sound = *_vm->_sound; @@ -151,15 +159,13 @@ bool DarkSideCutscenes::showDarkSideIntro() { 160, 155, 150, 145, 140, 135, 130, 125, 120, 115, 110, 105, 98, 90, 82 }; - _vm->_files->_isDarkCc = true; _subtitles.load("special.bin"); - screen.fadeOut(8); screen.loadPalette("dark.pal"); screen.loadBackground("pyramid2.raw"); screen.loadPage(0); screen.loadPage(1); screen.loadBackground("pyramid3.raw"); - screen.saveBackground(1); + screen.saveBackground(); SpriteResource title("title.int"); SpriteResource pyraTop("pyratop.int"); diff --git a/engines/xeen/worldofxeen/darkside_cutscenes.h b/engines/xeen/worldofxeen/darkside_cutscenes.h index f2dd5c5045..c16a67f0b2 100644 --- a/engines/xeen/worldofxeen/darkside_cutscenes.h +++ b/engines/xeen/worldofxeen/darkside_cutscenes.h @@ -34,22 +34,27 @@ namespace WorldOfXeen { class DarkSideCutscenes : public Cutscenes { private: /** - * Shows the part 1 of the Dark Side ending, everything up to Corak appearing + * Shows part 1 of the Dark Side intro + */ + bool showDarkSideIntro1(); + + /** + * Shows part 1 of the Dark Side ending, everything up to Corak appearing */ bool showDarkSideEnding1(); /** - * Shows the part 2 of the Dark Side ending, exposition until start of fighting + * Shows part 2 of the Dark Side ending, exposition until start of fighting */ bool showDarkSideEnding2(); /** - * Shows the part 3 of the Dark Side ending, the fighting + * Shows part 3 of the Dark Side ending, the fighting */ bool showDarkSideEnding3(); /** - * Shows the part 4 of the Dark Side ending, the self-destruct and castle explosion + * Shows part 4 of the Dark Side ending, the self-destruct and castle explosion */ bool showDarkSideEnding4(); diff --git a/engines/xeen/worldofxeen/worldofxeen.cpp b/engines/xeen/worldofxeen/worldofxeen.cpp index 4ea33eb6e2..f0fb5b9ba2 100644 --- a/engines/xeen/worldofxeen/worldofxeen.cpp +++ b/engines/xeen/worldofxeen/worldofxeen.cpp @@ -25,6 +25,7 @@ #include "xeen/worldofxeen/clouds_cutscenes.h" #include "xeen/worldofxeen/worldofxeen_menu.h" #include "xeen/sound.h" +#include "common/config-manager.h" namespace Xeen { namespace WorldOfXeen { @@ -176,12 +177,22 @@ void WorldOfXeenEngine::showCutscene(const Common::String &name, int status, uin } void WorldOfXeenEngine::showStartup() { - if (getGameID() == GType_Clouds) { - if (showCloudsTitle()) + bool seenIntro = ConfMan.hasKey("seen_intro") && ConfMan.getBool("seen_intro"); + + // Show the title animation + bool completedTitle = (getGameID() == GType_Clouds) ? + showCloudsTitle() : showDarkSideTitle(); + _sound->stopAllAudio(); + + // Unless user aborted the title, go + if (completedTitle && !seenIntro) { + if (getGameID() == GType_Clouds) showCloudsIntro(); - } else { - if (showDarkSideTitle()) + else showDarkSideIntro(); + + ConfMan.setBool("seen_intro", true); + ConfMan.flushToDisk(); } _gameMode = GMODE_MENU; diff --git a/engines/xeen/xeen.cpp b/engines/xeen/xeen.cpp index 7149b9688f..13c831bf3a 100644 --- a/engines/xeen/xeen.cpp +++ b/engines/xeen/xeen.cpp @@ -190,8 +190,6 @@ void XeenEngine::playGame() { } void XeenEngine::play() { - _gameMode = GMODE_NONE; - _interface->setup(); _screen->loadBackground("back.raw"); _screen->loadPalette("mm4.pal"); |