aboutsummaryrefslogtreecommitdiff
path: root/engines/lure/surface.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/lure/surface.cpp')
-rw-r--r--engines/lure/surface.cpp20
1 files changed, 18 insertions, 2 deletions
diff --git a/engines/lure/surface.cpp b/engines/lure/surface.cpp
index 99e6256821..a5ee93dd09 100644
--- a/engines/lure/surface.cpp
+++ b/engines/lure/surface.cpp
@@ -852,12 +852,18 @@ bool SaveRestoreDialog::show(bool saveDialog) {
delete s;
Sound.resume();
+ int errorFlag = 0;
if (doneFlag) {
// Handle save or restore
- if (saveDialog)
+ if (saveDialog) {
doneFlag = engine.saveGame(selectedLine + 1, *saveNames[selectedLine]);
- else
+ if (!doneFlag)
+ errorFlag = 1;
+ } else {
doneFlag = engine.loadGame(selectedLine + 1);
+ if (!doneFlag)
+ errorFlag = 2;
+ }
}
mouse.popCursor();
@@ -866,6 +872,16 @@ bool SaveRestoreDialog::show(bool saveDialog) {
for (index = 0; index < numSaves; ++index) delete saveNames[index];
Memory::dealloc(saveNames);
+ if (errorFlag != 0) {
+ Room::getReference().update();
+ screen.update();
+
+ if (errorFlag == 1)
+ Dialog::show("Error occurred saving the game");
+ else if (errorFlag == 2)
+ Dialog::show("Error occurred loading the savegame");
+ }
+
return doneFlag;
}