diff options
Diffstat (limited to 'engines/xeen/saves.h')
-rw-r--r-- | engines/xeen/saves.h | 74 |
1 files changed, 36 insertions, 38 deletions
diff --git a/engines/xeen/saves.h b/engines/xeen/saves.h index 9c161c838c..2711cc7f2c 100644 --- a/engines/xeen/saves.h +++ b/engines/xeen/saves.h @@ -24,11 +24,11 @@ #define XEEN_SAVES_H #include "common/scummsys.h" -#include "common/memstream.h" #include "common/savefile.h" +#include "common/serializer.h" +#include "common/str.h" #include "graphics/surface.h" #include "xeen/party.h" -#include "xeen/files.h" namespace Xeen { @@ -41,59 +41,57 @@ struct XeenSavegameHeader { int _totalFrames; }; -class XeenEngine; -class SavesManager; - -class OutFile : public Common::WriteStream { +class SavesManager { private: - XeenEngine *_vm; - Common::String _filename; - Common::MemoryWriteStreamDynamic _backingStream; -public: - OutFile(XeenEngine *vm, const Common::String filename); - - void finalize(); - - uint32 write(const void *dataPtr, uint32 dataSize) override; - - int32 pos() const override; -}; - -class SavesManager: public BaseCCArchive { - friend class OutFile; + Common::String _targetName; private: - XeenEngine *_vm; - Party &_party; - byte *_data; - Common::HashMap<uint16, Common::MemoryWriteStreamDynamic *> _newData; + /** + * Synchronize savegame data + */ + void synchronize(Common::Serializer &s); - void load(Common::SeekableReadStream *stream); -public: /** - * Synchronizes a boolean array as a bitfield set + * Support method that generates a savegame name + * @param slot Slot number */ - static void syncBitFlags(Common::Serializer &s, bool *startP, bool *endP); + Common::String generateSaveName(int slot); + + /** + * Initializes a new savegame + */ + void reset(); public: bool _wonWorld; bool _wonDarkSide; public: - SavesManager(XeenEngine *vm, Party &party); - + SavesManager(const Common::String &targetName); ~SavesManager(); - /** - * Sets up the dynamic data for the game for a new game - */ - void reset(); - void readCharFile(); void writeCharFile(); void saveChars(); - // Archive implementation - virtual Common::SeekableReadStream *createReadStreamForMember(const Common::String &name) const; + /** + * Read in a savegame header + */ + static bool readSavegameHeader(Common::InSaveFile *in, XeenSavegameHeader &header); + + /** + * Write out a savegame header + */ + void writeSavegameHeader(Common::OutSaveFile *out, XeenSavegameHeader &header); + + /** + * Load a savegame + */ + Common::Error loadGameState(int slot); + + /** + * Save the game + */ + Common::Error saveGameState(int slot, const Common::String &desc); }; } // End of namespace Xeen |