XEEN: Fixes returning to main menus after viewing intro/end cutscenes

This commit is contained in:
Paul Gilbert 2018-03-05 07:21:54 -05:00
parent d48275970a
commit b04f038fb6
5 changed files with 72 additions and 32 deletions

View File

@ -538,7 +538,6 @@ int Party::subtract(ConsumableType consumableId, uint amount, PartyBank whereId,
}
void Party::notEnough(ConsumableType consumableId, PartyBank whereId, bool mode, MessageWaitType wait) {
assert(consumableId < 4 && whereId < 2);
Common::String msg = Common::String::format(
mode ? Res.NO_X_IN_THE_Y : Res.NOT_ENOUGH_X_IN_THE_Y,
Res.CONSUMABLE_NAMES[consumableId], Res.WHERE_NAMES[whereId]);

View File

@ -360,6 +360,8 @@ bool CloudsCutscenes::showCloudsIntroInner() {
}
void CloudsCutscenes::showCloudsEnding(uint finalScore) {
EventsManager &events = *g_vm->_events;
Sound &sound = *g_vm->_sound;
_mirror.load("mirror.end");
_mirrBack.load("mirrback.end");
_mergeX = 0;
@ -369,8 +371,13 @@ void CloudsCutscenes::showCloudsEnding(uint finalScore) {
if (showCloudsEnding2())
if (showCloudsEnding3())
if (showCloudsEnding4(finalScore))
if (showCloudsEnding5())
doScroll(true, false);
showCloudsEnding5();
events.clearEvents();
sound.stopAllAudio();
if (!g_vm->shouldExit())
doScroll(true, false);
}
bool CloudsCutscenes::showCloudsEnding1() {

View File

@ -869,10 +869,13 @@ bool DarkSideCutscenes::showWorldOfXeenLogo() {
}
void DarkSideCutscenes::showDarkSideEnding(uint endingScore) {
_vm->_files->setGameCc(1);
_vm->_files->_isDarkCc = true;
_vm->_sound->_musicSide = 1;
_vm->_screen->fadeOut();
FileManager &files = *g_vm->_files;
Screen &screen = *g_vm->_screen;
Sound &sound = *g_vm->_sound;
files.setGameCc(1);
files._isDarkCc = true;
sound._musicSide = 1;
screen.fadeOut();
if (showDarkSideEnding1())
if (showDarkSideEnding2())
@ -880,7 +883,10 @@ void DarkSideCutscenes::showDarkSideEnding(uint endingScore) {
showDarkSideEnding4();
showDarkSideScore(endingScore);
_vm->_screen->fadeOut();
_claw.clear();
_dragon1.clear();
screen.fadeOut();
}
bool DarkSideCutscenes::showDarkSideEnding1() {
@ -1736,24 +1742,27 @@ void DarkSideCutscenes::showDarkSideScore(uint endingScore) {
Sound &sound = *_vm->_sound;
sound.stopAllAudio();
sound.playSong("outday3.m");
Common::String str = Common::String::format(Res.DARKSIDE_ENDING1, endingScore);
showPharaohEndText(str.c_str(), Res.DARKSIDE_ENDING2);
if (_vm->shouldExit()) {
sound.playSong("outday3.m");
if (!_vm->shouldExit())
saves.saveGame();
Common::String str = Common::String::format(Res.DARKSIDE_ENDING1, endingScore);
showPharaohEndText(str.c_str(), Res.DARKSIDE_ENDING2);
if (!_vm->shouldExit())
saves.saveGame();
}
}
bool DarkSideCutscenes::showPharaohEndText(const char *msg1, const char *msg2, const char *msg3) {
Screen &screen = *_vm->_screen;
EventsManager &events = *_vm->_events;
Windows &windows = *_vm->_windows;
SpriteResource claw("claw.int");
SpriteResource dragon1("dragon1.int");
int numPages = 0 + (msg1 ? 1 : 0) + (msg2 ? 1 : 0) + (msg3 ? 1 : 0);
const char *const text[3] = { msg1, msg2, msg3 };
_claw.load("claw.int");
_dragon1.load("dragon1.int");
screen.loadBackground("3room.raw");
screen.saveBackground();
screen.loadPalette("dark.pal");
@ -1785,6 +1794,8 @@ bool DarkSideCutscenes::showPharaohEndText(const char *msg1, const char *msg2, c
events.clearEvents();
}
_claw.clear();
_dragon1.clear();
return true;
}

View File

@ -89,8 +89,8 @@ void MainMenuContainer::execute() {
// Fade/scroll in screen if first frame showing screen
if (!showFlag) {
loadBackground();
screen.doScroll(false, false);
display();
screen.doScroll(false, true);
showFlag = true;
}
@ -125,14 +125,22 @@ void MainMenuContainer::execute() {
/*------------------------------------------------------------------------*/
CloudsMainMenuContainer::CloudsMainMenuContainer() : MainMenuContainer("intro.vga", 9) {
g_vm->_sound->playSong("inn.m");
}
void CloudsMainMenuContainer::loadBackground() {
void CloudsMainMenuContainer::display() {
FileManager &files = *g_vm->_files;
Screen &screen = *g_vm->_screen;
Sound &sound = *g_vm->_sound;
sound._musicSide = 0;
files.setGameCc(0);
screen.loadPalette("mm4.pal");
screen.loadBackground("intro.raw");
screen.saveBackground();
if (!sound.isMusicPlaying())
sound.playSong("inn.m");
}
void CloudsMainMenuContainer::showMenuDialog() {
@ -153,13 +161,22 @@ DarkSideMainMenuContainer::DarkSideMainMenuContainer() : MainMenuContainer("titl
_background.load("title2.int");
}
void DarkSideMainMenuContainer::loadBackground() {
void DarkSideMainMenuContainer::display() {
FileManager &files = *g_vm->_files;
Screen &screen = *g_vm->_screen;
Sound &sound = *g_vm->_sound;
_background.draw(0, 0, Common::Point(0, 0));
_background.draw(0, 1, Common::Point(160, 0));
sound._musicSide = 1;
files.setGameCc(1);
screen.loadPalette("dark.pal");
screen.saveBackground();
if (!sound.isMusicPlaying())
sound.playSong("newbrigh.m");
}
void DarkSideMainMenuContainer::showMenuDialog() {
@ -169,16 +186,22 @@ void DarkSideMainMenuContainer::showMenuDialog() {
/*------------------------------------------------------------------------*/
WorldOfXeenMainMenuContainer::WorldOfXeenMainMenuContainer() : MainMenuContainer("world.int", 5) {
Sound &sound = *g_vm->_sound;
sound._musicSide = 1;
sound.playSong("newbrigh.m");
}
void WorldOfXeenMainMenuContainer::loadBackground() {
void WorldOfXeenMainMenuContainer::display() {
FileManager &files = *g_vm->_files;
Screen &screen = *g_vm->_screen;
Sound &sound = *g_vm->_sound;
sound._musicSide = 1;
files.setGameCc(1);
screen.loadPalette("dark.pal");
screen.loadBackground("world.raw");
screen.saveBackground();
if (!sound.isMusicPlaying())
sound.playSong("newbrigh.m");
}
void WorldOfXeenMainMenuContainer::showMenuDialog() {

View File

@ -44,9 +44,9 @@ protected:
void draw();
/**
* Load the background
* Called when the menu screen is first shown
*/
virtual void loadBackground() = 0;
virtual void display() = 0;
/**
* Shows the main menu dialog
@ -84,9 +84,9 @@ public:
class CloudsMainMenuContainer : public MainMenuContainer {
protected:
/**
* Load the background
* Called when the menu screen is first shown
*/
virtual void loadBackground();
virtual void display();
/**
* Shows the main menu dialog
@ -101,9 +101,9 @@ private:
SpriteResource _background;
protected:
/**
* Load the background
* Called when the menu screen is first shown
*/
virtual void loadBackground();
virtual void display();
/**
* Shows the main menu dialog
@ -116,9 +116,9 @@ public:
class WorldOfXeenMainMenuContainer : public MainMenuContainer {
protected:
/**
* Load the background
* Called when the menu screen is first shown
*/
virtual void loadBackground();
virtual void display();
/**
* Shows the main menu dialog