[Scummvm-git-logs] scummvm master -> b04f038fb664fa349d0f343e279490de560e05aa

dreammaster dreammaster at scummvm.org
Mon Mar 5 13:22:00 CET 2018


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

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


Commit: b04f038fb664fa349d0f343e279490de560e05aa
    https://github.com/scummvm/scummvm/commit/b04f038fb664fa349d0f343e279490de560e05aa
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2018-03-05T07:21:54-05:00

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

Changed paths:
    engines/xeen/party.cpp
    engines/xeen/worldofxeen/clouds_cutscenes.cpp
    engines/xeen/worldofxeen/darkside_cutscenes.cpp
    engines/xeen/worldofxeen/worldofxeen_menu.cpp
    engines/xeen/worldofxeen/worldofxeen_menu.h


diff --git a/engines/xeen/party.cpp b/engines/xeen/party.cpp
index 62e74ae..f6c1fe5 100644
--- a/engines/xeen/party.cpp
+++ b/engines/xeen/party.cpp
@@ -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]);
diff --git a/engines/xeen/worldofxeen/clouds_cutscenes.cpp b/engines/xeen/worldofxeen/clouds_cutscenes.cpp
index fb1440e..7a85772 100644
--- a/engines/xeen/worldofxeen/clouds_cutscenes.cpp
+++ b/engines/xeen/worldofxeen/clouds_cutscenes.cpp
@@ -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() {
diff --git a/engines/xeen/worldofxeen/darkside_cutscenes.cpp b/engines/xeen/worldofxeen/darkside_cutscenes.cpp
index 4a0489c..171ce06 100644
--- a/engines/xeen/worldofxeen/darkside_cutscenes.cpp
+++ b/engines/xeen/worldofxeen/darkside_cutscenes.cpp
@@ -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;
 }
 
diff --git a/engines/xeen/worldofxeen/worldofxeen_menu.cpp b/engines/xeen/worldofxeen/worldofxeen_menu.cpp
index 36d6b7c..3e4e144 100644
--- a/engines/xeen/worldofxeen/worldofxeen_menu.cpp
+++ b/engines/xeen/worldofxeen/worldofxeen_menu.cpp
@@ -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() {
diff --git a/engines/xeen/worldofxeen/worldofxeen_menu.h b/engines/xeen/worldofxeen/worldofxeen_menu.h
index f3cee75..e753665 100644
--- a/engines/xeen/worldofxeen/worldofxeen_menu.h
+++ b/engines/xeen/worldofxeen/worldofxeen_menu.h
@@ -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





More information about the Scummvm-git-logs mailing list