aboutsummaryrefslogtreecommitdiff
path: root/engines/xeen/files.h
diff options
context:
space:
mode:
authorPaul Gilbert2015-01-11 16:01:10 -0500
committerPaul Gilbert2015-01-11 16:01:10 -0500
commitedccbe63f24e26944dcd7cd3da59b6842cb36b46 (patch)
tree090430845d07b3ba3d55c4c8a6e42565c8f40f50 /engines/xeen/files.h
parent3b1edcdf36fc7a207a70cb28e7dcf7879ea9b7e5 (diff)
downloadscummvm-rg350-edccbe63f24e26944dcd7cd3da59b6842cb36b46.tar.gz
scummvm-rg350-edccbe63f24e26944dcd7cd3da59b6842cb36b46.tar.bz2
scummvm-rg350-edccbe63f24e26944dcd7cd3da59b6842cb36b46.zip
XEEN: Added saving of maze monster/object data
Diffstat (limited to 'engines/xeen/files.h')
-rw-r--r--engines/xeen/files.h15
1 files changed, 15 insertions, 0 deletions
diff --git a/engines/xeen/files.h b/engines/xeen/files.h
index 7c0817a850..a8343c1653 100644
--- a/engines/xeen/files.h
+++ b/engines/xeen/files.h
@@ -34,6 +34,19 @@ namespace Xeen {
class XeenEngine;
+#define SYNC_AS(SUFFIX,STREAM,TYPE,SIZE) \
+ template<typename T> \
+ void syncAs ## SUFFIX(T &val, Version minVersion = 0, Version maxVersion = kLastVersion) { \
+ if (_version < minVersion || _version > maxVersion) \
+ return; \
+ if (_loadStream) \
+ val = static_cast<TYPE>(_loadStream->read ## STREAM()); \
+ else { \
+ TYPE tmp = (TYPE)val; \
+ _saveStream->write ## STREAM(tmp); \
+ } \
+ _bytesSynced += SIZE; \
+ }
/*
* Main resource manager
*/
@@ -69,6 +82,8 @@ public:
XeenSerializer(Common::SeekableReadStream *in, Common::WriteStream *out) :
Common::Serializer(in, out), _in(in) {}
+ SYNC_AS(Sint8, Byte, int8, 1)
+
bool finished() const { return _in != nullptr && _in->pos() >= _in->size(); }
};