[Scummvm-cvs-logs] scummvm master -> f96a108503844e66b3072447fe46eace8f54df16

dreammaster dreammaster at scummvm.org
Tue Nov 17 04:28:51 CET 2015


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:
f96a108503 MADS: Add buttons to the main menu to show the secret bonus animations


Commit: f96a108503844e66b3072447fe46eace8f54df16
    https://github.com/scummvm/scummvm/commit/f96a108503844e66b3072447fe46eace8f54df16
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2015-11-16T22:25:53-05:00

Commit Message:
MADS: Add buttons to the main menu to show the secret bonus animations

The buttons will only appear if section0.hag is present, along with
evolve.res and/or sets.res. The Evolve animation works, but the Sets
animation still needs some work, since something funky is happening
with palette usage

Changed paths:
    engines/mads/nebular/menu_nebular.cpp
    engines/mads/nebular/menu_nebular.h
    engines/mads/resources.cpp



diff --git a/engines/mads/nebular/menu_nebular.cpp b/engines/mads/nebular/menu_nebular.cpp
index 6fe17f3..0520294 100644
--- a/engines/mads/nebular/menu_nebular.cpp
+++ b/engines/mads/nebular/menu_nebular.cpp
@@ -48,6 +48,7 @@ MainMenu::MainMenu(MADSEngine *vm): MenuView(vm) {
 	_highlightedIndex = -1;
 	_selectedIndex = -1;
 	_buttonDown = false;
+	_showEvolve = _showSets = false;
 
 	for (int i = 0; i < 7; ++i)
 		_menuItems[i] = nullptr;
@@ -137,12 +138,14 @@ void MainMenu::doFrame() {
 		}
 
 		_vm->_events->showCursor();
+		showBonusItems();
 	} else {
 		if ((_menuItemIndex == -1) || (_frameIndex == 0)) {
 			if (++_menuItemIndex == 6) {
 
 				// Reached end of display animation
 				_vm->_events->showCursor();
+				showBonusItems();
 				return;
 			} else if (_menuItemIndex == 4 && !shouldShowQuotes()) {
 				++_menuItemIndex;
@@ -180,6 +183,17 @@ void MainMenu::addSpriteSlot() {
 	_redrawFlag = true;
 }
 
+void MainMenu::showBonusItems() {
+	Scene &scene = _vm->_game->_scene;
+	_showEvolve = Common::File::exists("SECTION0.HAG") && Common::File::exists("evolve.res");
+	_showSets = Common::File::exists("SECTION0.HAG") && Common::File::exists("sets.res");
+
+	if (_showSets)
+		scene._kernelMessages.add(Common::Point(290, 143), 0x4140, 0, 0, 0, "S");
+	if (_showEvolve)
+		scene._kernelMessages.add(Common::Point(305, 143), 0x4140, 0, 0, 0, "E");
+}
+
 bool MainMenu::onEvent(Common::Event &event) {
 	Scene &scene = _vm->_game->_scene;
 	if (_selectedIndex != -1)
@@ -280,6 +294,10 @@ bool MainMenu::onEvent(Common::Event &event) {
 			_selectedIndex = _highlightedIndex;
 			unhighlightItem();
 			_frameIndex = 0;
+		} else if (_showSets && Common::Rect(290, 165, 300, 185).contains(event.mouse)) {
+			handleAction(SETS);
+		} else if (_showEvolve && Common::Rect(305, 165, 315, 185).contains(event.mouse)) {
+			handleAction(EVOLVE);
 		}
 
 		return true;
@@ -334,6 +352,14 @@ void MainMenu::handleAction(MADSGameAction action) {
 		TextView::execute(_vm, "quotes");
 		return;
 
+	case SETS:
+		AnimationView::execute(_vm, "sets");
+		break;
+
+	case EVOLVE:
+		AnimationView::execute(_vm, "evolve");
+		break;
+
 	case EXIT:
 		_vm->_dialogs->_pendingDialog = DIALOG_ADVERT;
 		break;
diff --git a/engines/mads/nebular/menu_nebular.h b/engines/mads/nebular/menu_nebular.h
index 35af0bb..8a0cc35 100644
--- a/engines/mads/nebular/menu_nebular.h
+++ b/engines/mads/nebular/menu_nebular.h
@@ -35,7 +35,10 @@ class MADSEngine;
 
 namespace Nebular {
 
-enum MADSGameAction { START_GAME, RESUME_GAME, SHOW_INTRO, CREDITS, QUOTES, EXIT };
+enum MADSGameAction { 
+	START_GAME, RESUME_GAME, SHOW_INTRO, CREDITS, QUOTES, EXIT,
+	SETS, EVOLVE
+};
 
 class MainMenu: public MenuView {
 private:
@@ -45,6 +48,7 @@ private:
 	int _frameIndex;
 	uint32 _delayTimeout;
 	bool _skipFlag;
+	bool _showEvolve, _showSets;
 
 	/**
 	 * Currently highlighted menu item
@@ -81,7 +85,16 @@ private:
 	 */
 	void addSpriteSlot();
 
+	/**
+	 * Returns true if the Quotes item should be shown.
+	 * i.e. if the player has completed the game
+	 */
 	bool shouldShowQuotes();
+
+	/**
+	 * Show the bonus item icons, if available
+	 */
+	void showBonusItems();
 protected:
 	/**
 	 * Display the menu
diff --git a/engines/mads/resources.cpp b/engines/mads/resources.cpp
index d5352fb..3b7cf2c 100644
--- a/engines/mads/resources.cpp
+++ b/engines/mads/resources.cpp
@@ -151,7 +151,7 @@ void HagArchive::loadIndex(MADSEngine *vm) {
 	Common::File hagFile;
 
 	for (int sectionIndex = -1; sectionIndex < 11; ++sectionIndex) {
-		if (sectionIndex == 0)
+ 		if (sectionIndex == 0 && !Common::File::exists("SECTION0.HAG"))
 			continue;
 
 		// Dragonsphere does not have some sections - skip them
@@ -239,7 +239,7 @@ Common::String HagArchive::getResourceFilename(const Common::String &resourceNam
 		int value = atoi(resourceName.c_str() + 2);
 		int hagFileNum = (resType == RESTYPE_ROOM) ? value / 100 : value;
 
-		if (hagFileNum > 0)
+		if (hagFileNum >= 0)
 			outputFilename = Common::String::format("SECTION%d.HAG", hagFileNum);
 	}
 






More information about the Scummvm-git-logs mailing list