[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