[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