diff options
-rw-r--r-- | engines/agos/agos.h | 3 | ||||
-rw-r--r-- | engines/agos/saveload.cpp | 21 |
2 files changed, 19 insertions, 5 deletions
diff --git a/engines/agos/agos.h b/engines/agos/agos.h index d9f982a0fa..65f8dd1420 100644 --- a/engines/agos/agos.h +++ b/engines/agos/agos.h @@ -1265,7 +1265,7 @@ protected: virtual void doOutput(const byte *src, uint len); void clsCheck(WindowBlock *window); - void quickLoadOrSave(); + virtual void quickLoadOrSave(); byte *vc10_uncompressFlip(const byte *src, uint16 w, uint16 h); byte *vc10_flip(const byte *src, uint16 w, uint16 h); @@ -2060,6 +2060,7 @@ protected: void windowBackSpace(WindowBlock *window); virtual char *genSaveName(int slot); + virtual void quickLoadOrSave(); }; class AGOSEngine_FeebleDemo : public AGOSEngine_Feeble { diff --git a/engines/agos/saveload.cpp b/engines/agos/saveload.cpp index 4fbde09ff8..b3ec916b47 100644 --- a/engines/agos/saveload.cpp +++ b/engines/agos/saveload.cpp @@ -136,12 +136,25 @@ char *AGOSEngine::genSaveName(int slot) { return buf; } +#ifdef ENABLE_AGOS2 +void AGOSEngine_Feeble::quickLoadOrSave() { + // Quick loading and saving isn't possible in The Feeble Files or Puzzle Pack. +} +#endif + void AGOSEngine::quickLoadOrSave() { - // Quick load & save is only supported complete version of Simon the Sorcerer 1/2 - if (getGameType() == GType_PP || getGameType() == GType_FF || - (getFeatures() & GF_DEMO)) { + // 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; |