[Scummvm-git-logs] scummvm master -> 633c1a477d91e4953476190beeb8db4f4dafc029

dreammaster dreammaster at scummvm.org
Sun Mar 4 04:01:04 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:
633c1a477d XEEN: Add Swords of Xeen main menu


Commit: 633c1a477d91e4953476190beeb8db4f4dafc029
    https://github.com/scummvm/scummvm/commit/633c1a477d91e4953476190beeb8db4f4dafc029
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2018-03-03T22:00:57-05:00

Commit Message:
XEEN: Add Swords of Xeen main menu

Changed paths:
  A engines/xeen/swordsofxeen/swordsofxeen_menu.cpp
  A engines/xeen/swordsofxeen/swordsofxeen_menu.h
    engines/xeen/module.mk
    engines/xeen/swordsofxeen/swordsofxeen.cpp
    engines/xeen/worldofxeen/worldofxeen.cpp


diff --git a/engines/xeen/module.mk b/engines/xeen/module.mk
index 2a5ef61..1b3fbcb 100644
--- a/engines/xeen/module.mk
+++ b/engines/xeen/module.mk
@@ -8,6 +8,7 @@ MODULE_OBJS := \
 	worldofxeen/worldofxeen.o \
 	worldofxeen/worldofxeen_resources.o \
 	swordsofxeen/swordsofxeen.o \
+	swordsofxeen/swordsofxeen_menu.h \
 	character.o \
 	combat.o \
 	cutscenes.o \
diff --git a/engines/xeen/swordsofxeen/swordsofxeen.cpp b/engines/xeen/swordsofxeen/swordsofxeen.cpp
index 3861367..bbe0a74 100644
--- a/engines/xeen/swordsofxeen/swordsofxeen.cpp
+++ b/engines/xeen/swordsofxeen/swordsofxeen.cpp
@@ -21,6 +21,7 @@
  */
 
 #include "xeen/swordsofxeen/swordsofxeen.h"
+#include "xeen/swordsofxeen/swordsofxeen_menu.h"
 
 namespace Xeen {
 namespace SwordsOfXeen {
@@ -30,9 +31,7 @@ SwordsOfXeenEngine::SwordsOfXeenEngine(OSystem *syst, const XeenGameDescription
 }
 
 void SwordsOfXeenEngine::showMainMenu() {
-	// TODO: Implement Swords of Xeen main menu. For now, skip to playing game
-	_saves->newGame();
-	_gameMode = GMODE_PLAY_GAME;
+	MainMenu::show(this);
 }
 
 void SwordsOfXeenEngine::death() {
diff --git a/engines/xeen/swordsofxeen/swordsofxeen_menu.cpp b/engines/xeen/swordsofxeen/swordsofxeen_menu.cpp
new file mode 100644
index 0000000..f0ddccd
--- /dev/null
+++ b/engines/xeen/swordsofxeen/swordsofxeen_menu.cpp
@@ -0,0 +1,106 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "xeen/swordsofxeen/swordsofxeen_menu.h"
+#include "xeen/dialogs_difficulty.h"
+#include "xeen/xeen.h"
+
+namespace Xeen {
+namespace SwordsOfXeen {
+
+void MainMenu::show(XeenEngine *vm) {
+	MainMenu *dlg = new MainMenu(vm);
+	dlg->execute();
+	delete dlg;
+}
+
+MainMenu::MainMenu(XeenEngine *vm) : ButtonContainer(vm) {
+	loadButtons();
+	_start.load("start.int");
+}
+
+void MainMenu::execute() {
+	EventsManager &events = *_vm->_events;
+	Screen &screen = *_vm->_screen;
+	Sound &sound = *_vm->_sound;
+	int difficulty;
+
+	events.setCursor(0);
+	events.showCursor();
+	sound.playSong("newbrigh.m");
+
+	do {
+		// Draw the screen
+		screen.fadeOut();
+		screen.loadPalette("scr.pal");
+		_start.draw(0, 0, Common::Point(0, 0));
+		_start.draw(0, 1, Common::Point(160, 0));
+		screen.fadeIn(129);
+
+		bool redrawFlag = false;
+		do {
+			events.pollEventsAndWait();
+			checkEvents(_vm);
+
+			// Handle keypress
+			switch (_buttonValue) {
+			case Common::KEYCODE_ESCAPE:
+				// Exit game
+				_vm->_gameMode = GMODE_QUIT;
+				break;
+			case Common::KEYCODE_c:
+			case Common::KEYCODE_v:
+				// Show credits
+				CreditsScreen::show(_vm);
+				redrawFlag = true;
+				break;
+			case Common::KEYCODE_s:
+				// Start new game
+				difficulty = DifficultyDialog::show(_vm);
+				if (difficulty != -1) {
+					// Load a new game state and set the difficulty
+					_vm->_saves->newGame();
+					_vm->_party->_difficulty = (Difficulty)difficulty;
+					_vm->_gameMode = GMODE_PLAY_GAME;
+				}
+				break;
+			case Common::KEYCODE_l:
+				if (_vm->_saves->loadGame())
+					_vm->_gameMode = GMODE_PLAY_GAME;
+				break;
+			default:
+				break;
+			}
+		} while (!_vm->shouldExit() && _vm->_gameMode == GMODE_NONE && !redrawFlag);
+	} while (!_vm->shouldExit() && _vm->_gameMode == GMODE_NONE);
+
+	screen.loadPalette("dark.pal");
+}
+
+void MainMenu::loadButtons() {
+	addButton(Common::Rect(93, 87, 227, 97), Common::KEYCODE_s);
+	addButton(Common::Rect(93, 98, 227, 108), Common::KEYCODE_l);
+	addButton(Common::Rect(93, 110, 227, 120), Common::KEYCODE_v);
+}
+
+} // End of namespace SwordsOfXeen
+} // End of namespace Xeen
diff --git a/engines/xeen/swordsofxeen/swordsofxeen_menu.h b/engines/xeen/swordsofxeen/swordsofxeen_menu.h
new file mode 100644
index 0000000..6457c2c
--- /dev/null
+++ b/engines/xeen/swordsofxeen/swordsofxeen_menu.h
@@ -0,0 +1,60 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef XEEN_SWORDSOFXEEN_MENU_H
+#define XEEN_SWORDSOFXEEN_MENU_H
+
+#include "xeen/dialogs.h"
+
+namespace Xeen {
+namespace SwordsOfXeen {
+
+class MainMenu : public ButtonContainer {
+private:
+	SpriteResource _start;
+
+	/**
+	 * Constructor
+	 */
+	MainMenu(XeenEngine *vm);
+
+	/**
+	 * Shows the menu
+	 */
+	void execute();
+
+	/**
+	 * Loads buttons for the menu
+	 */
+	void loadButtons();
+public:
+	/**
+	 * Shows the main menu
+	 * @param vm		Engine reference
+	 */
+	static void show(XeenEngine *vm);
+};
+
+} // End of namespace SwordsOfXeen
+} // End of namespace Xeen
+
+#endif /* XEEN_SWORDSOFXEEN_MENU_H */
diff --git a/engines/xeen/worldofxeen/worldofxeen.cpp b/engines/xeen/worldofxeen/worldofxeen.cpp
index 88ab3d3..20fa7be 100644
--- a/engines/xeen/worldofxeen/worldofxeen.cpp
+++ b/engines/xeen/worldofxeen/worldofxeen.cpp
@@ -186,8 +186,8 @@ void WorldOfXeenEngine::showStartup() {
 }
 
 void WorldOfXeenEngine::showMainMenu() {
-	if (getGameID() != GType_WorldOfXeen) {
-		// TODO: Implement menus for Clouds and Dark Side of Xeen
+	// TODO: Remove this as the game main menus are properly implemented
+	if (getGameID() == GType_Clouds) {
 		_saves->newGame();
 		_gameMode = GMODE_PLAY_GAME;
 		return;





More information about the Scummvm-git-logs mailing list