aboutsummaryrefslogtreecommitdiff
path: root/engines/xeen/worldofxeen
diff options
context:
space:
mode:
Diffstat (limited to 'engines/xeen/worldofxeen')
-rw-r--r--engines/xeen/worldofxeen/darkside_cutscenes.cpp12
-rw-r--r--engines/xeen/worldofxeen/darkside_cutscenes.h13
-rw-r--r--engines/xeen/worldofxeen/worldofxeen.cpp19
3 files changed, 33 insertions, 11 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;