[Scummvm-cvs-logs] CVS: residual engine.cpp,1.37,1.38 engine.h,1.10,1.11

Pawel Kolodziejski aquadran at users.sourceforge.net
Mon Nov 1 08:41:38 CET 2004


Update of /cvsroot/scummvm/residual
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv26642

Modified Files:
	engine.cpp engine.h 
Log Message:
added more save/load code

Index: engine.cpp
===================================================================
RCS file: /cvsroot/scummvm/residual/engine.cpp,v
retrieving revision 1.37
retrieving revision 1.38
diff -u -d -r1.37 -r1.38
--- engine.cpp	1 Nov 2004 09:47:19 -0000	1.37
+++ engine.cpp	1 Nov 2004 16:36:41 -0000	1.38
@@ -90,6 +90,13 @@
 			}
 		}
 
+		if (_savegameLoadRequest) {
+			savegameRestore();
+		}
+		if (_savegameSaveRequest) {
+			savegameSave();
+		}
+
 		if (_mode == ENGINE_MODE_SMUSH) {
 			if (g_smush->isPlaying()) {
 				movieTime_ = g_smush->getMovieTime();
@@ -198,6 +205,78 @@
 	}
 }
 
+void Engine::savegameGzread(void *data, int32 size) {
+	gzread(Engine::instance()->_savegameFileHandle, data, size);
+}
+
+void Engine::savegameGzwrite(void *data, int32 size) {
+	gzwrite(Engine::instance()->_savegameFileHandle, data, size);
+}
+
+void Engine::savegameRestore() {
+	_savegameLoadRequest = false;
+	char filename[200];
+	if (_savegameFileName == NULL) {
+		strcpy(filename, "grim.sav");
+	} else {
+		strcpy(filename, _savegameFileName);
+	}
+	_savegameFileHandle = gzopen(filename, "rb");
+	if (_savegameFileHandle == NULL) {
+		warning("savegameRestore() Error opening savegame file");
+		return;
+	}
+
+	//imuseStopAllSounds();
+	g_smush->stop();
+	//  free all resource
+	//  lock resources
+	//Chore_Restore(savegameGzread);
+	//Resource_Restore(savegameGzread);
+	//Text_Restore(savegameGzread);
+	//Room_Restore(savegameGzread);
+	//Actor_Restore(savegameGzread);
+	//Render_Restore(savegameGzread);
+	//Primitive_Restore(savegameGzread);
+	//Smush_Restore(savegameGzread);
+	//lua_Restore(savegameGzread);
+	//  unlock resources
+	gzclose(_savegameFileHandle);
+
+	lua_dofile("patch05.bin");
+}
+
+void Engine::savegameCallback(void *func) {
+}
+
+void Engine::savegameSave() {
+	_savegameSaveRequest = false;
+	char filename[200];
+	if (_savegameFileName == NULL) {
+		strcpy(filename, "grim.sav");
+	} else {
+		strcpy(filename, _savegameFileName);
+	}
+	_savegameFileHandle = gzopen(filename, "wb");
+	if (_savegameFileHandle == NULL) {
+		warning("savegameSave() Error creating savegame file");
+		return;
+	}
+
+	savegameCallback(savegameGzwrite);
+	//Chore_Save(savegameGzwrite);
+	//Resource_Save(savegameGzwrite);
+	//Text_Save(savegameGzwrite);
+	//Room_Save(savegameGzwrite);
+	//Actor_Save(savegameGzwrite);
+	//Render_Save(savegameGzwrite);
+	//Primitive_Save(savegameGzwrite);
+	//Smush_Save(savegameGzwrite);
+	//lua_Save(savegameGzwrite);
+
+	gzclose(_savegameFileHandle);
+}
+
 void Engine::setScene(const char *name) {
 	Block *b = ResourceLoader::instance()->getFileBlock(name);
 	if (b == NULL)

Index: engine.h
===================================================================
RCS file: /cvsroot/scummvm/residual/engine.h,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -d -r1.10 -r1.11
--- engine.h	1 Nov 2004 09:47:19 -0000	1.10
+++ engine.h	1 Nov 2004 16:36:41 -0000	1.11
@@ -23,6 +23,7 @@
 #include <cstdlib>
 #include <list>
 #include <SDL_keysym.h>
+#include <zlib.h>
 
 class Actor;
 
@@ -140,9 +141,16 @@
 		}
 	}
 
+	void savegameSave();
+	void savegameRestore();
+	static void savegameGzread(void *data, int32 size);
+	static void savegameGzwrite(void *data, int32 size);
+	void savegameCallback(void *func);
+
 	bool _savegameLoadRequest;
 	bool _savegameSaveRequest;
 	char *_savegameFileName;
+	gzFile _savegameFileHandle;
 
 private:
 	static Engine *instance_;





More information about the Scummvm-git-logs mailing list