mirror of
https://github.com/libretro/scummvm.git
synced 2025-02-04 18:06:26 +00:00
XEEN: Don't allow saving in the war zone
This commit is contained in:
parent
e5c4adb3c0
commit
4fefa88282
@ -1922,6 +1922,8 @@ const char *const MUSIC_FILES2[6][7] = {
|
||||
};
|
||||
|
||||
const char *const DIFFICULTY_TEXT = "\v000\t000\x3""cSelect Game Preference";
|
||||
const char *const SAVE_OFF_LIMITS = "\x3""c\v002\t000The Gods of Game Restoration deem this area off limits!\n"
|
||||
"Sorry, no saving in this maze.";
|
||||
|
||||
void writeConstants(CCArchive &cc) {
|
||||
Common::MemFile file;
|
||||
@ -2261,6 +2263,7 @@ void writeConstants(CCArchive &cc) {
|
||||
file.syncStrings(MUSIC_FILES1, 5);
|
||||
file.syncStrings2D((const char *const *)MUSIC_FILES2, 6, 7);
|
||||
file.syncString(DIFFICULTY_TEXT);
|
||||
file.syncString(SAVE_OFF_LIMITS);
|
||||
|
||||
cc.add("CONSTANTS", file);
|
||||
}
|
||||
|
@ -172,8 +172,7 @@ int ControlPanel::execute() {
|
||||
if (g_vm->canLoadGameStateCurrently())
|
||||
saves.loadGame();
|
||||
} else if (result == 4) {
|
||||
if (g_vm->canSaveGameStateCurrently())
|
||||
saves.saveGame();
|
||||
saves.saveGame();
|
||||
}
|
||||
|
||||
return result;
|
||||
|
@ -398,6 +398,7 @@ void Resources::loadData() {
|
||||
file.syncStrings(MUSIC_FILES1, 5);
|
||||
file.syncStrings2D(&MUSIC_FILES2[0][0], 6, 7);
|
||||
file.syncString(DIFFICULTY_TEXT);
|
||||
file.syncString(SAVE_OFF_LIMITS);
|
||||
}
|
||||
|
||||
} // End of namespace Xeen
|
||||
|
@ -453,6 +453,7 @@ public:
|
||||
const char *MUSIC_FILES1[5];
|
||||
const char *MUSIC_FILES2[6][7];
|
||||
const char *DIFFICULTY_TEXT;
|
||||
const char *SAVE_OFF_LIMITS;
|
||||
public:
|
||||
/**
|
||||
* Constructor
|
||||
|
@ -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
|
||||
|
@ -193,7 +193,7 @@ bool XeenEngine::canLoadGameStateCurrently() {
|
||||
}
|
||||
|
||||
bool XeenEngine::canSaveGameStateCurrently() {
|
||||
return _mode != MODE_COMBAT && _mode != MODE_STARTUP;
|
||||
return _mode != MODE_COMBAT && _mode != MODE_STARTUP && (_map->mazeData()._mazeFlags & RESTRICTION_SAVE) == 0;
|
||||
}
|
||||
|
||||
void XeenEngine::playGame() {
|
||||
|
Loading…
x
Reference in New Issue
Block a user