aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohannes Schickel2008-11-09 13:12:38 +0000
committerJohannes Schickel2008-11-09 13:12:38 +0000
commit85c1d35ae378bd149670ac2c0fa928b7234eb50d (patch)
tree0d6e7f08bc1482dbe4f301bfa2ab68287eff2ad1
parent36de1204e343743b4c86d8b30113640b3e697c7c (diff)
downloadscummvm-rg350-85c1d35ae378bd149670ac2c0fa928b7234eb50d.tar.gz
scummvm-rg350-85c1d35ae378bd149670ac2c0fa928b7234eb50d.tar.bz2
scummvm-rg350-85c1d35ae378bd149670ac2c0fa928b7234eb50d.zip
Error out on savegame load failure (again).
svn-id: r34953
-rw-r--r--engines/kyra/gui_hof.cpp4
-rw-r--r--engines/kyra/gui_lok.cpp2
-rw-r--r--engines/kyra/gui_mr.cpp6
-rw-r--r--engines/kyra/kyra_hof.cpp2
-rw-r--r--engines/kyra/kyra_lok.cpp4
-rw-r--r--engines/kyra/kyra_mr.cpp2
-rw-r--r--engines/kyra/kyra_v1.h1
-rw-r--r--engines/kyra/kyra_v2.cpp2
-rw-r--r--engines/kyra/saveload.cpp12
9 files changed, 24 insertions, 11 deletions
diff --git a/engines/kyra/gui_hof.cpp b/engines/kyra/gui_hof.cpp
index 1b3413e724..c134745956 100644
--- a/engines/kyra/gui_hof.cpp
+++ b/engines/kyra/gui_hof.cpp
@@ -785,7 +785,7 @@ int GUI_HoF::optionsButton(Button *button) {
if (!_loadedSave && _reloadTemporarySave) {
_vm->_unkSceneScreenFlag1 = true;
- _vm->loadGameState(999);
+ _vm->loadGameStateCheck(999);
//_vm->_saveFileMan->removeSavefile(_vm->getSavegameFilename(999));
_vm->_unkSceneScreenFlag1 = false;
}
@@ -1195,7 +1195,7 @@ int GUI_HoF::loadMenu(Button *caller) {
} else if (_vm->_gameToLoad >= 0) {
restorePage1(_vm->_screenBuffer);
restorePalette();
- _vm->loadGameState(_vm->_gameToLoad);
+ _vm->loadGameStateCheck(_vm->_gameToLoad);
if (_vm->_gameToLoad == 0) {
_restartGame = true;
for (int i = 0; i < 23; ++i)
diff --git a/engines/kyra/gui_lok.cpp b/engines/kyra/gui_lok.cpp
index 64d0c91d24..a778f98ed6 100644
--- a/engines/kyra/gui_lok.cpp
+++ b/engines/kyra/gui_lok.cpp
@@ -658,7 +658,7 @@ int GUI_LoK::loadGameMenu(Button *button) {
} else {
restorePalette();
if (_vm->_gameToLoad != -1)
- _vm->loadGameState(_vm->_gameToLoad);
+ _vm->loadGameStateCheck(_vm->_gameToLoad);
_displayMenu = false;
_menuRestoreScreen = false;
}
diff --git a/engines/kyra/gui_mr.cpp b/engines/kyra/gui_mr.cpp
index 616c235266..e3f250c20e 100644
--- a/engines/kyra/gui_mr.cpp
+++ b/engines/kyra/gui_mr.cpp
@@ -1366,7 +1366,7 @@ int GUI_MR::optionsButton(Button *button) {
if (!_loadedSave && _reloadTemporarySave) {
_vm->_unkSceneScreenFlag1 = true;
- _vm->loadGameState(999);
+ _vm->loadGameStateCheck(999);
//_vm->_saveFileMan->removeSavefile(_vm->getSavegameFilename(999));
_vm->_unkSceneScreenFlag1 = false;
}
@@ -1408,7 +1408,7 @@ int GUI_MR::loadMenu(Button *caller) {
restorePage1(_vm->_screenBuffer);
restorePalette();
_vm->_menuDirectlyToLoad = false;
- _vm->loadGameState(_vm->_gameToLoad);
+ _vm->loadGameStateCheck(_vm->_gameToLoad);
if (_vm->_gameToLoad == 0) {
_restartGame = true;
_vm->runStartupScript(1, 1);
@@ -1425,7 +1425,7 @@ int GUI_MR::loadSecondChance(Button *button) {
_vm->_gameToLoad = 999;
restorePage1(_vm->_screenBuffer);
- _vm->loadGameState(_vm->_gameToLoad);
+ _vm->loadGameStateCheck(_vm->_gameToLoad);
_displayMenu = false;
_loadedSave = true;
return 0;
diff --git a/engines/kyra/kyra_hof.cpp b/engines/kyra/kyra_hof.cpp
index 9811448cde..3ec6a44338 100644
--- a/engines/kyra/kyra_hof.cpp
+++ b/engines/kyra/kyra_hof.cpp
@@ -439,7 +439,7 @@ void KyraEngine_HoF::startup() {
enterNewScene(_mainCharacter.sceneId, _mainCharacter.facing, 0, 0, 1);
saveGameState(0, "New Game", 0);
} else {
- loadGameState(_gameToLoad);
+ loadGameStateCheck(_gameToLoad);
}
_screen->showMouse();
diff --git a/engines/kyra/kyra_lok.cpp b/engines/kyra/kyra_lok.cpp
index 34be623369..b56a96205e 100644
--- a/engines/kyra/kyra_lok.cpp
+++ b/engines/kyra/kyra_lok.cpp
@@ -394,7 +394,7 @@ void KyraEngine_LoK::startup() {
saveGameState(0, "New game", 0);
} else {
_screen->setFont(Screen::FID_8_FNT);
- loadGameState(_gameToLoad);
+ loadGameStateCheck(_gameToLoad);
_gameToLoad = -1;
}
}
@@ -476,7 +476,7 @@ void KyraEngine_LoK::delay(uint32 amount, bool update, bool isMainLoop) {
int saveLoadSlot = 9 - (event.kbd.keycode - '0') + 990;
if (event.kbd.flags == Common::KBD_CTRL)
- loadGameState(saveLoadSlot);
+ loadGameStateCheck(saveLoadSlot);
else {
char savegameName[14];
sprintf(savegameName, "Quicksave %d", event.kbd.keycode - '0');
diff --git a/engines/kyra/kyra_mr.cpp b/engines/kyra/kyra_mr.cpp
index 877a6d4397..823b253534 100644
--- a/engines/kyra/kyra_mr.cpp
+++ b/engines/kyra/kyra_mr.cpp
@@ -690,7 +690,7 @@ void KyraEngine_MR::startup() {
if (_gameToLoad == -1)
enterNewScene(_mainCharacter.sceneId, _mainCharacter.facing, 0, 0, 1);
else
- loadGameState(_gameToLoad);
+ loadGameStateCheck(_gameToLoad);
if (_menuDirectlyToLoad)
(*_mainButtonData[0].buttonCallback)(&_mainButtonData[0]);
diff --git a/engines/kyra/kyra_v1.h b/engines/kyra/kyra_v1.h
index 2d68dd2315..4ef9f479c8 100644
--- a/engines/kyra/kyra_v1.h
+++ b/engines/kyra/kyra_v1.h
@@ -306,6 +306,7 @@ protected:
static kReadSaveHeaderError readSaveHeader(Common::SeekableReadStream *file, bool loadThumbnail, SaveHeader &header);
+ void loadGameStateCheck(int slot);
virtual Common::Error loadGameState(int slot) = 0;
Common::Error saveGameState(int slot, const char *saveName) { return saveGameState(slot, saveName, 0); }
virtual Common::Error saveGameState(int slot, const char *saveName, const Graphics::Surface *thumbnail) = 0;
diff --git a/engines/kyra/kyra_v2.cpp b/engines/kyra/kyra_v2.cpp
index 368c14e29d..3099652af3 100644
--- a/engines/kyra/kyra_v2.cpp
+++ b/engines/kyra/kyra_v2.cpp
@@ -185,7 +185,7 @@ int KyraEngine_v2::checkInput(Button *buttonList, bool mainLoop) {
int saveLoadSlot = 9 - (event.kbd.keycode - '0') + 990;
if (event.kbd.flags == Common::KBD_CTRL) {
- loadGameState(saveLoadSlot);
+ loadGameStateCheck(saveLoadSlot);
_eventList.clear();
breakLoop = true;
} else {
diff --git a/engines/kyra/saveload.cpp b/engines/kyra/saveload.cpp
index 9fea2f0ea1..07e770518f 100644
--- a/engines/kyra/saveload.cpp
+++ b/engines/kyra/saveload.cpp
@@ -251,5 +251,17 @@ void KyraEngine_v1::checkAutosave() {
}
}
+void KyraEngine_v1::loadGameStateCheck(int slot) {
+ if (loadGameState(slot) != Common::kNoError) {
+ const char *filename = getSavegameFilename(slot);
+ Common::String errorMessage = "Could not load savegame: '";
+ errorMessage += filename;
+ errorMessage += "'";
+
+ GUIErrorMessage(errorMessage);
+ error(errorMessage.c_str());
+ }
+}
+
} // end of namespace Kyra