[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