[Scummvm-cvs-logs] SF.net SVN: scummvm:[43685] scummvm/trunk/engines/cruise

dreammaster at users.sourceforge.net dreammaster at users.sourceforge.net
Mon Aug 24 11:07:23 CEST 2009


Revision: 43685
          http://scummvm.svn.sourceforge.net/scummvm/?rev=43685&view=rev
Author:   dreammaster
Date:     2009-08-24 09:07:21 +0000 (Mon, 24 Aug 2009)

Log Message:
-----------
Added code to launch the GMM save/load dialogues from the in-game Player menu, replacing the older code that just saved/loaded the game in a single slot without prompting

Modified Paths:
--------------
    scummvm/trunk/engines/cruise/cruise.h
    scummvm/trunk/engines/cruise/detection.cpp
    scummvm/trunk/engines/cruise/menu.cpp

Modified: scummvm/trunk/engines/cruise/cruise.h
===================================================================
--- scummvm/trunk/engines/cruise/cruise.h	2009-08-24 08:15:00 UTC (rev 43684)
+++ scummvm/trunk/engines/cruise/cruise.h	2009-08-24 09:07:21 UTC (rev 43685)
@@ -83,6 +83,7 @@
 	virtual bool hasFeature(EngineFeature f) const;
 
 	int getGameType() const;
+	const char *getGameId() const;
 	uint32 getFeatures() const;
 	Common::Language getLanguage() const;
 	Common::Platform getPlatform() const;

Modified: scummvm/trunk/engines/cruise/detection.cpp
===================================================================
--- scummvm/trunk/engines/cruise/detection.cpp	2009-08-24 08:15:00 UTC (rev 43684)
+++ scummvm/trunk/engines/cruise/detection.cpp	2009-08-24 09:07:21 UTC (rev 43685)
@@ -41,6 +41,10 @@
 	uint32 features;
 };
 
+const char *CruiseEngine::getGameId() const {
+	return _gameDescription->desc.gameid;
+}
+
 int CruiseEngine::getGameType() const {
 	return _gameDescription->gameType;
 }

Modified: scummvm/trunk/engines/cruise/menu.cpp
===================================================================
--- scummvm/trunk/engines/cruise/menu.cpp	2009-08-24 08:15:00 UTC (rev 43684)
+++ scummvm/trunk/engines/cruise/menu.cpp	2009-08-24 09:07:21 UTC (rev 43685)
@@ -27,8 +27,13 @@
 #include "cruise/cruise_main.h"
 #include "cruise/staticres.h"
 
+#include "engines/metaengine.h"
+#include "gui/saveload.h"
+
 namespace Cruise {
 
+extern int currentMouseButton;
+
 menuStruct *menuTable[8];
 
 menuStruct *createMenu(int X, int Y, const char *menuName) {
@@ -202,6 +207,38 @@
 	return -1;
 }
 
+static void handleSaveLoad(bool saveFlag) {
+	const EnginePlugin *plugin = 0;
+	EngineMan.findGame(_vm->getGameId(), &plugin);
+	GUI::SaveLoadChooser *dialog;
+	if (saveFlag)
+		dialog = new GUI::SaveLoadChooser("Save game:", "Save");
+	else
+		dialog = new GUI::SaveLoadChooser("Load game:", "Load");
+
+	dialog->setSaveMode(saveFlag);
+	int slot = dialog->runModal(plugin, ConfMan.getActiveDomainName());
+
+	if (slot >= 0) {
+		if (!saveFlag)
+			_vm->loadGameState(slot);
+		else {
+			Common::String result(dialog->getResultString());
+			if (result.empty()) {
+				// If the user was lazy and entered no save name, come up with a default name.
+				char buf[20];
+				snprintf(buf, 20, "Save %d", slot + 1);
+
+				_vm->saveGameState(slot, buf);
+			} else {
+				_vm->saveGameState(slot, result.c_str());
+			}
+		}
+	}
+
+	delete dialog;
+}
+
 int playerMenu(int menuX, int menuY) {
 	int retourMenu;
 	//int restartGame = 0;
@@ -251,15 +288,14 @@
 
 		freeMenu(menuTable[0]);
 		menuTable[0] = NULL;
+		currentMouseButton = 0;
 
 		switch (retourMenu) {
 		case 3: // select save drive
 			break;
 		case 4: // save
-			saveSavegameData(0, "Default Save");
-			break;
 		case 5: // load
-			loadSavegameData(0);
+			handleSaveLoad(retourMenu == 4);
 			break;
 		case 6: // restart
 			_vm->sound().fadeOutMusic();


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list