mirror of
https://github.com/libretro/scummvm.git
synced 2025-01-17 23:44:22 +00:00
ENGINES: Add error handling for GMM Gamestate Load/Save Usage.
As indicated by wjp, the Global Main Menu (GMM) did not check or report on the returned error state from saveGameState() and loadGameState() usage. This corrects this and adds a MessageDialog report of any failure.
This commit is contained in:
parent
7986f1709d
commit
aa26d5def4
@ -227,19 +227,24 @@ void MainMenuDialog::save() {
|
||||
Common::String result(_saveDialog->getResultString());
|
||||
if (result.empty()) {
|
||||
// If the user was lazy and entered no save name, come up with a default name.
|
||||
Common::String buf;
|
||||
#if defined(USE_SAVEGAME_TIMESTAMP)
|
||||
TimeDate curTime;
|
||||
g_system->getTimeAndDate(curTime);
|
||||
curTime.tm_year += 1900; // fixup year
|
||||
curTime.tm_mon++; // fixup month
|
||||
buf = Common::String::format("%04d.%02d.%02d / %02d:%02d:%02d", curTime.tm_year, curTime.tm_mon, curTime.tm_mday, curTime.tm_hour, curTime.tm_min, curTime.tm_sec);
|
||||
result = Common::String::format("%04d.%02d.%02d / %02d:%02d:%02d", curTime.tm_year, curTime.tm_mon, curTime.tm_mday, curTime.tm_hour, curTime.tm_min, curTime.tm_sec);
|
||||
#else
|
||||
buf = Common::String::format("Save %d", slot + 1);
|
||||
result = Common::String::format("Save %d", slot + 1);
|
||||
#endif
|
||||
_engine->saveGameState(slot, buf);
|
||||
} else {
|
||||
_engine->saveGameState(slot, result);
|
||||
}
|
||||
|
||||
Common::Error status = _engine->saveGameState(slot, result);
|
||||
if (status.getCode() != Common::kNoError) {
|
||||
Common::String failMessage = Common::String::format(_("Gamestate save failed (%s)! "
|
||||
"Please consult the README for basic information, and for "
|
||||
"instructions on how to obtain further assistance."), status.getDesc().c_str());
|
||||
GUI::MessageDialog dialog(failMessage);
|
||||
dialog.runModal();
|
||||
}
|
||||
|
||||
close();
|
||||
@ -256,7 +261,7 @@ void MainMenuDialog::load() {
|
||||
|
||||
_engine->setGameToLoadSlot(slot);
|
||||
|
||||
if (slot >= 0)
|
||||
if (slot >= 0)
|
||||
close();
|
||||
}
|
||||
|
||||
|
@ -420,12 +420,16 @@ void Engine::openMainMenuDialog() {
|
||||
// (not from inside the menu loop to avoid
|
||||
// mouse cursor glitches and simliar bugs,
|
||||
// e.g. #2822778).
|
||||
// FIXME: For now we just ignore the return
|
||||
// value, which is quite bad since it could
|
||||
// be a fatal loading error, which renders
|
||||
// the engine unusable.
|
||||
if (_saveSlotToLoad >= 0)
|
||||
loadGameState(_saveSlotToLoad);
|
||||
if (_saveSlotToLoad >= 0) {
|
||||
Common::Error status = loadGameState(_saveSlotToLoad);
|
||||
if (status.getCode() != Common::kNoError) {
|
||||
Common::String failMessage = Common::String::format(_("Gamestate load failed (%s)! "
|
||||
"Please consult the README for basic information, and for "
|
||||
"instructions on how to obtain further assistance."), status.getDesc().c_str());
|
||||
GUI::MessageDialog dialog(failMessage);
|
||||
dialog.runModal();
|
||||
}
|
||||
}
|
||||
|
||||
syncSoundSettings();
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user