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

Tkachov Tkachov at users.noreply.github.com
Fri Jul 29 12:50:30 CEST 2016


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:
f50d9feee1 WAGE: Make menu items show Save/Load dialog


Commit: f50d9feee1e04a8ca9271b21859bda48172b7ff5
    https://github.com/scummvm/scummvm/commit/f50d9feee1e04a8ca9271b21859bda48172b7ff5
Author: Alexander Tkachev (alexander at tkachov.ru)
Date: 2016-07-29T17:48:23+06:00

Commit Message:
WAGE: Make menu items show Save/Load dialog

Default ScummVM Save/Load dialog shows up on click.

Changed paths:
    engines/wage/detection.cpp
    engines/wage/gui.cpp
    engines/wage/saveload.cpp
    engines/wage/wage.cpp
    engines/wage/wage.h



diff --git a/engines/wage/detection.cpp b/engines/wage/detection.cpp
index 8b8a639..e14a952 100644
--- a/engines/wage/detection.cpp
+++ b/engines/wage/detection.cpp
@@ -142,11 +142,11 @@ void WageMetaEngine::removeSaveState(const char *target, int slot) const {
 namespace Wage {
 
 bool WageEngine::canLoadGameStateCurrently() {
-	return false;
+	return true;
 }
 
 bool WageEngine::canSaveGameStateCurrently() {
-	return false;
+	return true;
 }
 
 } // End of namespace Wage
diff --git a/engines/wage/gui.cpp b/engines/wage/gui.cpp
index 0992791..cdc646f 100644
--- a/engines/wage/gui.cpp
+++ b/engines/wage/gui.cpp
@@ -65,9 +65,9 @@ static const MenuData menuSubItems[] = {
 	{ kMenuHighLevel, "File",	0, 0, false },
 	{ kMenuHighLevel, "Edit",	0, 0, false },
 	{ kMenuFile, "New",			kMenuActionNew, 0, false },
-	{ kMenuFile, "Open...",		kMenuActionOpen, 0, false },
+	{ kMenuFile, "Open...",		kMenuActionOpen, 0, true },
 	{ kMenuFile, "Close",		kMenuActionClose, 0, true },
-	{ kMenuFile, "Save",		kMenuActionSave, 0, false },
+	{ kMenuFile, "Save",		kMenuActionSave, 0, true },
 	{ kMenuFile, "Save as...",	kMenuActionSaveAs, 0, true },
 	{ kMenuFile, "Revert",		kMenuActionRevert, 0, false },
 	{ kMenuFile, "Quit",		kMenuActionQuit, 0, true },
@@ -323,12 +323,19 @@ void Gui::executeMenuCommand(int action, Common::String &text) {
 	switch(action) {
 	case kMenuActionAbout:
 	case kMenuActionNew:
-	case kMenuActionOpen:
 	case kMenuActionClose:
-	case kMenuActionSave:
-	case kMenuActionSaveAs:
 	case kMenuActionRevert:
 	case kMenuActionQuit:
+		break;
+
+	case kMenuActionOpen:
+		_engine->scummVMSaveLoadDialog(false);
+		break;
+
+	case kMenuActionSave:
+	case kMenuActionSaveAs:
+		_engine->scummVMSaveLoadDialog(true);
+		break;
 
 	case kMenuActionUndo:
 		actionUndo();
diff --git a/engines/wage/saveload.cpp b/engines/wage/saveload.cpp
index 4889add..78e8d38 100644
--- a/engines/wage/saveload.cpp
+++ b/engines/wage/saveload.cpp
@@ -721,6 +721,13 @@ Common::String WageEngine::getSavegameFilename(int16 slotId) const {
 	return saveLoadSlot;
 }
 
+Common::Error WageEngine::loadGameState(int slot) {	
+	if (loadGame(slot) == 0)
+		return Common::kNoError;
+	else
+		return Common::kUnknownError;
+}
+
 Common::Error WageEngine::saveGameState(int slot, const Common::String &description) {
 	Common::String saveLoadSlot = getSavegameFilename(slot);
 	if (saveGame(saveLoadSlot, description) == 0)
@@ -729,4 +736,35 @@ Common::Error WageEngine::saveGameState(int slot, const Common::String &descript
 		return Common::kUnknownError;
 }
 
+bool WageEngine::scummVMSaveLoadDialog(bool isSave) {
+	if (!isSave) {
+		// do loading
+		GUI::SaveLoadChooser dialog = GUI::SaveLoadChooser(_("Load game:"), _("Load"), false);
+		int slot = dialog.runModalWithCurrentTarget();
+
+		if (slot < 0)
+			return true;
+
+		return loadGameState(slot).getCode() == Common::kNoError;
+	}
+
+	// do saving
+	GUI::SaveLoadChooser dialog = GUI::SaveLoadChooser(_("Save game:"), _("Save"), true);
+	int slot = dialog.runModalWithCurrentTarget();
+	Common::String desc = dialog.getResultString();
+
+	if (desc.empty()) {
+		// create our own description for the saved game, the user didnt enter it
+		desc = dialog.createDefaultSaveDescription(slot);
+	}
+
+	if (desc.size() > 28)
+		desc = Common::String(desc.c_str(), 28);
+
+	if (slot < 0)
+		return true;
+
+	return saveGameState(slot, desc).getCode() == Common::kNoError;
+}
+
 } // End of namespace Agi
diff --git a/engines/wage/wage.cpp b/engines/wage/wage.cpp
index fe10b1a..6a33efa 100644
--- a/engines/wage/wage.cpp
+++ b/engines/wage/wage.cpp
@@ -253,8 +253,6 @@ bool WageEngine::saveDialog() {
 
 void WageEngine::saveGame() {
 	warning("STUB: saveGame()");
-	Common::String fileName = getSavegameFilename(1), desc = "test save #1";
-	saveGame(fileName, desc);
 }
 
 void WageEngine::performInitialSetup() {
diff --git a/engines/wage/wage.h b/engines/wage/wage.h
index 718f5e2..511a2d9 100644
--- a/engines/wage/wage.h
+++ b/engines/wage/wage.h
@@ -208,7 +208,9 @@ public:
 	void redrawScene();
 	void saveGame();
 
-	Common::Error saveGameState(int slot, const Common::String &description);
+	virtual Common::Error loadGameState(int slot);
+	virtual Common::Error saveGameState(int slot, const Common::String &description);
+	bool scummVMSaveLoadDialog(bool isSave);
 
 private:
 	int getSceneIndex(Scene *scene) const;






More information about the Scummvm-git-logs mailing list