added saveload.h; moved some stuff out of scumm.h into saveload.h/.cpp (no need why other code has to see this)

svn-id: r4450
This commit is contained in:
Max Horn 2002-07-02 20:57:27 +00:00
parent 910afa3566
commit b827dadf6e
4 changed files with 93 additions and 77 deletions

View file

@ -26,6 +26,7 @@
#include "gameDetector.h" #include "gameDetector.h"
#include "dc.h" #include "dc.h"
#include "icon.h" #include "icon.h"
#include "saveload.h"
#include <ronin/zlib.h> #include <ronin/zlib.h>

View file

@ -26,6 +26,7 @@
#include "sound/imuse.h" #include "sound/imuse.h"
#include "actor.h" #include "actor.h"
#include "config-file.h" #include "config-file.h"
#include "saveload.h"
struct SaveGameHeader { struct SaveGameHeader {
uint32 type; uint32 type;
@ -34,6 +35,46 @@ struct SaveGameHeader {
char name[32]; char name[32];
}; };
struct SaveLoadEntry {
uint32 offs;
uint8 type;
uint8 size;
};
typedef int SerializerSaveReference(void *me, byte type, void *ref);
typedef void *SerializerLoadReference(void *me, byte type, int ref);
struct Serializer {
SerializerStream _saveLoadStream;
union {
SerializerSaveReference *_save_ref;
SerializerLoadReference *_load_ref;
void *_saveload_ref;
};
void *_ref_me;
bool _saveOrLoad;
void saveLoadBytes(void *b, int len);
void saveLoadArrayOf(void *b, int len, int datasize, byte filetype);
void saveLoadEntries(void *d, const SaveLoadEntry *sle);
void saveLoadArrayOf(void *b, int num, int datasize, const SaveLoadEntry *sle);
void saveUint32(uint32 d);
void saveWord(uint16 d);
void saveByte(byte b);
byte loadByte();
uint16 loadWord();
uint32 loadUint32();
bool isSaving() { return _saveOrLoad; }
bool checkEOFLoadStream();
};
// Support for "old" savegames (made with 2501 CVS build) // Support for "old" savegames (made with 2501 CVS build)
// Can be useful for other ports too :) // Can be useful for other ports too :)

51
saveload.h Normal file
View file

@ -0,0 +1,51 @@
/* ScummVM - Scumm Interpreter
* Copyright (C) 2002 The ScummVM project
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*
* $Header$
*
*/
#ifndef SAVELOAD_H
#define SAVELOAD_H
struct SerializerStream {
#ifdef NONSTANDARD_SAVE
void *context;
bool fopen(const char *filename, const char *mode);
void fclose();
int fread(void *buf, int size, int cnt);
int fwrite(void *buf, int size, int cnt);
#else
FILE *out;
FILE *fopen(const char *filename, const char *mode) {
return out = ::fopen(filename, mode);
}
void fclose() {
::fclose(out);
}
int fread(void *buf, int size, int cnt) {
return ::fread(buf, size, cnt, out);
}
int fwrite(void *buf, int size, int cnt) {
return ::fwrite(buf, size, cnt, out);
}
#endif
};
#endif

77
scumm.h
View file

@ -1154,7 +1154,6 @@ public:
int _maxBoxVertexHeap, _boxPathVertexHeapIndex, _boxMatrixItem; int _maxBoxVertexHeap, _boxPathVertexHeapIndex, _boxMatrixItem;
byte *_boxMatrixPtr4, *_boxMatrixPtr1, *_boxMatrixPtr3; byte *_boxMatrixPtr4, *_boxMatrixPtr1, *_boxMatrixPtr3;
// ScummPoint p[5]; /* Gate locations */
ScummPoint gateLoc[5]; /* Gate locations */ ScummPoint gateLoc[5]; /* Gate locations */
int gate1ax, gate1ay, gate1bx, gate1by, gate2ax, gate2ay, gate2bx, gate2by; int gate1ax, gate1ay, gate1bx, gate1by, gate2ax, gate2ay, gate2bx, gate2by;
uint16 _extraBoxFlags[65]; uint16 _extraBoxFlags[65];
@ -1683,74 +1682,6 @@ struct ScummDebugger {
void printScripts(); void printScripts();
}; };
struct SaveLoadEntry {
uint32 offs;
uint8 type;
uint8 size;
};
typedef int SerializerSaveReference(void *me, byte type, void *ref);
typedef void *SerializerLoadReference(void *me, byte type, int ref);
struct SerializerStream {
#ifdef NONSTANDARD_SAVE
void *context;
bool fopen(const char *filename, const char *mode);
void fclose();
int fread(void *buf, int size, int cnt);
int fwrite(void *buf, int size, int cnt);
#else
FILE *out;
FILE *fopen(const char *filename, const char *mode) {
return out = ::fopen(filename, mode);
}
void fclose() {
::fclose(out);
}
int fread(void *buf, int size, int cnt) {
return ::fread(buf, size, cnt, out);
}
int fwrite(void *buf, int size, int cnt) {
return ::fwrite(buf, size, cnt, out);
}
#endif
};
struct Serializer {
SerializerStream _saveLoadStream;
union {
SerializerSaveReference *_save_ref;
SerializerLoadReference *_load_ref;
void *_saveload_ref;
};
void *_ref_me;
bool _saveOrLoad;
void saveLoadBytes(void *b, int len);
void saveLoadArrayOf(void *b, int len, int datasize, byte filetype);
void saveLoadEntries(void *d, const SaveLoadEntry *sle);
void saveLoadArrayOf(void *b, int num, int datasize, const SaveLoadEntry *sle);
void saveUint32(uint32 d);
void saveWord(uint16 d);
void saveByte(byte b);
byte loadByte();
uint16 loadWord();
uint32 loadUint32();
bool isSaving() { return _saveOrLoad; }
bool checkEOFLoadStream();
};
extern const uint32 IMxx_tags[]; extern const uint32 IMxx_tags[];
extern const byte default_scale_table[768]; extern const byte default_scale_table[768];
extern uint16 _debugLevel; extern uint16 _debugLevel;
@ -1768,19 +1699,11 @@ void CDECL NORETURN error(const char *s, ...);
void CDECL warning(const char *s, ...); void CDECL warning(const char *s, ...);
void CDECL debug(int level, const char *s, ...); void CDECL debug(int level, const char *s, ...);
void checkHeap(); void checkHeap();
//void initGraphics(Scumm *s, bool fullScreen, unsigned int scaleFactor = 2);
//void updateScreen(Scumm *s);
//void drawMouse(int x, int y, int color, byte *mask, bool visible);
//void drawMouse(int x, int y, int w, int h, byte *buf, bool visible);
void blit(byte *dst, byte *src, int w, int h); void blit(byte *dst, byte *src, int w, int h);
byte *findResource(uint32 tag, byte *searchin, int index); byte *findResource(uint32 tag, byte *searchin, int index);
byte *findResourceSmall(uint32 tag, byte *searchin, int index); byte *findResourceSmall(uint32 tag, byte *searchin, int index);
byte *findResource(uint32 tag, byte *searchin); byte *findResource(uint32 tag, byte *searchin);
byte *findResourceSmall(uint32 tag, byte *searchin); byte *findResourceSmall(uint32 tag, byte *searchin);
//void playSfxSound(void *sound, uint32 size, uint rate);
//bool isSfxFinished();
//void waitForTimer(Scumm *s, int msec_delay);
//void setShakePos(Scumm *s, int shake_pos);
void setWindowName(Scumm *s); void setWindowName(Scumm *s);
uint16 newTag2Old(uint32 oldTag); uint16 newTag2Old(uint32 oldTag);