[Scummvm-cvs-logs] SF.net SVN: scummvm:[42671] scummvm/trunk/engines/scumm
Kirben at users.sourceforge.net
Kirben at users.sourceforge.net
Thu Jul 23 07:48:20 CEST 2009
Revision: 42671
http://scummvm.svn.sourceforge.net/scummvm/?rev=42671&view=rev
Author: Kirben
Date: 2009-07-23 05:48:20 +0000 (Thu, 23 Jul 2009)
Log Message:
-----------
Simplify the code to check whether loading or saving a game is possible.
Modified Paths:
--------------
scummvm/trunk/engines/scumm/dialogs.cpp
scummvm/trunk/engines/scumm/input.cpp
scummvm/trunk/engines/scumm/saveload.cpp
Modified: scummvm/trunk/engines/scumm/dialogs.cpp
===================================================================
--- scummvm/trunk/engines/scumm/dialogs.cpp 2009-07-23 01:41:14 UTC (rev 42670)
+++ scummvm/trunk/engines/scumm/dialogs.cpp 2009-07-23 05:48:20 UTC (rev 42671)
@@ -472,9 +472,7 @@
}
void ScummMenuDialog::reflowLayout() {
- // For v4+ games do not allow to save in room 0 just as original did.
- // It is not possible to load such saves
- if ((_vm->_game.version >= 4) && (_vm->_currentRoom == 0))
+ if (!_vm->canSaveGameStateCurrently())
_saveButton->setEnabled(false);
Dialog::reflowLayout();
Modified: scummvm/trunk/engines/scumm/input.cpp
===================================================================
--- scummvm/trunk/engines/scumm/input.cpp 2009-07-23 01:41:14 UTC (rev 42670)
+++ scummvm/trunk/engines/scumm/input.cpp 2009-07-23 05:48:20 UTC (rev 42671)
@@ -111,8 +111,8 @@
switch (event.type) {
case Common::EVENT_KEYDOWN:
if (event.kbd.keycode >= '0' && event.kbd.keycode <= '9'
- && (event.kbd.flags == Common::KBD_ALT ||
- event.kbd.flags == Common::KBD_CTRL)) {
+ && event.kbd.flags == Common::KBD_CTRL &&
+ canLoadGameStateCurrently()) {
_saveLoadSlot = event.kbd.keycode - '0';
// don't overwrite autosave (slot 0)
@@ -120,9 +120,25 @@
_saveLoadSlot = 10;
sprintf(_saveLoadName, "Quicksave %d", _saveLoadSlot);
- _saveLoadFlag = (event.kbd.flags == Common::KBD_ALT) ? 1 : 2;
+ _saveLoadFlag = 2;
_saveTemporaryState = false;
+ } else if (event.kbd.keycode >= '0' && event.kbd.keycode <= '9'
+ && event.kbd.flags == Common::KBD_ALT &&
+ canSaveGameStateCurrently()) {
+ _saveLoadSlot = event.kbd.keycode - '0';
+
+ // don't overwrite autosave (slot 0)
+ if (_saveLoadSlot == 0)
+ _saveLoadSlot = 10;
+
+ sprintf(_saveLoadName, "Quicksave %d", _saveLoadSlot);
+ _saveLoadFlag = 1;
+ _saveTemporaryState = false;
} else if (event.kbd.flags == Common::KBD_CTRL && event.kbd.keycode == 'f') {
+
+
+
+ } else if (event.kbd.flags == Common::KBD_CTRL && event.kbd.keycode == 'f') {
_fastMode ^= 1;
} else if (event.kbd.flags == Common::KBD_CTRL && event.kbd.keycode == 'g') {
_fastMode ^= 2;
Modified: scummvm/trunk/engines/scumm/saveload.cpp
===================================================================
--- scummvm/trunk/engines/scumm/saveload.cpp 2009-07-23 01:41:14 UTC (rev 42670)
+++ scummvm/trunk/engines/scumm/saveload.cpp 2009-07-23 05:48:20 UTC (rev 42671)
@@ -95,15 +95,14 @@
}
bool ScummEngine::canSaveGameStateCurrently() {
- // For v4+ games do not allow to save in room 0
- if (_game.version >= 4)
- return (_currentRoom != 0);
-
// FIXME: For now always allow loading in V0-V3 games
// TODO: Should we disallow saving in some more places,
// e.g. when a SAN movie is playing? Not sure whether the
// original EXE allowed this.
- return (VAR_MAINMENU_KEY == 0xFF || VAR(VAR_MAINMENU_KEY) != 0);
+
+ // SCUMM v4+ doesn't allow saving in room 0 or if
+ // VAR(VAR_MAINMENU_KEY) to set to zero.
+ return (VAR_MAINMENU_KEY == 0xFF || (VAR(VAR_MAINMENU_KEY) != 0 && _currentRoom != 0));
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list