aboutsummaryrefslogtreecommitdiff
path: root/engines/zvision/core/save_manager.h
diff options
context:
space:
mode:
Diffstat (limited to 'engines/zvision/core/save_manager.h')
-rw-r--r--engines/zvision/core/save_manager.h20
1 files changed, 17 insertions, 3 deletions
diff --git a/engines/zvision/core/save_manager.h b/engines/zvision/core/save_manager.h
index 43fb0c0faf..5cd61c7aa9 100644
--- a/engines/zvision/core/save_manager.h
+++ b/engines/zvision/core/save_manager.h
@@ -24,6 +24,7 @@
#define ZVISION_SAVE_MANAGER_H
#include "common/savefile.h"
+#include "common/memstream.h"
namespace Common {
class String;
@@ -47,16 +48,22 @@ struct SaveGameHeader {
class SaveManager {
public:
- SaveManager(ZVision *engine) : _engine(engine) {}
+ SaveManager(ZVision *engine) : _engine(engine), _tempSave(NULL) {}
+ ~SaveManager() {
+ flushSaveBuffer();
+ }
private:
ZVision *_engine;
static const uint32 SAVEGAME_ID;
enum {
+ SAVE_ORIGINAL = 0,
SAVE_VERSION = 1
};
+ Common::MemoryWriteStreamDynamic *_tempSave;
+
public:
/**
* Called every room change. Saves the state of the room just before
@@ -73,6 +80,8 @@ public:
* @param saveName The internal name for this save. This is NOT the name of the actual save file.
*/
void saveGame(uint slot, const Common::String &saveName);
+ void saveGame(uint slot, const Common::String &saveName, Common::MemoryWriteStreamDynamic *stream);
+ void saveGameBuffered(uint slot, const Common::String &saveName);
/**
* Loads the state data from the save file that slot references. Uses
* ZVision::generateSaveFileName(slot) to get the save file name.
@@ -80,10 +89,15 @@ public:
* @param slot The save slot to load. Must be [1, 20]
*/
Common::Error loadGame(uint slot);
+ Common::Error loadGame(const Common::String &saveName);
+
+ Common::SeekableReadStream *getSlotFile(uint slot);
+ bool readSaveGameHeader(Common::SeekableReadStream *in, SaveGameHeader &header);
+ void prepareSaveBuffer();
+ void flushSaveBuffer();
private:
- void writeSaveGameData(Common::OutSaveFile *file);
- bool readSaveGameHeader(Common::InSaveFile *in, SaveGameHeader &header);
+ void writeSaveGameHeader(Common::OutSaveFile *file, const Common::String &saveName);
};
} // End of namespace ZVision