aboutsummaryrefslogtreecommitdiff
path: root/engines/xeen/saves.h
diff options
context:
space:
mode:
Diffstat (limited to 'engines/xeen/saves.h')
-rw-r--r--engines/xeen/saves.h74
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