[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