mirror of
https://github.com/halpz/re3.git
synced 2025-07-25 15:22:47 +00:00
Revert "Redo ReadSaveBuf + common.h cleanup"
This reverts commit 2b67aba94c
.
This commit is contained in:
@ -9,7 +9,6 @@
|
||||
#endif
|
||||
#include "Population.h"
|
||||
#include "ProjectileInfo.h"
|
||||
#include "SaveBuf.h"
|
||||
#include "Streaming.h"
|
||||
#include "Wanted.h"
|
||||
#include "World.h"
|
||||
@ -131,19 +130,14 @@ CPools::MakeSureSlotInObjectPoolIsEmpty(int32 slot)
|
||||
void CPools::LoadVehiclePool(uint8* buf, uint32 size)
|
||||
{
|
||||
INITSAVEBUF
|
||||
int nNumCars, nNumBoats;
|
||||
ReadSaveBuf(&nNumCars, buf);
|
||||
ReadSaveBuf(&nNumBoats, buf);
|
||||
int nNumCars = ReadSaveBuf<int>(buf);
|
||||
int nNumBoats = ReadSaveBuf<int>(buf);
|
||||
for (int i = 0; i < nNumCars + nNumBoats; i++) {
|
||||
uint32 type;
|
||||
int16 model;
|
||||
int32 slot;
|
||||
|
||||
ReadSaveBuf(&type, buf);
|
||||
ReadSaveBuf(&model, buf);
|
||||
uint32 type = ReadSaveBuf<uint32>(buf);
|
||||
int16 model = ReadSaveBuf<int16>(buf);
|
||||
CStreaming::RequestModel(model, STREAMFLAGS_DEPENDENCY);
|
||||
CStreaming::LoadAllRequestedModels(false);
|
||||
ReadSaveBuf(&slot, buf);
|
||||
int32 slot = ReadSaveBuf<int32>(buf);
|
||||
CVehicle* pVehicle;
|
||||
#ifdef COMPATIBLE_SAVES
|
||||
if (type == VEHICLE_TYPE_BOAT)
|
||||
|
@ -16,7 +16,6 @@
|
||||
#include "Script.h"
|
||||
#include "TxdStore.h"
|
||||
#include "World.h"
|
||||
#include "SaveBuf.h"
|
||||
#include "Streaming.h"
|
||||
#include "SpecialFX.h"
|
||||
|
||||
@ -1056,7 +1055,7 @@ INITSAVEBUF
|
||||
CheckSaveHeader(buf, 'R', 'D', 'R', '\0', size - SAVE_HEADER_SIZE);
|
||||
|
||||
for (int i = 0; i < NUMRADARBLIPS; i++)
|
||||
ReadSaveBuf(&ms_RadarTrace[i], buf);
|
||||
ms_RadarTrace[i] = ReadSaveBuf<sRadarTrace>(buf);
|
||||
|
||||
VALIDATESAVEBUF(size);
|
||||
}
|
||||
|
@ -8,7 +8,6 @@
|
||||
#include "Text.h"
|
||||
#include "World.h"
|
||||
#include "Timer.h"
|
||||
#include "SaveBuf.h"
|
||||
|
||||
eLevelName CTheZones::m_CurrLevel;
|
||||
CZone *CTheZones::m_pPlayersZone;
|
||||
@ -697,18 +696,17 @@ void
|
||||
CTheZones::LoadAllZones(uint8 *buffer, uint32 size)
|
||||
{
|
||||
INITSAVEBUF
|
||||
int32 i;
|
||||
int i;
|
||||
|
||||
CheckSaveHeader(buffer, 'Z', 'N', 'S', '\0', size - SAVE_HEADER_SIZE);
|
||||
|
||||
ReadSaveBuf(&i, buffer);
|
||||
m_pPlayersZone = GetPointerForZoneIndex(i);
|
||||
ReadSaveBuf(&m_CurrLevel, buffer);
|
||||
ReadSaveBuf(&FindIndex, buffer);
|
||||
SkipSaveBuf(buffer, 2);
|
||||
m_pPlayersZone = GetPointerForZoneIndex(ReadSaveBuf<int32>(buffer));
|
||||
m_CurrLevel = ReadSaveBuf<eLevelName>(buffer);
|
||||
FindIndex = ReadSaveBuf<int16>(buffer);
|
||||
ReadSaveBuf<int16>(buffer);
|
||||
|
||||
for(i = 0; i < ARRAY_SIZE(ZoneArray); i++){
|
||||
ReadSaveBuf(&ZoneArray[i], buffer);
|
||||
ZoneArray[i] = ReadSaveBuf<CZone>(buffer);
|
||||
|
||||
ZoneArray[i].child = GetPointerForZoneIndex((uintptr)ZoneArray[i].child);
|
||||
ZoneArray[i].parent = GetPointerForZoneIndex((uintptr)ZoneArray[i].parent);
|
||||
@ -716,13 +714,13 @@ CTheZones::LoadAllZones(uint8 *buffer, uint32 size)
|
||||
}
|
||||
|
||||
for(i = 0; i < ARRAY_SIZE(ZoneInfoArray); i++)
|
||||
ReadSaveBuf(&ZoneInfoArray[i], buffer);
|
||||
ZoneInfoArray[i] = ReadSaveBuf<CZoneInfo>(buffer);
|
||||
|
||||
ReadSaveBuf(&TotalNumberOfZones, buffer);
|
||||
ReadSaveBuf(&TotalNumberOfZoneInfos, buffer);
|
||||
TotalNumberOfZones = ReadSaveBuf<int16>(buffer);
|
||||
TotalNumberOfZoneInfos = ReadSaveBuf<int16>(buffer);
|
||||
|
||||
for(i = 0; i < ARRAY_SIZE(MapZoneArray); i++){
|
||||
ReadSaveBuf(&MapZoneArray[i], buffer);
|
||||
MapZoneArray[i] = ReadSaveBuf<CZone>(buffer);
|
||||
|
||||
/*
|
||||
The call of GetPointerForZoneIndex is wrong, as it is
|
||||
@ -738,10 +736,10 @@ CTheZones::LoadAllZones(uint8 *buffer, uint32 size)
|
||||
}
|
||||
|
||||
for(i = 0; i < ARRAY_SIZE(AudioZoneArray); i++)
|
||||
ReadSaveBuf(&AudioZoneArray[i], buffer);
|
||||
AudioZoneArray[i] = ReadSaveBuf<int16>(buffer);
|
||||
|
||||
ReadSaveBuf(&TotalNumberOfMapZones, buffer);
|
||||
ReadSaveBuf(&NumberOfAudioZones, buffer);
|
||||
TotalNumberOfMapZones = ReadSaveBuf<uint16>(buffer);
|
||||
NumberOfAudioZones = ReadSaveBuf<uint16>(buffer);
|
||||
|
||||
VALIDATESAVEBUF(size)
|
||||
}
|
||||
|
@ -393,3 +393,173 @@ template<int s, int t> struct check_size {
|
||||
#define STR(x) STRINGIFY(x)
|
||||
#define CONCAT_(x,y) x##y
|
||||
#define CONCAT(x,y) CONCAT_(x,y)
|
||||
|
||||
#ifdef DEBUGMENU
|
||||
// Tweaking stuff for debugmenu
|
||||
#define TWEAKPATH ___tw___TWEAKPATH
|
||||
#define SETTWEAKPATH(path) static const char *___tw___TWEAKPATH = path;
|
||||
#define TWEAKFUNC(v) static CTweakFunc CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), TWEAKPATH);
|
||||
#define TWEAKFUNCN(v, name) static CTweakFunc CONCAT(___tw___tweak, __COUNTER__)(&v, name, TWEAKPATH);
|
||||
#define TWEAKBOOL(v) static CTweakBool CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), TWEAKPATH);
|
||||
#define TWEAKBOOLN(v, name) static CTweakBool CONCAT(___tw___tweak, __COUNTER__)(&v, name, TWEAKPATH);
|
||||
#define TWEAKINT32(v, lower, upper, step) static CTweakInt32 CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), lower, upper, step, TWEAKPATH);
|
||||
#define TWEAKINT32N(v, lower, upper, step, name) static CTweakInt32 CONCAT(___tw___tweak, __COUNTER__)(&v, name, lower, upper, step, TWEAKPATH);
|
||||
#define TWEAKUINT32(v, lower, upper, step) static CTweakUInt32 CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), lower, upper, step, TWEAKPATH);
|
||||
#define TWEAKUINT32N(v, lower, upper, step, name) static CTweakUInt32 CONCAT(___tw___tweak, __COUNTER__)(&v, name, lower, upper, step, TWEAKPATH);
|
||||
#define TWEAKINT16(v, lower, upper, step) static CTweakInt16 CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), lower, upper, step, TWEAKPATH);
|
||||
#define TWEAKINT16N(v, lower, upper, step, name) static CTweakInt16 CONCAT(___tw___tweak, __COUNTER__)(&v, name, lower, upper, step, TWEAKPATH);
|
||||
#define TWEAKUINT16(v, lower, upper, step) static CTweakUInt16 CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), lower, upper, step, TWEAKPATH);
|
||||
#define TWEAKUINT16N(v, lower, upper, step, name) static CTweakUInt16 CONCAT(___tw___tweak, __COUNTER__)(&v, name, lower, upper, step, TWEAKPATH);
|
||||
#define TWEAKINT8(v, lower, upper, step) static CTweakInt8 CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), lower, upper, step, TWEAKPATH);
|
||||
#define TWEAKINT8N(v, lower, upper, step, name) static CTweakInt8 CONCAT(___tw___tweak, __COUNTER__)(&v, name, lower, upper, step, TWEAKPATH);
|
||||
#define TWEAKUINT8(v, lower, upper, step) static CTweakUInt8 CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), lower, upper, step, TWEAKPATH);
|
||||
#define TWEAKUINT8N(v, lower, upper, step, name) static CTweakUInt8 CONCAT(___tw___tweak, __COUNTER__)(&v, name, lower, upper, step, TWEAKPATH);
|
||||
#define TWEAKFLOAT(v, lower, upper, step) static CTweakFloat CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), lower, upper, step, TWEAKPATH);
|
||||
#define TWEAKFLOATN(v, lower, upper, step, name) static CTweakFloat CONCAT(___tw___tweak, __COUNTER__)(&v, name, lower, upper, step, TWEAKPATH);
|
||||
#define TWEAKSWITCH(v, lower, upper, str, f) static CTweakSwitch CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), lower, upper, str, f, TWEAKPATH);
|
||||
#define TWEAKSWITCHN(v, lower, upper, str, f, name) static CTweakSwitch CONCAT(___tw___tweak, __COUNTER__)(&v, name, lower, upper, str, f, TWEAKPATH);
|
||||
|
||||
// interface
|
||||
class CTweakVar
|
||||
{
|
||||
public:
|
||||
virtual void AddDBG(const char *path) = 0;
|
||||
};
|
||||
|
||||
class CTweakVars
|
||||
{
|
||||
public:
|
||||
static void Add(CTweakVar *var);
|
||||
static void AddDBG(const char *path);
|
||||
};
|
||||
|
||||
class CTweakFunc : public CTweakVar
|
||||
{
|
||||
const char *m_pPath, *m_pVarName;
|
||||
void (*m_pFunc)();
|
||||
public:
|
||||
CTweakFunc(void (*pFunc)(), const char *strName, const char *strPath) :
|
||||
m_pPath(strPath), m_pVarName(strName), m_pFunc(pFunc)
|
||||
{
|
||||
CTweakVars::Add(this);
|
||||
}
|
||||
|
||||
void AddDBG(const char *path);
|
||||
};
|
||||
|
||||
class CTweakBool : public CTweakVar
|
||||
{
|
||||
const char *m_pPath, *m_pVarName;
|
||||
bool *m_pBoolVar;
|
||||
public:
|
||||
CTweakBool(bool *pBool, const char *strName, const char *strPath) :
|
||||
m_pPath(strPath), m_pVarName(strName), m_pBoolVar(pBool)
|
||||
{
|
||||
CTweakVars::Add(this);
|
||||
}
|
||||
|
||||
void AddDBG(const char *path);
|
||||
};
|
||||
|
||||
class CTweakSwitch : public CTweakVar
|
||||
{
|
||||
const char *m_pPath, *m_pVarName;
|
||||
void *m_pIntVar;
|
||||
int32 m_nMin, m_nMax;
|
||||
const char **m_aStr;
|
||||
void (*m_pFunc)();
|
||||
public:
|
||||
CTweakSwitch(void *pInt, const char *strName, int32 nMin, int32 nMax, const char **aStr,
|
||||
void (*pFunc)(), const char *strPath)
|
||||
: m_pPath(strPath), m_pVarName(strName), m_pIntVar(pInt), m_nMin(nMin), m_nMax(nMax),
|
||||
m_aStr(aStr)
|
||||
{
|
||||
CTweakVars::Add(this);
|
||||
}
|
||||
|
||||
void AddDBG(const char *path);
|
||||
};
|
||||
|
||||
#define _TWEEKCLASS(name, type) \
|
||||
class name : public CTweakVar \
|
||||
{ \
|
||||
public: \
|
||||
const char *m_pPath, *m_pVarName; \
|
||||
type *m_pIntVar, m_nLoawerBound, m_nUpperBound, m_nStep; \
|
||||
\
|
||||
name(type *pInt, const char *strName, type nLower, type nUpper, type nStep, \
|
||||
const char *strPath) \
|
||||
: m_pPath(strPath), m_pVarName(strName), m_pIntVar(pInt), \
|
||||
m_nLoawerBound(nLower), m_nUpperBound(nUpper), m_nStep(nStep) \
|
||||
\
|
||||
{ \
|
||||
CTweakVars::Add(this); \
|
||||
} \
|
||||
\
|
||||
void AddDBG(const char *path); \
|
||||
};
|
||||
|
||||
_TWEEKCLASS(CTweakInt8, int8);
|
||||
_TWEEKCLASS(CTweakUInt8, uint8);
|
||||
_TWEEKCLASS(CTweakInt16, int16);
|
||||
_TWEEKCLASS(CTweakUInt16, uint16);
|
||||
_TWEEKCLASS(CTweakInt32, int32);
|
||||
_TWEEKCLASS(CTweakUInt32, uint32);
|
||||
_TWEEKCLASS(CTweakFloat, float);
|
||||
|
||||
#undef _TWEEKCLASS
|
||||
#endif
|
||||
|
||||
#ifdef VALIDATE_SAVE_SIZE
|
||||
extern int32 _saveBufCount;
|
||||
#define INITSAVEBUF _saveBufCount = 0;
|
||||
#define VALIDATESAVEBUF(b) assert(_saveBufCount == b);
|
||||
#else
|
||||
#define INITSAVEBUF
|
||||
#define VALIDATESAVEBUF(b)
|
||||
#endif
|
||||
|
||||
inline void SkipSaveBuf(uint8 *&buf, int32 skip)
|
||||
{
|
||||
buf += skip;
|
||||
#ifdef VALIDATE_SAVE_SIZE
|
||||
_saveBufCount += skip;
|
||||
#endif
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
inline const T ReadSaveBuf(uint8 *&buf)
|
||||
{
|
||||
T &value = *(T*)buf;
|
||||
SkipSaveBuf(buf, sizeof(T));
|
||||
return value;
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
inline T *WriteSaveBuf(uint8 *&buf, const T &value)
|
||||
{
|
||||
T *p = (T*)buf;
|
||||
*p = value;
|
||||
SkipSaveBuf(buf, sizeof(T));
|
||||
return p;
|
||||
}
|
||||
|
||||
|
||||
#define SAVE_HEADER_SIZE (4*sizeof(char)+sizeof(uint32))
|
||||
|
||||
#define WriteSaveHeader(buf,a,b,c,d,size) \
|
||||
WriteSaveBuf(buf, a);\
|
||||
WriteSaveBuf(buf, b);\
|
||||
WriteSaveBuf(buf, c);\
|
||||
WriteSaveBuf(buf, d);\
|
||||
WriteSaveBuf<uint32>(buf, size);
|
||||
|
||||
#define CheckSaveHeader(buf,a,b,c,d,size)\
|
||||
assert(ReadSaveBuf<char>(buf) == a);\
|
||||
assert(ReadSaveBuf<char>(buf) == b);\
|
||||
assert(ReadSaveBuf<char>(buf) == c);\
|
||||
assert(ReadSaveBuf<char>(buf) == d);\
|
||||
assert(ReadSaveBuf<uint32>(buf) == size);
|
||||
|
||||
|
||||
void cprintf(char*, ...);
|
||||
|
Reference in New Issue
Block a user