renamed _saveLoadCompatible to _saveTemporaryState; make use of requestLoad/requestSave

svn-id: r12691
This commit is contained in:
Max Horn 2004-01-31 22:12:35 +00:00
parent a67aca5b19
commit 9fe1aaa921
8 changed files with 29 additions and 37 deletions

1
TODO
View file

@ -174,7 +174,6 @@ SCUMM
Or constantly (well, at least whenever the camera moves) redraw the text.
That would require buffering the text; maybe the blast text code could be
reused for this...
* Rename _saveLoadCompatible variable to something sensible, like _saveTemporaryState
Broken Sword 2
==============

View file

@ -214,9 +214,7 @@ bool ScummDebugger::Cmd_LoadGame(int argc, const char **argv) {
if (argc > 1) {
int slot = atoi(argv[1]);
_vm->_saveLoadSlot = slot;
_vm->_saveLoadFlag = 2;
_vm->_saveLoadCompatible = false;
_vm->requestLoad(slot);
_detach_now = true;
return false;
@ -230,10 +228,7 @@ bool ScummDebugger::Cmd_SaveGame(int argc, const char **argv) {
if (argc > 2) {
int slot = atoi(argv[1]);
strcpy(_vm->_saveLoadName, argv[2]);
_vm->_saveLoadSlot = slot;
_vm->_saveLoadFlag = 1;
_vm->_saveLoadCompatible = false;
_vm->requestSave(slot, argv[2]);
} else
DebugPrintf("Syntax: savegame <slotnum> <name>\n");

View file

@ -49,9 +49,9 @@ struct SaveGameHeader {
};
void ScummEngine::requestSave(int slot, const char *name) {
void ScummEngine::requestSave(int slot, const char *name, bool compatible) {
_saveLoadSlot = slot;
_saveLoadCompatible = false;
_saveTemporaryState = compatible;
_saveLoadFlag = 1; // 1 for save
assert(name);
strcpy(_saveLoadName, name);
@ -59,7 +59,7 @@ void ScummEngine::requestSave(int slot, const char *name) {
void ScummEngine::requestLoad(int slot) {
_saveLoadSlot = slot;
_saveLoadCompatible = false;
_saveTemporaryState = false;
_saveLoadFlag = 2; // 2 for load
}
@ -136,7 +136,7 @@ bool ScummEngine::loadState(int slot, bool compat, SaveFileManager *mgr) {
// If we don't have iMUSE at all we may as well stop the sounds. The previous
// default behavior here was to stopAllSounds on all state restores.
if (!_imuse || _saveSound || !_saveLoadCompatible)
if (!_imuse || _saveSound || !_saveTemporaryState)
_sound->stopAllSounds();
_sound->stopCD();
@ -767,7 +767,7 @@ void ScummEngine::saveOrLoad(Serializer *s, uint32 savegameVersion) {
AudioCD.play(info.track, info.numLoops, info.start, info.duration);
}
if (_imuse && (_saveSound || !_saveLoadCompatible)) {
if (_imuse && (_saveSound || !_saveTemporaryState)) {
_imuse->save_or_load(s, this);
_imuse->setMasterVolume(ConfMan.getInt("master_volume"));
_imuse->set_music_volume(ConfMan.getInt("music_volume"));

View file

@ -1158,13 +1158,13 @@ void ScummEngine_v5::o5_saveLoadGame() {
result = 0;
break;
case 0x40: // load
if (loadState(slot, _saveLoadCompatible))
if (loadState(slot, _saveTemporaryState))
result = 3; // sucess
else
result = 5; // failed to load
break;
case 0x80: // save
if (saveState(slot, _saveLoadCompatible))
if (saveState(slot, _saveTemporaryState))
result = 0;
else
result = 2;
@ -1899,7 +1899,7 @@ void ScummEngine_v5::o5_roomOps() {
_saveLoadFlag = getVarOrDirectByte(PARAM_1);
_saveLoadSlot = getVarOrDirectByte(PARAM_2);
_saveLoadSlot = 99; /* use this slot */
_saveLoadCompatible = true;
_saveTemporaryState = true;
break;
case 10: // SO_ROOM_FADE
a = getVarOrDirectWord(PARAM_1);

View file

@ -1685,7 +1685,7 @@ void ScummEngine_v6::o6_roomOps() {
break;
case 180: // SO_ROOM_SAVEGAME
_saveLoadCompatible = true;
_saveTemporaryState = true;
_saveLoadSlot = pop();
_saveLoadFlag = pop();
if (_gameId == GID_TENTACLE)
@ -1768,7 +1768,7 @@ void ScummEngine_v6::o6_roomOps() {
_scriptPointer += len + 1;
_saveLoadFlag = pop();
_saveLoadSlot = 99;
_saveLoadCompatible = true;
_saveTemporaryState = true;
break;
default:
error("o6_roomOps: default case %d", op);

View file

@ -914,12 +914,12 @@ void ScummEngine_v8::o8_roomOps() {
setPalette(a);
break;
case 0x5D: // SO_ROOM_SAVE_GAME Save game
_saveLoadCompatible = true;
_saveTemporaryState = true;
_saveLoadSlot = 1;
_saveLoadFlag = 1;
break;
case 0x5E: // SO_ROOM_LOAD_GAME Load game
_saveLoadCompatible = true;
_saveTemporaryState = true;
_saveLoadSlot = 1;
_saveLoadFlag = 2;
break;
@ -1361,7 +1361,7 @@ void ScummEngine_v8::o8_kernelSetFunctions() {
// saveGameRead
_saveLoadSlot = args[1];
_saveLoadFlag = 2;
_saveLoadCompatible = false;
_saveTemporaryState = false;
warning("Sgl: %d", args[1]);
break;
}

View file

@ -468,7 +468,7 @@ protected:
// Save/Load class - some of this may be GUI
byte _saveLoadFlag, _saveLoadSlot;
uint32 _lastSaveTime;
bool _saveLoadCompatible;
bool _saveTemporaryState;
char _saveLoadName[32];
bool saveState(int slot, bool compat, SaveFileManager *mgr);
@ -497,7 +497,7 @@ public:
bool getSavegameName(int slot, char *desc, SaveFileManager *mgr);
void listSavegames(bool *marks, int num, SaveFileManager *mgr);
void requestSave(int slot, const char *name);
void requestSave(int slot, const char *name, bool compatible = false);
void requestLoad(int slot);
protected:

View file

@ -374,7 +374,7 @@ ScummEngine::ScummEngine(GameDetector *detector, OSystem *syst, const ScummGameS
_saveLoadFlag = 0;
_saveLoadSlot = 0;
_lastSaveTime = 0;
_saveLoadCompatible = false;
_saveTemporaryState = false;
memset(_saveLoadName, 0, sizeof(_saveLoadName));
_maxHeapThreshold = 0;
_minHeapThreshold = 0;
@ -771,9 +771,7 @@ ScummEngine::ScummEngine(GameDetector *detector, OSystem *syst, const ScummGameS
// Load game from specified slot, if any
if (ConfMan.hasKey("save_slot")) {
_saveLoadSlot = ConfMan.getInt("save_slot");
_saveLoadFlag = 2;
_saveLoadCompatible = false;
requestLoad(ConfMan.getInt("save_slot"));
}
loadLanguageBundle();
@ -996,7 +994,7 @@ void ScummEngine::launch() {
// If requested, load a save game instead of running the boot script
if (_saveLoadFlag != 2 || !loadState(_saveLoadSlot, _saveLoadCompatible)) {
if (_saveLoadFlag != 2 || !loadState(_saveLoadSlot, _saveTemporaryState)) {
int args[16];
memset(args, 0, sizeof(args));
args[0] = _bootParam;
@ -1390,7 +1388,7 @@ int ScummEngine::scummLoop(int delta) {
_saveLoadSlot = 0;
sprintf(_saveLoadName, "Autosave %d", _saveLoadSlot);
_saveLoadFlag = 1;
_saveLoadCompatible = false;
_saveTemporaryState = false;
}
if (VAR_GAME_LOADED != 0xFF)
@ -1402,30 +1400,30 @@ load_game:
char filename[256];
if (_saveLoadFlag == 1) {
success = saveState(_saveLoadSlot, _saveLoadCompatible);
success = saveState(_saveLoadSlot, _saveTemporaryState);
if (!success)
errMsg = "Failed to save game state to file:\n\n%s";
// Ender: Disabled for small_header games, as can overwrite game
// variables (eg, Zak256 cashcard values). Temp disabled for V8
// because of odd timing issue with scripts and the variable reset
if (success && _saveLoadCompatible && !(_features & GF_SMALL_HEADER) && _version < 8)
if (success && _saveTemporaryState && !(_features & GF_SMALL_HEADER) && _version < 8)
VAR(VAR_GAME_LOADED) = 201;
} else {
success = loadState(_saveLoadSlot, _saveLoadCompatible);
success = loadState(_saveLoadSlot, _saveTemporaryState);
if (!success)
errMsg = "Failed to load game state from file:\n\n%s";
// Ender: Disabled for small_header games, as can overwrite game
// variables (eg, Zak256 cashcard values).
if (success && _saveLoadCompatible && !(_features & GF_SMALL_HEADER))
if (success && _saveTemporaryState && !(_features & GF_SMALL_HEADER))
VAR(VAR_GAME_LOADED) = 203;
}
makeSavegameName(filename, _saveLoadSlot, _saveLoadCompatible);
makeSavegameName(filename, _saveLoadSlot, _saveTemporaryState);
if (!success) {
displayError(false, errMsg, filename);
} else if (_saveLoadFlag == 1 && _saveLoadSlot != 0 && !_saveLoadCompatible) {
} else if (_saveLoadFlag == 1 && _saveLoadSlot != 0 && !_saveTemporaryState) {
// Display "Save successful" message, except for auto saves
#ifdef __PALM_OS__
char buf[256]; // 1024 is too big overflow the stack
@ -1607,7 +1605,7 @@ void ScummEngine::parseEvents() {
switch(event.event_code) {
case OSystem::EVENT_KEYDOWN:
if (event.kbd.keycode >= '0' && event.kbd.keycode<='9'
if (event.kbd.keycode >= '0' && event.kbd.keycode <= '9'
&& (event.kbd.flags == OSystem::KBD_ALT ||
event.kbd.flags == OSystem::KBD_CTRL)) {
_saveLoadSlot = event.kbd.keycode - '0';
@ -1618,7 +1616,7 @@ void ScummEngine::parseEvents() {
sprintf(_saveLoadName, "Quicksave %d", _saveLoadSlot);
_saveLoadFlag = (event.kbd.flags == OSystem::KBD_ALT) ? 1 : 2;
_saveLoadCompatible = false;
_saveTemporaryState = false;
} else if (event.kbd.flags == OSystem::KBD_CTRL) {
if (event.kbd.keycode == 'f')
_fastMode ^= 1;