diff options
Diffstat (limited to 'engines/xeen/saves.cpp')
-rw-r--r-- | engines/xeen/saves.cpp | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/engines/xeen/saves.cpp b/engines/xeen/saves.cpp index a055627af4..7eadac139c 100644 --- a/engines/xeen/saves.cpp +++ b/engines/xeen/saves.cpp @@ -258,18 +258,25 @@ bool SavesManager::loadGame() { } bool SavesManager::saveGame() { - if (!g_vm->canSaveGameStateCurrently()) + Map &map = *g_vm->_map; + Windows &windows = *g_vm->_windows; + + if (map.mazeData()._mazeFlags & RESTRICTION_SAVE) { + ErrorScroll::show(g_vm, Res.SAVE_OFF_LIMITS, WT_NONFREEZED_WAIT); return false; + } else if (!g_vm->canSaveGameStateCurrently()) { + return false; + } else { + GUI::SaveLoadChooser *dialog = new GUI::SaveLoadChooser(_("Save game:"), _("Save"), true); + int slotNum = dialog->runModalWithCurrentTarget(); + Common::String saveName = dialog->getResultString(); + delete dialog; - GUI::SaveLoadChooser *dialog = new GUI::SaveLoadChooser(_("Save game:"), _("Save"), true); - int slotNum = dialog->runModalWithCurrentTarget(); - Common::String saveName = dialog->getResultString(); - delete dialog; - - if (slotNum != -1) - saveGameState(slotNum, saveName); + if (slotNum != -1) + saveGameState(slotNum, saveName); - return slotNum != -1; + return slotNum != -1; + } } } // End of namespace Xeen |