[Scummvm-cvs-logs] scummvm master -> 61af435d8a870a0630b5dea2ecf69cd58fc95946

Kirben kirben at optusnet.com.au
Sun Aug 12 07:01:50 CEST 2012


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
61af435d8a AGOS: Improve the quick load/save code.


Commit: 61af435d8a870a0630b5dea2ecf69cd58fc95946
    https://github.com/scummvm/scummvm/commit/61af435d8a870a0630b5dea2ecf69cd58fc95946
Author: Travis Howell (kirben at optusnet.com.au)
Date: 2012-08-11T22:00:58-07:00

Commit Message:
AGOS: Improve the quick load/save code.

Changed paths:
    engines/agos/event.cpp
    engines/agos/saveload.cpp



diff --git a/engines/agos/event.cpp b/engines/agos/event.cpp
index ed26b96..cc1c40c 100644
--- a/engines/agos/event.cpp
+++ b/engines/agos/event.cpp
@@ -467,11 +467,7 @@ void AGOSEngine::delay(uint amount) {
 					memset(_saveLoadName, 0, sizeof(_saveLoadName));
 					sprintf(_saveLoadName, "Quick %d", _saveLoadSlot);
 					_saveLoadType = (event.kbd.hasFlags(Common::KBD_ALT)) ? 1 : 2;
-
-					// We should only allow a load or save when it was possible in original
-					// This stops load/save during copy protection, conversations and cut scenes
-					if (!_mouseHideCount && !_showPreposition)
-						quickLoadOrSave();
+					quickLoadOrSave();
 				} else if (event.kbd.hasFlags(Common::KBD_CTRL)) {
 					if (event.kbd.keycode == Common::KEYCODE_a) {
 						GUI::Dialog *_aboutDialog;
diff --git a/engines/agos/saveload.cpp b/engines/agos/saveload.cpp
index b3ec916..c6bca1a 100644
--- a/engines/agos/saveload.cpp
+++ b/engines/agos/saveload.cpp
@@ -142,23 +142,41 @@ void AGOSEngine_Feeble::quickLoadOrSave() {
 }
 #endif
 
+// The function uses segments of code from the original game scripts 
+// to allow quick loading and saving, but isn't perfect.
+//
+// Unfortuntely this allows loading and saving in locations,
+// which aren't supported, and will not restore correctly:
+// Various locations in Elvira 1/2 and Waxworks where saving
+// was disabled
 void AGOSEngine::quickLoadOrSave() {
-	// The function uses segments of code from the original game scripts 
-	// to allow quick loading and saving, but isn't perfect.
-	//
-	// Unfortuntely this allows loading and saving in locations,
-	// which aren't supported, and will not restore correctly:
-	// Any overhead maps in Simon the Sorcerer 2
-	// Various locations in Elvira 1/2 and Waxworks where saving
-	// was disabled
-
-	// The floppy disk demo of Simon the Sorcerer 1 doesn't work.
-	if (getFeatures() & GF_DEMO)
-		return;
-
 	bool success;
 	Common::String buf;
 
+	// Disable loading and saving when it was not possible in the original:
+	// In overhead maps areas in Simon the Sorcerer 2
+	// In the floppy disk demo of Simon the Sorcerer 1
+	// In copy protection, conversations and cut scenes
+	if ((getGameType() == GType_SIMON2 && _boxStarHeight == 200) ||
+		(getGameType() == GType_SIMON1 && (getFeatures() & GF_DEMO)) ||
+		_mouseHideCount || _showPreposition) {
+		buf = Common::String::format("Quick load or save game isn't supported in this location");
+		GUI::MessageDialog dialog(buf, "OK");
+		dialog.runModal();
+		return;
+	}
+
+	// Check if Simon is walking, and stop when required
+	if (getGameType() == GType_SIMON1 && getBitFlag(11)) {
+		vcStopAnimation(11, 1122);
+		animate(4, 11, 1122, 0, 0, 2);
+		waitForSync(1122);
+	} else if (getGameType() == GType_SIMON2 && getBitFlag(11)) {
+		vcStopAnimation(11, 232);
+		animate(4, 11, 232, 0, 0, 2);
+		waitForSync(1122);
+	}
+
 	char *filename = genSaveName(_saveLoadSlot);
 	if (_saveLoadType == 2) {
 		Subroutine *sub;






More information about the Scummvm-git-logs mailing list