[Scummvm-cvs-logs] scummvm master -> 1f5afe5c845829464230e73ec392b52bb64fc84f

dreammaster dreammaster at scummvm.org
Mon Sep 7 04:19:32 CEST 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:
1f5afe5c84 SHERLOCK: 3DO: Hook up Save/Load buttons to ScummVM's dialogs


Commit: 1f5afe5c845829464230e73ec392b52bb64fc84f
    https://github.com/scummvm/scummvm/commit/1f5afe5c845829464230e73ec392b52bb64fc84f
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2015-09-06T22:18:47-04:00

Commit Message:
SHERLOCK: 3DO: Hook up Save/Load buttons to ScummVM's dialogs

Changed paths:
    engines/sherlock/detection_tables.h
    engines/sherlock/scalpel/scalpel.cpp
    engines/sherlock/scalpel/scalpel.h
    engines/sherlock/scalpel/scalpel_user_interface.cpp



diff --git a/engines/sherlock/detection_tables.h b/engines/sherlock/detection_tables.h
index e2b5a3d..031e89b 100644
--- a/engines/sherlock/detection_tables.h
+++ b/engines/sherlock/detection_tables.h
@@ -102,8 +102,7 @@ static const SherlockGameDescription gameDescriptions[] = {
 			Common::EN_ANY,
 			Common::kPlatform3DO,
 			ADGF_UNSTABLE,
-			GUIO6(GUIO_NOSPEECH, GAMEOPTION_ORIGINAL_SAVES, GAMEOPTION_FADE_STYLE, GAMEOPTION_HELP_STYLE,
-				GAMEOPTION_PORTRAITS_ON, GAMEOPTION_WINDOW_STYLE)
+			GUIO4(GAMEOPTION_FADE_STYLE, GAMEOPTION_HELP_STYLE,GAMEOPTION_PORTRAITS_ON, GAMEOPTION_WINDOW_STYLE)
 		},
 		GType_SerratedScalpel,
 	},
diff --git a/engines/sherlock/scalpel/scalpel.cpp b/engines/sherlock/scalpel/scalpel.cpp
index e698ac6..73ee33b 100644
--- a/engines/sherlock/scalpel/scalpel.cpp
+++ b/engines/sherlock/scalpel/scalpel.cpp
@@ -21,6 +21,8 @@
  */
 
 #include "engines/util.h"
+#include "gui/saveload.h"
+#include "common/translation.h"
 #include "sherlock/scalpel/scalpel.h"
 #include "sherlock/scalpel/scalpel_fixed_text.h"
 #include "sherlock/scalpel/scalpel_map.h"
@@ -1218,6 +1220,27 @@ void ScalpelEngine::flushBrumwellMirror() {
 		_screen->slamArea(137, 18, 47, 56);
 }
 
+
+void ScalpelEngine::showScummVMSaveDialog() {
+	GUI::SaveLoadChooser *dialog = new GUI::SaveLoadChooser(_("Save game:"), _("Save"), true);
+
+	int slot = dialog->runModalWithCurrentTarget();
+	if (slot >= 0) {
+		Common::String desc = dialog->getResultString();
+
+		saveGameState(slot, desc);
+	}
+}
+
+void ScalpelEngine::showScummVMRestoreDialog() {
+	GUI::SaveLoadChooser *dialog = new GUI::SaveLoadChooser(_("Restore game:"), _("Restore"), false);
+
+	int slot = dialog->runModalWithCurrentTarget();
+	if (slot >= 0) {
+		loadGameState(slot);
+	}
+}
+
 } // End of namespace Scalpel
 
 } // End of namespace Sherlock
diff --git a/engines/sherlock/scalpel/scalpel.h b/engines/sherlock/scalpel/scalpel.h
index 6ae8563..5c46b16 100644
--- a/engines/sherlock/scalpel/scalpel.h
+++ b/engines/sherlock/scalpel/scalpel.h
@@ -128,6 +128,16 @@ public:
 	 * This clears the mirror in scene 12 (mansion drawing room) in case anything messed draw over it
 	 */
 	void flushBrumwellMirror();
+
+	/**
+	 * Show the ScummVM restore savegame dialog
+	 */
+	void showScummVMSaveDialog();
+
+	/**
+	 * Show the ScummVM restore savegame dialog
+	 */
+	void showScummVMRestoreDialog();
 };
 
 } // End of namespace Scalpel
diff --git a/engines/sherlock/scalpel/scalpel_user_interface.cpp b/engines/sherlock/scalpel/scalpel_user_interface.cpp
index f384af0..aed7df8 100644
--- a/engines/sherlock/scalpel/scalpel_user_interface.cpp
+++ b/engines/sherlock/scalpel/scalpel_user_interface.cpp
@@ -1273,6 +1273,7 @@ void ScalpelUserInterface::doLookControl() {
 }
 
 void ScalpelUserInterface::doMainControl() {
+	ScalpelEngine &vm = *(ScalpelEngine *)_vm;
 	Events &events = *_vm->_events;
 	ScalpelInventory &inv = *(ScalpelInventory *)_vm->_inventory;
 	ScalpelSaveManager &saves = *(ScalpelSaveManager *)_vm->_saves;
@@ -1382,24 +1383,34 @@ void ScalpelUserInterface::doMainControl() {
 			journalControl();
 			break;
 		case 'F':
-			pushButton(10);
+			if (IS_3DO) {
+				if (_temp == 10) {
+					pushButton(10);
+					vm.showScummVMRestoreDialog();
+				} else if (_temp == 11) {
+					pushButton(11);
+					vm.showScummVMSaveDialog();
+				}
+			} else {
+				pushButton(10);
 
-			// Create a thumbnail of the current screen before the files dialog is shown, in case
-			// the user saves the game
-			saves.createThumbnail();
+				// Create a thumbnail of the current screen before the files dialog is shown, in case
+				// the user saves the game
+				saves.createThumbnail();
 
-			_selector = _oldSelector = -1;
+				_selector = _oldSelector = -1;
 
-			if (_vm->_showOriginalSavesDialog) {
-				// Show the original dialog
-				_menuMode = FILES_MODE;
-				saves.drawInterface();
-				_windowOpen = true;
-			} else {
-				// Show the ScummVM GMM instead
-				_vm->_canLoadSave = true;
-				_vm->openMainMenuDialog();
-				_vm->_canLoadSave = false;
+				if (_vm->_showOriginalSavesDialog) {
+					// Show the original dialog
+					_menuMode = FILES_MODE;
+					saves.drawInterface();
+					_windowOpen = true;
+				} else {
+					// Show the ScummVM GMM instead
+					_vm->_canLoadSave = true;
+					_vm->openMainMenuDialog();
+					_vm->_canLoadSave = false;
+				}
 			}
 			break;
 		case 'S':






More information about the Scummvm-git-logs mailing list