diff options
| author | Travis Howell | 2012-08-12 15:00:58 +1000 | 
|---|---|---|
| committer | Travis Howell | 2012-08-12 15:00:58 +1000 | 
| commit | 61af435d8a870a0630b5dea2ecf69cd58fc95946 (patch) | |
| tree | 6c39122685964c21f0f96d5fd10e8bd559388064 /engines/agos/saveload.cpp | |
| parent | ab3b052c6f16843bda7bd1ded8a210d1192a389f (diff) | |
| download | scummvm-rg350-61af435d8a870a0630b5dea2ecf69cd58fc95946.tar.gz scummvm-rg350-61af435d8a870a0630b5dea2ecf69cd58fc95946.tar.bz2 scummvm-rg350-61af435d8a870a0630b5dea2ecf69cd58fc95946.zip  | |
AGOS: Improve the quick load/save code.
Diffstat (limited to 'engines/agos/saveload.cpp')
| -rw-r--r-- | engines/agos/saveload.cpp | 44 | 
1 files changed, 31 insertions, 13 deletions
diff --git a/engines/agos/saveload.cpp b/engines/agos/saveload.cpp index b3ec916b47..c6bca1a6e6 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;  | 
