[Scummvm-cvs-logs] SF.net SVN: scummvm:[55528] scummvm/trunk/engines/gob/save
drmccoy at users.sourceforge.net
drmccoy at users.sourceforge.net
Tue Jan 25 13:14:05 CET 2011
Revision: 55528
http://scummvm.svn.sourceforge.net/scummvm/?rev=55528&view=rev
Author: drmccoy
Date: 2011-01-25 12:14:05 +0000 (Tue, 25 Jan 2011)
Log Message:
-----------
GOB: Add a FakeFileHandler
For temporarily storing save "files"
Modified Paths:
--------------
scummvm/trunk/engines/gob/save/savehandler.cpp
scummvm/trunk/engines/gob/save/savehandler.h
Modified: scummvm/trunk/engines/gob/save/savehandler.cpp
===================================================================
--- scummvm/trunk/engines/gob/save/savehandler.cpp 2011-01-25 12:13:42 UTC (rev 55527)
+++ scummvm/trunk/engines/gob/save/savehandler.cpp 2011-01-25 12:14:05 UTC (rev 55528)
@@ -489,4 +489,48 @@
return writer.writePart(0, &vars);
}
+
+FakeFileHandler::FakeFileHandler(GobEngine *vm) : SaveHandler(vm) {
+}
+
+FakeFileHandler::~FakeFileHandler() {
+}
+
+int32 FakeFileHandler::getSize() {
+ if (_data.empty())
+ return -1;
+
+ return _data.size();
+}
+
+bool FakeFileHandler::load(int16 dataVar, int32 size, int32 offset) {
+ if (size <= 0)
+ return false;
+
+ if ((uint32)(offset + size) > _data.size())
+ return false;
+
+ _vm->_inter->_variables->copyFrom(dataVar, &_data[0] + offset, size);
+
+ return true;
+}
+
+bool FakeFileHandler::save(int16 dataVar, int32 size, int32 offset) {
+ if (size <= 0)
+ return false;
+
+ if ((uint32)(offset + size) > _data.size())
+ _data.resize(offset + size);
+
+ _vm->_inter->_variables->copyTo(dataVar, &_data[0] + offset, size);
+
+ return true;
+}
+
+bool FakeFileHandler::deleteFile() {
+ _data.clear();
+
+ return true;
+}
+
} // End of namespace Gob
Modified: scummvm/trunk/engines/gob/save/savehandler.h
===================================================================
--- scummvm/trunk/engines/gob/save/savehandler.h 2011-01-25 12:13:42 UTC (rev 55527)
+++ scummvm/trunk/engines/gob/save/savehandler.h 2011-01-25 12:14:05 UTC (rev 55528)
@@ -27,8 +27,10 @@
#define GOB_SAVE_SAVEHANDLER_H
#include "common/savefile.h"
-#include "engines/gob/video.h" // for SurfacePtr
+#include "common/array.h"
+#include "engines/gob/video.h" // for SurfacePtr
+
namespace Gob {
class GobEngine;
@@ -180,6 +182,22 @@
SavePartVars *_notes;
};
+/** A handler that behaves like a file but keeps the contents in memory. */
+class FakeFileHandler : public SaveHandler {
+public:
+ FakeFileHandler(GobEngine *vm);
+ ~FakeFileHandler();
+
+ int32 getSize();
+ bool load(int16 dataVar, int32 size, int32 offset);
+ bool save(int16 dataVar, int32 size, int32 offset);
+
+ bool deleteFile();
+
+private:
+ Common::Array<byte> _data;
+};
+
} // End of namespace Gob
#endif // GOB_SAVE_SAVEHANDLER_H
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list