[Scummvm-git-logs] scummvm master -> 2d09358030146d0205e7818d88d6a80d9cec9383
dreammaster
paulfgilbert at gmail.com
Wed Feb 5 03:05:36 UTC 2020
This automated email contains information about 11 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
6c419d7d32 ENGINES: Adding new save wrappers to better support extended saves
31f4bc74ab GRIFFON: Update save code to use new engine save methods
866cc57d64 ULTIMA: Move methods for showing save/restore dialogs into Engine class
6850c92617 CRUISE: Use Engine save/load dialog methods
cc689fd16a CGE: Use Engine save/load dialog methods
b7797bc475 CGE2: Use Engine save/load dialog methods
0186bbae31 TITANIC: Use Engine save/load dialog methods
055a9effc2 ENGINES: Adding an isAutosave flag to the new saveGameStream method
318c7003fc GRIFFON: Implement autosaves
4b8d509cfe ENGINES: Added GUI message to save/load dialog methods if unavailable
2d09358030 ENGINES: Change load/save game dialog message to OSD
Commit: 6c419d7d3286e02f8f2ccd19134f0e82140bc75d
https://github.com/scummvm/scummvm/commit/6c419d7d3286e02f8f2ccd19134f0e82140bc75d
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2020-02-04T19:05:26-08:00
Commit Message:
ENGINES: Adding new save wrappers to better support extended saves
Changed paths:
engines/engine.cpp
engines/engine.h
diff --git a/engines/engine.cpp b/engines/engine.cpp
index 5f2c5ef..a289fb1 100644
--- a/engines/engine.cpp
+++ b/engines/engine.cpp
@@ -31,6 +31,7 @@
#include "engines/engine.h"
#include "engines/dialogs.h"
#include "engines/util.h"
+#include "engines/metaengine.h"
#include "common/config-manager.h"
#include "common/events.h"
@@ -40,6 +41,7 @@
#include "common/error.h"
#include "common/list.h"
#include "common/memstream.h"
+#include "common/savefile.h"
#include "common/scummsys.h"
#include "common/taskbar.h"
#include "common/textconsole.h"
@@ -631,8 +633,25 @@ void Engine::flipMute() {
}
Common::Error Engine::loadGameState(int slot) {
- // Do nothing by default
- return Common::kNoError;
+ Common::InSaveFile *saveFile = _saveFileMan->openForLoading(getSaveStateName(slot));
+
+ if (!saveFile)
+ return Common::kReadingFailed;
+
+ Common::Error result = loadGameStream(saveFile);
+ if (result.getCode() == Common::kNoError) {
+ ExtendedSavegameHeader header;
+ if (MetaEngine::readSavegameHeader(saveFile, &header))
+ setTotalPlayTime(header.playtime);
+ }
+
+ delete saveFile;
+ return result;
+}
+
+Common::Error Engine::loadGameStream(Common::SeekableReadStream *stream) {
+ // Default to returning an error when not implemented
+ return Common::kReadingFailed;
}
bool Engine::canLoadGameStateCurrently() {
@@ -641,8 +660,25 @@ bool Engine::canLoadGameStateCurrently() {
}
Common::Error Engine::saveGameState(int slot, const Common::String &desc) {
- // Do nothing by default
- return Common::kNoError;
+ Common::OutSaveFile *saveFile = _saveFileMan->openForSaving(getSaveStateName(slot));
+
+ if (!saveFile)
+ return Common::kWritingFailed;
+
+ Common::Error result = saveGameStream(saveFile);
+ if (result.getCode() == Common::kNoError) {
+ MetaEngine::appendExtendedSave(saveFile, getTotalPlayTime() / 1000, desc);
+
+ saveFile->finalize();
+ }
+
+ delete saveFile;
+ return result;
+}
+
+Common::Error Engine::saveGameStream(Common::WriteStream *stream) {
+ // Default to returning an error when not implemented
+ return Common::kWritingFailed;
}
bool Engine::canSaveGameStateCurrently() {
diff --git a/engines/engine.h b/engines/engine.h
index 6f2c7fd..8e9ce9f 100644
--- a/engines/engine.h
+++ b/engines/engine.h
@@ -41,6 +41,8 @@ class EventManager;
class SaveFileManager;
class TimerManager;
class FSNode;
+class SeekableReadStream;
+class WriteStream;
}
namespace GUI {
class Debugger;
@@ -203,6 +205,13 @@ public:
virtual void flipMute();
/**
+ * Generates the savegame filename
+ */
+ virtual Common::String getSaveStateName(int slot) const {
+ return Common::String::format("%s.%03d", _targetName.c_str(), slot);
+ }
+
+ /**
* Load a game state.
* @param slot the slot from which a savestate should be loaded
* @return returns kNoError on success, else an error code.
@@ -210,6 +219,13 @@ public:
virtual Common::Error loadGameState(int slot);
/**
+ * Load a game state.
+ * @param stream the stream to load the savestate from
+ * @return returns kNoError on success, else an error code.
+ */
+ virtual Common::Error loadGameStream(Common::SeekableReadStream *stream);
+
+ /**
* Sets the game slot for a savegame to be loaded after global
* main menu execution. This is to avoid loading a savegame from
* inside the menu loop which causes bugs like #2822778.
@@ -232,6 +248,13 @@ public:
virtual Common::Error saveGameState(int slot, const Common::String &desc);
/**
+ * Save a game state.
+ * @param stream The write stream to save the savegame data to
+ * @return returns kNoError on success, else an error code.
+ */
+ virtual Common::Error saveGameStream(Common::WriteStream *stream);
+
+ /**
* Indicates whether a game state can be saved.
*/
virtual bool canSaveGameStateCurrently();
Commit: 31f4bc74ab2ec4db17a24c594a00a6c6ed739101
https://github.com/scummvm/scummvm/commit/31f4bc74ab2ec4db17a24c594a00a6c6ed739101
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2020-02-04T19:05:26-08:00
Commit Message:
GRIFFON: Update save code to use new engine save methods
Changed paths:
engines/griffon/dialogs.cpp
engines/griffon/griffon.h
engines/griffon/saveload.cpp
diff --git a/engines/griffon/dialogs.cpp b/engines/griffon/dialogs.cpp
index be21015..f955a26 100644
--- a/engines/griffon/dialogs.cpp
+++ b/engines/griffon/dialogs.cpp
@@ -630,7 +630,7 @@ void GriffonEngine::saveLoadNew() {
}
}
if (lowerLock && tickPause < _ticks) {
- if ((curCol == 1) && saveState(curRow - 1)) {
+ if ((curCol == 1) && saveGameState(curRow - 1, "").getCode() == Common::kNoError) {
_secStart += _secsInGame;
_secsInGame = 0;
lowerLock = false;
@@ -638,7 +638,7 @@ void GriffonEngine::saveLoadNew() {
curRow = 0;
renderSaveStates();
- } else if ((curCol == 2) && loadState(curRow - 1)) {
+ } else if ((curCol == 2) && loadGameState(curRow - 1).getCode() == Common::kNoError) {
return;
}
diff --git a/engines/griffon/griffon.h b/engines/griffon/griffon.h
index febc9e6..80798cf 100644
--- a/engines/griffon/griffon.h
+++ b/engines/griffon/griffon.h
@@ -413,10 +413,12 @@ private:
void loadObjectDB();
// saveload.cpp
- Common::String makeSaveGameName(int slot);
- int loadState(int slotnum);
+ virtual Common::String getSaveStateName(int slot) const override;
int loadPlayer(int slotnum);
- int saveState(int slotnum);
+ virtual Common::Error loadGameState(int slot) override;
+ virtual Common::Error saveGameState(int slot, const Common::String &desc) override;
+ virtual Common::Error loadGameStream(Common::SeekableReadStream *file) override;
+ virtual Common::Error saveGameStream(Common::WriteStream *file) override;
// sound.cpp
void setChannelVolume(int channel, int volume);
@@ -429,13 +431,6 @@ private:
void setupAudio();
void updateMusic();
- Common::Error loadGameState(int slot) {
- return loadState(slot) ? Common::kNoError : Common::kUnknownError;
- }
- Common::Error saveGameState(int slot, const Common::String &description) {
- return saveState(slot) ? Common::kNoError : Common::kUnknownError;
- }
-
virtual bool canLoadGameStateCurrently() { return true; }
virtual bool canSaveGameStateCurrently() { return _gameMode == kGameModePlay; }
virtual bool hasFeature(EngineFeature f) const;
diff --git a/engines/griffon/saveload.cpp b/engines/griffon/saveload.cpp
index 3052005..117f519 100644
--- a/engines/griffon/saveload.cpp
+++ b/engines/griffon/saveload.cpp
@@ -55,16 +55,26 @@ namespace Griffon {
sscanf(line.c_str(), A, B); \
} while(0)
-Common::String GriffonEngine::makeSaveGameName(int slot) {
+Common::String GriffonEngine::getSaveStateName(int slot) const {
return (_targetName + Common::String::format(".s%02d", slot));
}
-int GriffonEngine::loadState(int slotnum) {
- Common::String filename = makeSaveGameName(slotnum);
- Common::InSaveFile *file;
- if (!(file = _saveFileMan->openForLoading(filename)))
- return 0;
+Common::Error GriffonEngine::loadGameState(int slot) {
+ Common::Error result = Engine::loadGameState(slot);
+ if (result.getCode() == Common::kNoError) {
+ _saveSlot = slot;
+ _gameMode = kGameModeLoadGame;
+ }
+ return result;
+}
+
+Common::Error GriffonEngine::saveGameState(int slot, const Common::String &desc) {
+ Common::String saveDesc = Common::String::format("Level: %d Map: %d", _player.level, _curMap);
+ return Engine::saveGameState(slot, saveDesc);
+}
+
+Common::Error GriffonEngine::loadGameStream(Common::SeekableReadStream *file) {
INPUT("%i", &_player.level);
if (_player.level > 0) {
@@ -123,18 +133,15 @@ int GriffonEngine::loadState(int slotnum) {
INPUT("%f", &_player.spellStrength);
- _saveSlot = slotnum;
- _gameMode = kGameModeLoadGame;
-
- return 1; // success
+ return Common::kNoError;
}
- return 0; // failure
+ return Common::kReadingFailed;
}
/* fill PLAYERTYPE _playera; */
int GriffonEngine::loadPlayer(int slotnum) {
- Common::String filename = makeSaveGameName(slotnum);
+ Common::String filename = getSaveStateName(slotnum);
Common::InSaveFile *file;
_playera.level = 0;
@@ -186,15 +193,7 @@ int GriffonEngine::loadPlayer(int slotnum) {
return 0; // fail
}
-int GriffonEngine::saveState(int slotnum) {
- Common::String filename = makeSaveGameName(slotnum);
- Common::OutSaveFile *file;
-
- if (!(file = _saveFileMan->openForSaving(filename))) {
- warning("Cannot open %s for saving", filename.c_str());
- return 0;
- }
-
+Common::Error GriffonEngine::saveGameStream(Common::WriteStream *file) {
PRINT("%i", _player.level);
if (_player.level > 0) {
@@ -254,13 +253,7 @@ int GriffonEngine::saveState(int slotnum) {
drawView();
- Common::String desc = Common::String::format("Level: %d Map: %d", _player.level, _curMap);
-
- MetaEngine::appendExtendedSave(file, (_secStart + _secsInGame) * 1000, desc);
-
- file->finalize();
-
- return 1; // success
+ return Common::kNoError;
}
} // end of namespace Griffon
Commit: 866cc57d64ecade7bfda89bfb2fce58cf2b51864
https://github.com/scummvm/scummvm/commit/866cc57d64ecade7bfda89bfb2fce58cf2b51864
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2020-02-04T19:05:26-08:00
Commit Message:
ULTIMA: Move methods for showing save/restore dialogs into Engine class
Changed paths:
engines/engine.cpp
engines/engine.h
engines/ultima/nuvie/keybinding/key_actions.cpp
engines/ultima/nuvie/menus/game_menu_dialog.cpp
engines/ultima/shared/engine/ultima.cpp
engines/ultima/shared/engine/ultima.h
engines/ultima/ultima1/actions/quit.cpp
engines/ultima/ultima1/u1gfx/view_char_gen.cpp
engines/ultima/ultima1/u1gfx/view_title.cpp
engines/ultima/ultima8/ultima8.cpp
engines/ultima/ultima8/ultima8.h
diff --git a/engines/engine.cpp b/engines/engine.cpp
index a289fb1..519de1b 100644
--- a/engines/engine.cpp
+++ b/engines/engine.cpp
@@ -56,6 +56,7 @@
#include "gui/debugger.h"
#include "gui/dialog.h"
#include "gui/message.h"
+#include "gui/saveload.h"
#include "audio/mixer.h"
@@ -686,6 +687,43 @@ bool Engine::canSaveGameStateCurrently() {
return false;
}
+bool Engine::loadGameDialog() {
+ if (!canLoadGameStateCurrently())
+ return false;
+
+ GUI::SaveLoadChooser *dialog = new GUI::SaveLoadChooser(_("Load game:"), _("Load"), false);
+ pauseEngine(true);
+ int slotNum = dialog->runModalWithCurrentTarget();
+ pauseEngine(false);
+ delete dialog;
+
+ if (slotNum != -1)
+ return loadGameState(slotNum).getCode() == Common::kNoError;
+
+ return false;
+}
+
+bool Engine::saveGameDialog() {
+ if (!canSaveGameStateCurrently())
+ return false;
+
+ GUI::SaveLoadChooser *dialog = new GUI::SaveLoadChooser(_("Save game:"), _("Save"), true);
+ pauseEngine(true);
+ int slotNum = dialog->runModalWithCurrentTarget();
+ pauseEngine(false);
+
+ Common::String desc = dialog->getResultString();
+ if (desc.empty())
+ desc = dialog->createDefaultSaveDescription(slotNum);
+
+ delete dialog;
+
+ if (slotNum != -1)
+ return saveGameState(slotNum, desc).getCode() == Common::kNoError;
+
+ return false;
+}
+
void Engine::quitGame() {
Common::Event event;
diff --git a/engines/engine.h b/engines/engine.h
index 8e9ce9f..2babc50 100644
--- a/engines/engine.h
+++ b/engines/engine.h
@@ -259,6 +259,16 @@ public:
*/
virtual bool canSaveGameStateCurrently();
+ /**
+ * Shows the ScummVM save dialog, allowing users to save their game
+ */
+ bool saveGameDialog();
+
+ /**
+ * Shows the ScummVM Restore dialog, allowing users to load a game
+ */
+ bool loadGameDialog();
+
protected:
/**
diff --git a/engines/ultima/nuvie/keybinding/key_actions.cpp b/engines/ultima/nuvie/keybinding/key_actions.cpp
index 0314b52..f029151 100644
--- a/engines/ultima/nuvie/keybinding/key_actions.cpp
+++ b/engines/ultima/nuvie/keybinding/key_actions.cpp
@@ -313,7 +313,7 @@ void ActionPartyMode(int const *params) {
}
void ActionSaveDialog(int const *params) {
- g_engine->saveGame();
+ g_engine->saveGameDialog();
}
void ActionLoadLatestSave(int const *params) {
diff --git a/engines/ultima/nuvie/menus/game_menu_dialog.cpp b/engines/ultima/nuvie/menus/game_menu_dialog.cpp
index efccfb7..701bf38 100644
--- a/engines/ultima/nuvie/menus/game_menu_dialog.cpp
+++ b/engines/ultima/nuvie/menus/game_menu_dialog.cpp
@@ -146,9 +146,9 @@ GUI_status GameMenuDialog::callback(uint16 msg, GUI_CallBack *caller, void *data
if (caller == this) {
close_dialog();
} else if (caller == save_button) {
- g_engine->saveGame();
+ g_engine->saveGameDialog();
} else if (caller == load_button) {
- g_engine->loadGame();
+ g_engine->loadGameDialog();
} else if (caller == video_button) {
GUI_Widget *video_dialog;
video_dialog = (GUI_Widget *) new VideoDialog(this);
diff --git a/engines/ultima/shared/engine/ultima.cpp b/engines/ultima/shared/engine/ultima.cpp
index decf3cc..ce6b55a 100644
--- a/engines/ultima/shared/engine/ultima.cpp
+++ b/engines/ultima/shared/engine/ultima.cpp
@@ -28,7 +28,6 @@
#include "common/debug-channels.h"
#include "common/file.h"
#include "common/translation.h"
-#include "gui/saveload.h"
namespace Ultima {
namespace Shared {
@@ -107,35 +106,6 @@ Common::FSNode UltimaEngine::getGameDirectory() const {
return Common::FSNode(ConfMan.get("path"));
}
-bool UltimaEngine::loadGame() {
- if (!canLoadGameStateCurrently())
- return false;
-
- GUI::SaveLoadChooser *dialog = new GUI::SaveLoadChooser(_("Load game:"), _("Load"), false);
- int slotNum = dialog->runModalWithCurrentTarget();
- delete dialog;
-
- if (slotNum != -1)
- return loadGameState(slotNum).getCode() == Common::kNoError;
-
- return false;
-}
-
-bool UltimaEngine::saveGame() {
- if (!canSaveGameStateCurrently())
- return false;
-
- GUI::SaveLoadChooser *dialog = new GUI::SaveLoadChooser(_("Save game:"), _("Save"), true);
- int slotNum = dialog->runModalWithCurrentTarget();
- Common::String saveName = dialog->getResultString();
- delete dialog;
-
- if (slotNum != -1)
- return saveGameState(slotNum, saveName).getCode() == Common::kNoError;
-
- return false;
-}
-
UltimaMetaEngine *UltimaEngine::getMetaEngine() const {
return g_metaEngine;
}
diff --git a/engines/ultima/shared/engine/ultima.h b/engines/ultima/shared/engine/ultima.h
index 403de9d..7ea0695 100644
--- a/engines/ultima/shared/engine/ultima.h
+++ b/engines/ultima/shared/engine/ultima.h
@@ -150,16 +150,6 @@ public:
Common::FSNode getGameDirectory() const;
/**
- * Shows the ScummVM save dialog, allowing users to save their game
- */
- virtual bool saveGame();
-
- /**
- * Shows the ScummVM Restore dialog, allowing users to restore a game
- */
- virtual bool loadGame();
-
- /**
* Indicates whether a game state can be loaded.
* @param isAutosave Flags whether it's an autosave check
*/
diff --git a/engines/ultima/ultima1/actions/quit.cpp b/engines/ultima/ultima1/actions/quit.cpp
index 539bb61..d67fe6f 100644
--- a/engines/ultima/ultima1/actions/quit.cpp
+++ b/engines/ultima/ultima1/actions/quit.cpp
@@ -37,7 +37,7 @@ END_MESSAGE_MAP()
bool Quit::QuitMsg(CQuitMsg &msg) {
Ultima1Game *game = static_cast<Ultima1Game *>(getGame());
addInfoMsg(game->_res->ACTION_NAMES[16]);
- g_vm->saveGame();
+ g_vm->saveGameDialog();
return true;
}
diff --git a/engines/ultima/ultima1/u1gfx/view_char_gen.cpp b/engines/ultima/ultima1/u1gfx/view_char_gen.cpp
index 50edaf2..8d10e07 100644
--- a/engines/ultima/ultima1/u1gfx/view_char_gen.cpp
+++ b/engines/ultima/ultima1/u1gfx/view_char_gen.cpp
@@ -398,7 +398,7 @@ bool ViewCharacterGeneration::save() {
_character->_armour[1]->_quantity = 1; // Leather armour
_character->_equippedSpell = 0;
- return g_vm->saveGame();
+ return g_vm->saveGameDialog();
}
} // End of namespace U1Gfx
diff --git a/engines/ultima/ultima1/u1gfx/view_title.cpp b/engines/ultima/ultima1/u1gfx/view_title.cpp
index a662e18..8666d6d 100644
--- a/engines/ultima/ultima1/u1gfx/view_title.cpp
+++ b/engines/ultima/ultima1/u1gfx/view_title.cpp
@@ -304,7 +304,7 @@ bool ViewTitle::KeypressMsg(CKeypressMsg &msg) {
if (msg._keyState.keycode == Common::KEYCODE_a) {
setView("CharGen");
} else {
- if (!g_vm->loadGame())
+ if (!g_vm->loadGameDialog())
textCursor->setVisible(true);
}
}
diff --git a/engines/ultima/ultima8/ultima8.cpp b/engines/ultima/ultima8/ultima8.cpp
index 6eb6fda..85be648 100644
--- a/engines/ultima/ultima8/ultima8.cpp
+++ b/engines/ultima/ultima8/ultima8.cpp
@@ -1291,33 +1291,6 @@ void Ultima8Engine::writeSaveInfo(ODataSource *ods) {
game->writeSaveInfo(ods);
}
-bool Ultima8Engine::saveGame() {
- if (!canSaveGameStateCurrently(false))
- return false;
-
- GUI::SaveLoadChooser *dialog = new GUI::SaveLoadChooser(_("Save game:"), _("Save"), true);
- bool result = false;
-
- pauseEngine(true);
- int slot = dialog->runModalWithCurrentTarget();
- pauseEngine(false);
-
- if (slot >= 0) {
- Common::String desc = dialog->getResultString();
-
- if (desc.empty()) {
- // create our own description for the saved game, the user didn't enter it
- desc = dialog->createDefaultSaveDescription(slot);
- }
-
- // Save the game
- result = saveGameState(slot, desc, false).getCode() == Common::kNoError;
- }
-
- delete dialog;
- return result;
-}
-
bool Ultima8Engine::canSaveGameStateCurrently(bool isAutosave) {
if (desktopGump->FindGump<ModalGump>())
// Can't save when a modal gump is open
@@ -1563,25 +1536,6 @@ void Ultima8Engine::syncSoundSettings() {
midiPlayer->setVolume(_mixer->getVolumeForSoundType(Audio::Mixer::kMusicSoundType));
}
-bool Ultima8Engine::loadGame() {
- if (!canLoadGameStateCurrently())
- return false;
-
- GUI::SaveLoadChooser *dialog = new GUI::SaveLoadChooser(_("Restore game:"), _("Restore"), false);
- bool result = false;
-
- pauseEngine(true);
- int slot = dialog->runModalWithCurrentTarget();
- pauseEngine(false);
-
- if (slot >= 0) {
- result = loadGameState(slot).getCode() == Common::kNoError;
- }
-
- delete dialog;
- return result;
-}
-
Common::Error Ultima8Engine::loadGameState(int slot) {
return loadGame(Std::string::format("@save/%d", slot)) ?
Common::kNoError : Common::kReadingFailed;
@@ -1849,7 +1803,7 @@ void Ultima8Engine::ConCmd_saveGame(const Console::ArgvType &argv) {
// Save a game with the given name into the quicksave slot
Ultima8Engine::get_instance()->saveGame("@save/1", argv[1]);
} else {
- Ultima8Engine::get_instance()->saveGame();
+ Ultima8Engine::get_instance()->saveGameDialog();
}
}
@@ -1859,7 +1813,7 @@ void Ultima8Engine::ConCmd_loadGame(const Console::ArgvType &argv) {
// it just needs to be present to differentiate from showing the GUI load dialog
Ultima8Engine::get_instance()->loadGame("@save/1");
} else {
- Ultima8Engine::get_instance()->loadGame();
+ Ultima8Engine::get_instance()->loadGameDialog();
}
}
diff --git a/engines/ultima/ultima8/ultima8.h b/engines/ultima/ultima8/ultima8.h
index 350ebe0..2a2e65f 100644
--- a/engines/ultima/ultima8/ultima8.h
+++ b/engines/ultima/ultima8/ultima8.h
@@ -337,16 +337,12 @@ public:
*/
virtual Common::Error saveGameState(int slot, const Common::String &desc, bool isAutosave) override;
- bool saveGame() override;
-
//! save a game
//! \param filename the file to save to
//! \return true if succesful
bool saveGame(Std::string filename, Std::string desc,
bool ignore_modals = false);
- bool loadGame() override;
-
//! load a game
//! \param filename the savegame to load
//! \return true if succesful.
Commit: 6850c92617b8c1061dda22d3e817903c81affba3
https://github.com/scummvm/scummvm/commit/6850c92617b8c1061dda22d3e817903c81affba3
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2020-02-04T19:05:26-08:00
Commit Message:
CRUISE: Use Engine save/load dialog methods
Changed paths:
R engines/cruise/POTFILES
engines/cruise/menu.cpp
diff --git a/engines/cruise/POTFILES b/engines/cruise/POTFILES
deleted file mode 100644
index e3b25bd..0000000
--- a/engines/cruise/POTFILES
+++ /dev/null
@@ -1 +0,0 @@
-engines/cruise/menu.cpp
diff --git a/engines/cruise/menu.cpp b/engines/cruise/menu.cpp
index 1abc7df..295eef4 100644
--- a/engines/cruise/menu.cpp
+++ b/engines/cruise/menu.cpp
@@ -27,7 +27,6 @@
#include "engines/metaengine.h"
#include "gui/saveload.h"
#include "common/system.h"
-#include "common/translation.h"
namespace Cruise {
@@ -207,29 +206,10 @@ int processMenu(menuStruct *pMenu) {
}
static void handleSaveLoad(bool saveFlag) {
- GUI::SaveLoadChooser *dialog;
if (saveFlag)
- dialog = new GUI::SaveLoadChooser(_("Save game:"), _("Save"), true);
+ _vm->saveGameDialog();
else
- dialog = new GUI::SaveLoadChooser(_("Load game:"), _("Load"), false);
-
- int slot = dialog->runModalWithCurrentTarget();
-
- 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.
- result = Common::String::format("Save %d", slot + 1);
- }
-
- _vm->saveGameState(slot, result);
- }
- }
-
- delete dialog;
+ _vm->loadGameDialog();
}
int playerMenu(int menuX, int menuY) {
Commit: cc689fd16a36ed9858158351c4e9c0c5de746e55
https://github.com/scummvm/scummvm/commit/cc689fd16a36ed9858158351c4e9c0c5de746e55
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2020-02-04T19:05:26-08:00
Commit Message:
CGE: Use Engine save/load dialog methods
Changed paths:
R engines/cge/POTFILES
engines/cge/events.cpp
diff --git a/engines/cge/POTFILES b/engines/cge/POTFILES
deleted file mode 100644
index f8aef49..0000000
--- a/engines/cge/POTFILES
+++ /dev/null
@@ -1,3 +0,0 @@
-engines/cge/detection.cpp
-engines/cge/events.cpp
-
diff --git a/engines/cge/events.cpp b/engines/cge/events.cpp
index 0cc32ce..5291ced 100644
--- a/engines/cge/events.cpp
+++ b/engines/cge/events.cpp
@@ -28,7 +28,6 @@
#include "gui/saveload.h"
#include "common/config-manager.h"
#include "common/events.h"
-#include "common/translation.h"
#include "engines/advancedDetector.h"
#include "cge/events.h"
#include "cge/events.h"
@@ -68,25 +67,10 @@ bool Keyboard::getKey(Common::Event &event) {
_vm->_commandHandler->addCommand(kCmdInf, 1, kShowScummVMVersion + i, NULL);
return false;
case Common::KEYCODE_F5:
- if (_vm->canSaveGameStateCurrently()) {
- GUI::SaveLoadChooser *dialog = new GUI::SaveLoadChooser(_("Save game:"), _("Save"), true);
- int16 savegameId = dialog->runModalWithCurrentTarget();
- Common::String savegameDescription = dialog->getResultString();
- delete dialog;
-
- if (savegameId != -1)
- _vm->saveGameState(savegameId, savegameDescription);
- }
+ _vm->saveGameDialog();
return false;
case Common::KEYCODE_F7:
- if (_vm->canLoadGameStateCurrently()) {
- GUI::SaveLoadChooser *dialog = new GUI::SaveLoadChooser(_("Restore game:"), _("Restore"), false);
- int16 savegameId = dialog->runModalWithCurrentTarget();
- delete dialog;
-
- if (savegameId != -1)
- _vm->loadGameState(savegameId);
- }
+ _vm->loadGameDialog();
return false;
case Common::KEYCODE_d:
if (event.kbd.flags & Common::KBD_CTRL) {
Commit: b7797bc475da25156bd3a5a655b9a3bcfe45732a
https://github.com/scummvm/scummvm/commit/b7797bc475da25156bd3a5a655b9a3bcfe45732a
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2020-02-04T19:05:26-08:00
Commit Message:
CGE2: Use Engine save/load dialog methods
Changed paths:
R engines/cge2/POTFILES
engines/cge2/events.cpp
diff --git a/engines/cge2/POTFILES b/engines/cge2/POTFILES
deleted file mode 100644
index 3bff325..0000000
--- a/engines/cge2/POTFILES
+++ /dev/null
@@ -1,2 +0,0 @@
-engines/cge2/detection.cpp
-engines/cge2/events.cpp
diff --git a/engines/cge2/events.cpp b/engines/cge2/events.cpp
index 3493363..5ab7f59 100644
--- a/engines/cge2/events.cpp
+++ b/engines/cge2/events.cpp
@@ -60,25 +60,10 @@ bool Keyboard::getKey(Common::Event &event) {
_vm->_commandHandler->addCommand(kCmdInf, 1, kShowScummVMVersion + i, NULL);
return false;
case Common::KEYCODE_F5:
- if (_vm->canSaveGameStateCurrently()) {
- GUI::SaveLoadChooser *dialog = new GUI::SaveLoadChooser(_("Save game:"), _("Save"), true);
- int16 savegameId = dialog->runModalWithCurrentTarget();
- Common::String savegameDescription = dialog->getResultString();
- delete dialog;
-
- if (savegameId != -1)
- _vm->saveGameState(savegameId, savegameDescription);
- }
+ _vm->saveGameDialog();
return false;
case Common::KEYCODE_F7:
- if (_vm->canLoadGameStateCurrently()) {
- GUI::SaveLoadChooser *dialog = new GUI::SaveLoadChooser(_("Restore game:"), _("Restore"), false);
- int16 savegameId = dialog->runModalWithCurrentTarget();
- delete dialog;
-
- if (savegameId != -1)
- _vm->loadGameState(savegameId);
- }
+ _vm->loadGameDialog();
return false;
case Common::KEYCODE_d:
if (event.kbd.flags & Common::KBD_CTRL) {
Commit: 0186bbae31fc644a38e57edd9b45547b2b87d60c
https://github.com/scummvm/scummvm/commit/0186bbae31fc644a38e57edd9b45547b2b87d60c
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2020-02-04T19:05:26-08:00
Commit Message:
TITANIC: Use Engine save/load dialog methods
Changed paths:
engines/titanic/main_game_window.cpp
engines/titanic/titanic.cpp
engines/titanic/titanic.h
diff --git a/engines/titanic/main_game_window.cpp b/engines/titanic/main_game_window.cpp
index 2b026f9..ab2c8be7 100644
--- a/engines/titanic/main_game_window.cpp
+++ b/engines/titanic/main_game_window.cpp
@@ -359,10 +359,10 @@ void CMainGameWindow::keyDown(Common::KeyState keyState) {
} else if (keyState.keycode == Common::KEYCODE_F5) {
// Show the GMM save dialog
- g_vm->showScummVMSaveDialog();
+ g_vm->saveGameDialog();
} else if (keyState.keycode == Common::KEYCODE_F7) {
// Show the GMM load dialog
- g_vm->showScummVMRestoreDialog();
+ g_vm->loadGameDialog();
} else if (_inputAllowed) {
_gameManager->_inputTranslator.keyDown(keyState);
}
diff --git a/engines/titanic/titanic.cpp b/engines/titanic/titanic.cpp
index 3318459..4bde64c 100644
--- a/engines/titanic/titanic.cpp
+++ b/engines/titanic/titanic.cpp
@@ -46,7 +46,6 @@
#include "common/debug-channels.h"
#include "common/events.h"
#include "common/scummsys.h"
-#include "common/translation.h"
#include "engines/util.h"
#include "graphics/scaler.h"
#include "graphics/screen.h"
@@ -276,47 +275,4 @@ void TitanicEngine::syncSoundSettings() {
}
}
-
-void TitanicEngine::showScummVMSaveDialog() {
- if (!canSaveGameStateCurrently())
- return;
-
- GUI::SaveLoadChooser *dialog = new GUI::SaveLoadChooser(_("Save game:"), _("Save"), true);
-
- pauseEngine(true);
- int slot = dialog->runModalWithCurrentTarget();
- pauseEngine(false);
-
- if (slot >= 0) {
- Common::String desc = dialog->getResultString();
-
- if (desc.empty()) {
- // create our own description for the saved game, the user didn't enter it
- desc = dialog->createDefaultSaveDescription(slot);
- }
-
- // Save the game
- saveGameState(slot, desc);
- }
-
- delete dialog;
-}
-
-void TitanicEngine::showScummVMRestoreDialog() {
- if (!canLoadGameStateCurrently())
- return;
-
- GUI::SaveLoadChooser *dialog = new GUI::SaveLoadChooser(_("Restore game:"), _("Restore"), false);
-
- pauseEngine(true);
- int slot = dialog->runModalWithCurrentTarget();
- pauseEngine(false);
-
- if (slot >= 0) {
- loadGameState(slot);
- }
-
- delete dialog;
-}
-
} // End of namespace Titanic
diff --git a/engines/titanic/titanic.h b/engines/titanic/titanic.h
index b879d49..a796719 100644
--- a/engines/titanic/titanic.h
+++ b/engines/titanic/titanic.h
@@ -194,16 +194,6 @@ public:
* and if it exists, returns it's description
*/
CString getSavegameName(int slot);
-
- /**
- * Shows the ScummVM GMM save dialog
- */
- void showScummVMSaveDialog();
-
- /**
- * Shows the ScummVM GMM load dialog
- */
- void showScummVMRestoreDialog();
};
extern TitanicEngine *g_vm;
Commit: 055a9effc2a04c0e5f10910c1aa66769320cf670
https://github.com/scummvm/scummvm/commit/055a9effc2a04c0e5f10910c1aa66769320cf670
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2020-02-04T19:05:26-08:00
Commit Message:
ENGINES: Adding an isAutosave flag to the new saveGameStream method
This is primarily future-proofing. Many games either show a message
or do some other UI action like closing an open game menu, and
obviously that should only be done when a savegame created by the
user is done, rather than for regular autosaves. By making this a
flag, when engines override saveGameStream, they'll be able to
tell if it's an autosave, and only do UI changes if not
Changed paths:
engines/engine.cpp
engines/engine.h
engines/griffon/griffon.h
engines/griffon/saveload.cpp
engines/ultima/shared/early/ultima_early.cpp
engines/ultima/shared/early/ultima_early.h
engines/ultima/shared/engine/ultima.h
diff --git a/engines/engine.cpp b/engines/engine.cpp
index 519de1b..d2f339c 100644
--- a/engines/engine.cpp
+++ b/engines/engine.cpp
@@ -661,12 +661,16 @@ bool Engine::canLoadGameStateCurrently() {
}
Common::Error Engine::saveGameState(int slot, const Common::String &desc) {
+ return saveGameState(slot, desc, false);
+}
+
+Common::Error Engine::saveGameState(int slot, const Common::String &desc, bool isAutosave) {
Common::OutSaveFile *saveFile = _saveFileMan->openForSaving(getSaveStateName(slot));
if (!saveFile)
return Common::kWritingFailed;
- Common::Error result = saveGameStream(saveFile);
+ Common::Error result = saveGameStream(saveFile, isAutosave);
if (result.getCode() == Common::kNoError) {
MetaEngine::appendExtendedSave(saveFile, getTotalPlayTime() / 1000, desc);
@@ -677,7 +681,7 @@ Common::Error Engine::saveGameState(int slot, const Common::String &desc) {
return result;
}
-Common::Error Engine::saveGameStream(Common::WriteStream *stream) {
+Common::Error Engine::saveGameStream(Common::WriteStream *stream, bool isAutosave) {
// Default to returning an error when not implemented
return Common::kWritingFailed;
}
diff --git a/engines/engine.h b/engines/engine.h
index 2babc50..b819721 100644
--- a/engines/engine.h
+++ b/engines/engine.h
@@ -249,10 +249,20 @@ public:
/**
* Save a game state.
+ * @param slot the slot into which the savestate should be stored
+ * @param desc a description for the savestate, entered by the user
+ * @param isAutosave Expected to be true if an autosave is being created
+ * @return returns kNoError on success, else an error code.
+ */
+ virtual Common::Error saveGameState(int slot, const Common::String &desc, bool isAutosave);
+
+ /**
+ * Save a game state.
* @param stream The write stream to save the savegame data to
+ * @param isAutosave Expected to be true if an autosave is being created
* @return returns kNoError on success, else an error code.
*/
- virtual Common::Error saveGameStream(Common::WriteStream *stream);
+ virtual Common::Error saveGameStream(Common::WriteStream *stream, bool isAutosave = false);
/**
* Indicates whether a game state can be saved.
diff --git a/engines/griffon/griffon.h b/engines/griffon/griffon.h
index 80798cf..2565cdc 100644
--- a/engines/griffon/griffon.h
+++ b/engines/griffon/griffon.h
@@ -418,7 +418,7 @@ private:
virtual Common::Error loadGameState(int slot) override;
virtual Common::Error saveGameState(int slot, const Common::String &desc) override;
virtual Common::Error loadGameStream(Common::SeekableReadStream *file) override;
- virtual Common::Error saveGameStream(Common::WriteStream *file) override;
+ virtual Common::Error saveGameStream(Common::WriteStream *file, bool autoSave) override;
// sound.cpp
void setChannelVolume(int channel, int volume);
diff --git a/engines/griffon/saveload.cpp b/engines/griffon/saveload.cpp
index 117f519..59e98c9 100644
--- a/engines/griffon/saveload.cpp
+++ b/engines/griffon/saveload.cpp
@@ -193,7 +193,7 @@ int GriffonEngine::loadPlayer(int slotnum) {
return 0; // fail
}
-Common::Error GriffonEngine::saveGameStream(Common::WriteStream *file) {
+Common::Error GriffonEngine::saveGameStream(Common::WriteStream *file, bool) {
PRINT("%i", _player.level);
if (_player.level > 0) {
diff --git a/engines/ultima/shared/early/ultima_early.cpp b/engines/ultima/shared/early/ultima_early.cpp
index bc12672..476e48f 100644
--- a/engines/ultima/shared/early/ultima_early.cpp
+++ b/engines/ultima/shared/early/ultima_early.cpp
@@ -125,33 +125,17 @@ Game *UltimaEarlyEngine::createGame() const {
}
}
-Common::Error UltimaEarlyEngine::loadGameState(int slot) {
- Common::InSaveFile *saveFile = g_system->getSavefileManager()->openForLoading(
- Common::String::format("%s.%.3d", _targetName.c_str(), slot));
- if (!saveFile)
- return Common::kReadingFailed;
-
+Common::Error UltimaEarlyEngine::loadGameStream(Common::SeekableReadStream *stream) {
// Read in the game's data
- Common::Serializer s(saveFile, nullptr);
+ Common::Serializer s(stream, nullptr);
_game->synchronize(s);
-
- delete saveFile;
return Common::kNoError;
}
-Common::Error UltimaEarlyEngine::saveGameState(int slot, const Common::String &desc, bool isAutosave) {
- Common::OutSaveFile *saveFile = g_system->getSavefileManager()->openForSaving(
- Common::String::format("%s.%.3d", _targetName.c_str(), slot));
- if (!saveFile)
- return Common::kCreatingFileFailed;
-
+Common::Error UltimaEarlyEngine::saveGameStream(Common::WriteStream *stream, bool) {
// Write out the game's data
- Common::Serializer s(nullptr, saveFile);
+ Common::Serializer s(nullptr, stream);
_game->synchronize(s);
-
- saveFile->finalize();
- delete saveFile;
-
return Common::kNoError;
}
diff --git a/engines/ultima/shared/early/ultima_early.h b/engines/ultima/shared/early/ultima_early.h
index fefb35e..f52869a 100644
--- a/engines/ultima/shared/early/ultima_early.h
+++ b/engines/ultima/shared/early/ultima_early.h
@@ -120,16 +120,12 @@ public:
/**
* Load a savegame
*/
- virtual Common::Error loadGameState(int slot) override;
+ virtual Common::Error loadGameStream(Common::SeekableReadStream *stream) override;
/**
* Save a game state.
- * @param slot the slot into which the savestate should be stored
- * @param desc a description for the savestate, entered by the user
- * @param isAutosave If true, autosave is being created
- * @return returns kNoError on success, else an error code.
*/
- virtual Common::Error saveGameState(int slot, const Common::String &desc, bool isAutosave) override;
+ virtual Common::Error saveGameStream(Common::WriteStream *stream, bool isAutosave = false) override;
/*
* Creates a new hierarchy for the game, that contains all the logic for playing that particular game.
diff --git a/engines/ultima/shared/engine/ultima.h b/engines/ultima/shared/engine/ultima.h
index 7ea0695..f0c71d7 100644
--- a/engines/ultima/shared/engine/ultima.h
+++ b/engines/ultima/shared/engine/ultima.h
@@ -174,26 +174,6 @@ public:
virtual bool canSaveGameStateCurrently() override {
return canSaveGameStateCurrently(false);
}
-
- /**
- * Save a game state.
- * @param slot the slot into which the savestate should be stored
- * @param desc a description for the savestate, entered by the user
- * @param isAutosave If true, autosave is being created
- * @return returns kNoError on success, else an error code.
- */
- virtual Common::Error saveGameState(int slot, const Common::String &desc) override {
- return saveGameState(slot, desc, false);
- }
-
- /**
- * Save a game state.
- * @param slot the slot into which the savestate should be stored
- * @param desc a description for the savestate, entered by the user
- * @param isAutosave If true, autosave is being created
- * @return returns kNoError on success, else an error code.
- */
- virtual Common::Error saveGameState(int slot, const Common::String &desc, bool isAutosave) = 0;
};
extern UltimaEngine *g_ultima;
Commit: 318c7003fc4dae982d796b99fa434b9b455825a7
https://github.com/scummvm/scummvm/commit/318c7003fc4dae982d796b99fa434b9b455825a7
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2020-02-04T19:05:26-08:00
Commit Message:
GRIFFON: Implement autosaves
Changed paths:
A engines/griffon/POTFILES
engines/griffon/detection.cpp
engines/griffon/dialogs.cpp
engines/griffon/engine.cpp
engines/griffon/griffon.cpp
engines/griffon/griffon.h
engines/griffon/saveload.cpp
diff --git a/engines/griffon/POTFILES b/engines/griffon/POTFILES
new file mode 100644
index 0000000..63a6c01
--- /dev/null
+++ b/engines/griffon/POTFILES
@@ -0,0 +1 @@
+engines/griffon/griffon.cpp
diff --git a/engines/griffon/detection.cpp b/engines/griffon/detection.cpp
index 02b2d5c..8c65573 100644
--- a/engines/griffon/detection.cpp
+++ b/engines/griffon/detection.cpp
@@ -21,6 +21,7 @@
*/
#include "base/plugins.h"
+#include "common/config-manager.h"
#include "engines/advancedDetector.h"
#include "griffon/griffon.h"
@@ -59,7 +60,9 @@ public:
return "Griffon Engine";
}
- virtual int getMaximumSaveSlot() const { return 3; }
+ virtual int getMaximumSaveSlot() const {
+ return ConfMan.getInt("autosave_period") ? 4 : 3;
+ }
virtual const char *getOriginalCopyright() const {
return "The Griffon Legend (c) 2005 Syn9 (Daniel Kennedy)";
diff --git a/engines/griffon/dialogs.cpp b/engines/griffon/dialogs.cpp
index f955a26..84fd40e 100644
--- a/engines/griffon/dialogs.cpp
+++ b/engines/griffon/dialogs.cpp
@@ -630,7 +630,7 @@ void GriffonEngine::saveLoadNew() {
}
}
if (lowerLock && tickPause < _ticks) {
- if ((curCol == 1) && saveGameState(curRow - 1, "").getCode() == Common::kNoError) {
+ if ((curCol == 1) && saveGameState(curRow - 1, "", false).getCode() == Common::kNoError) {
_secStart += _secsInGame;
_secsInGame = 0;
lowerLock = false;
diff --git a/engines/griffon/engine.cpp b/engines/griffon/engine.cpp
index 1f4b7cf..ae781b5 100644
--- a/engines/griffon/engine.cpp
+++ b/engines/griffon/engine.cpp
@@ -97,6 +97,7 @@ void GriffonEngine::mainLoop() {
checkTrigger();
checkInputs();
+ autoSaveCheck();
if (!_forcePause)
handleWalking();
diff --git a/engines/griffon/griffon.cpp b/engines/griffon/griffon.cpp
index 2383150..e869d7b 100644
--- a/engines/griffon/griffon.cpp
+++ b/engines/griffon/griffon.cpp
@@ -40,6 +40,7 @@
#include "common/file.h"
#include "common/fs.h"
#include "common/system.h"
+#include "common/translation.h"
#include "graphics/pixelformat.h"
#include "engines/util.h"
@@ -60,6 +61,7 @@ GriffonEngine::GriffonEngine(OSystem *syst) : Engine(syst) {
_shouldQuit = false;
_gameMode = kGameModeIntro;
+ _lastAutosaveTime = g_system->getMillis();
_musicChannel = -1;
_menuChannel = -1;
@@ -183,4 +185,11 @@ Common::Error GriffonEngine::run() {
return Common::kNoError;
}
+void GriffonEngine::autoSaveCheck() {
+ if (shouldPerformAutoSave(_lastAutosaveTime) && canSaveGameStateCurrently()) {
+ saveGameState(4, _("Autosave"), true);
+ _lastAutosaveTime = g_system->getMillis();
+ }
+}
+
}
diff --git a/engines/griffon/griffon.h b/engines/griffon/griffon.h
index 2565cdc..ddee6b1 100644
--- a/engines/griffon/griffon.h
+++ b/engines/griffon/griffon.h
@@ -340,6 +340,7 @@ private:
Common::RandomSource *_rnd;
bool _shouldQuit;
int _gameMode;
+ uint32 _lastAutosaveTime;
Console *_console;
@@ -416,9 +417,10 @@ private:
virtual Common::String getSaveStateName(int slot) const override;
int loadPlayer(int slotnum);
virtual Common::Error loadGameState(int slot) override;
- virtual Common::Error saveGameState(int slot, const Common::String &desc) override;
+ virtual Common::Error saveGameState(int slot, const Common::String &desc, bool isAutosave) override;
virtual Common::Error loadGameStream(Common::SeekableReadStream *file) override;
- virtual Common::Error saveGameStream(Common::WriteStream *file, bool autoSave) override;
+ virtual Common::Error saveGameStream(Common::WriteStream *file, bool isAutosave) override;
+ void autoSaveCheck();
// sound.cpp
void setChannelVolume(int channel, int volume);
diff --git a/engines/griffon/saveload.cpp b/engines/griffon/saveload.cpp
index 59e98c9..d5067dd 100644
--- a/engines/griffon/saveload.cpp
+++ b/engines/griffon/saveload.cpp
@@ -69,9 +69,9 @@ Common::Error GriffonEngine::loadGameState(int slot) {
return result;
}
-Common::Error GriffonEngine::saveGameState(int slot, const Common::String &desc) {
+Common::Error GriffonEngine::saveGameState(int slot, const Common::String &desc, bool isAutosave) {
Common::String saveDesc = Common::String::format("Level: %d Map: %d", _player.level, _curMap);
- return Engine::saveGameState(slot, saveDesc);
+ return Engine::saveGameState(slot, isAutosave ? desc : saveDesc, isAutosave);
}
Common::Error GriffonEngine::loadGameStream(Common::SeekableReadStream *file) {
Commit: 4b8d509cfe82ea2a56b826d06ef21fe6d6ec6c5a
https://github.com/scummvm/scummvm/commit/4b8d509cfe82ea2a56b826d06ef21fe6d6ec6c5a
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2020-02-04T19:05:26-08:00
Commit Message:
ENGINES: Added GUI message to save/load dialog methods if unavailable
Changed paths:
engines/engine.cpp
diff --git a/engines/engine.cpp b/engines/engine.cpp
index d2f339c..f2bf7ad 100644
--- a/engines/engine.cpp
+++ b/engines/engine.cpp
@@ -692,8 +692,11 @@ bool Engine::canSaveGameStateCurrently() {
}
bool Engine::loadGameDialog() {
- if (!canLoadGameStateCurrently())
+ if (!canLoadGameStateCurrently()) {
+ GUI::MessageDialog dialog(_("Loading game is currently unavailable"));
+ dialog.runModal();
return false;
+ }
GUI::SaveLoadChooser *dialog = new GUI::SaveLoadChooser(_("Load game:"), _("Load"), false);
pauseEngine(true);
@@ -708,8 +711,11 @@ bool Engine::loadGameDialog() {
}
bool Engine::saveGameDialog() {
- if (!canSaveGameStateCurrently())
+ if (!canSaveGameStateCurrently()) {
+ GUI::MessageDialog dialog(_("Saving game is currently unavailable"));
+ dialog.runModal();
return false;
+ }
GUI::SaveLoadChooser *dialog = new GUI::SaveLoadChooser(_("Save game:"), _("Save"), true);
pauseEngine(true);
Commit: 2d09358030146d0205e7818d88d6a80d9cec9383
https://github.com/scummvm/scummvm/commit/2d09358030146d0205e7818d88d6a80d9cec9383
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2020-02-04T19:05:26-08:00
Commit Message:
ENGINES: Change load/save game dialog message to OSD
Changed paths:
engines/engine.cpp
diff --git a/engines/engine.cpp b/engines/engine.cpp
index f2bf7ad..30b304f 100644
--- a/engines/engine.cpp
+++ b/engines/engine.cpp
@@ -693,8 +693,7 @@ bool Engine::canSaveGameStateCurrently() {
bool Engine::loadGameDialog() {
if (!canLoadGameStateCurrently()) {
- GUI::MessageDialog dialog(_("Loading game is currently unavailable"));
- dialog.runModal();
+ g_system->displayMessageOnOSD(_("Loading game is currently unavailable"));
return false;
}
@@ -712,8 +711,7 @@ bool Engine::loadGameDialog() {
bool Engine::saveGameDialog() {
if (!canSaveGameStateCurrently()) {
- GUI::MessageDialog dialog(_("Saving game is currently unavailable"));
- dialog.runModal();
+ g_system->displayMessageOnOSD(_("Saving game is currently unavailable"));
return false;
}
More information about the Scummvm-git-logs
mailing list