[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