* remove unused function pointer fileLoad from struct RES_TYPE in lib/framework/frameresource.h (there is code that sets this member, but none that uses it)
* remove function resAddFileLoad from lib/framework/frameresource.[ch] which was used to set RES_TYPE.fileLoad * remove only call to resAddFileLoad from src/data.c, function dataInitLoadFuncs * remove now completely unused function dataSaveGameLoad from src/data.c * modify function dataInitLoadFuncs in src/data.c: * modify the struct definition for the list of resource types * modify the list accordingly * remove the NULL-item from the end of the list * modify list iteration code to use a start and end iterator (end being a pointer just past the last valid list-item, begin being the first valid one) git-svn-id: svn+ssh://svn.gna.org/svn/warzone/trunk@1394 4a71c877-e1ca-e34f-864e-861f7616d084master
parent
0af269415c
commit
10964ceca2
|
@ -144,7 +144,7 @@ BOOL resLoad(const char *pResFile, SDWORD blockID,
|
||||||
|
|
||||||
|
|
||||||
/* Allocate a RES_TYPE structure */
|
/* Allocate a RES_TYPE structure */
|
||||||
static BOOL resAlloc(const char *pType, RES_TYPE **ppsFunc)
|
static RES_TYPE* resAlloc(const char *pType)
|
||||||
{
|
{
|
||||||
RES_TYPE *psT;
|
RES_TYPE *psT;
|
||||||
|
|
||||||
|
@ -163,7 +163,7 @@ static BOOL resAlloc(const char *pType, RES_TYPE **ppsFunc)
|
||||||
{
|
{
|
||||||
debug( LOG_ERROR, "resAlloc: Out of memory" );
|
debug( LOG_ERROR, "resAlloc: Out of memory" );
|
||||||
abort();
|
abort();
|
||||||
return FALSE;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
// setup the structure
|
// setup the structure
|
||||||
|
@ -174,9 +174,7 @@ static BOOL resAlloc(const char *pType, RES_TYPE **ppsFunc)
|
||||||
|
|
||||||
psT->psRes = NULL;
|
psT->psRes = NULL;
|
||||||
|
|
||||||
*ppsFunc = psT;
|
return psT;
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -185,15 +183,14 @@ static BOOL resAlloc(const char *pType, RES_TYPE **ppsFunc)
|
||||||
BOOL resAddBufferLoad(const char *pType, RES_BUFFERLOAD buffLoad,
|
BOOL resAddBufferLoad(const char *pType, RES_BUFFERLOAD buffLoad,
|
||||||
RES_FREE release)
|
RES_FREE release)
|
||||||
{
|
{
|
||||||
RES_TYPE *psT;
|
RES_TYPE *psT = resAlloc(pType);
|
||||||
|
|
||||||
if (!resAlloc(pType, &psT))
|
if (!psT)
|
||||||
{
|
{
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
psT->buffLoad = buffLoad;
|
psT->buffLoad = buffLoad;
|
||||||
psT->fileLoad = NULL;
|
|
||||||
psT->release = release;
|
psT->release = release;
|
||||||
|
|
||||||
psT->psNext = psResTypes;
|
psT->psNext = psResTypes;
|
||||||
|
@ -202,30 +199,6 @@ BOOL resAddBufferLoad(const char *pType, RES_BUFFERLOAD buffLoad,
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Add a file name load function for a file type */
|
|
||||||
BOOL resAddFileLoad(const char *pType, RES_FILELOAD fileLoad,
|
|
||||||
RES_FREE release)
|
|
||||||
{
|
|
||||||
RES_TYPE *psT;
|
|
||||||
|
|
||||||
if (!resAlloc(pType, &psT))
|
|
||||||
{
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
psT->buffLoad = NULL;
|
|
||||||
psT->fileLoad = fileLoad;
|
|
||||||
psT->release = release;
|
|
||||||
|
|
||||||
psT->psNext = psResTypes;
|
|
||||||
psResTypes = psT;
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Make a string lower case
|
// Make a string lower case
|
||||||
void resToLower(char *pStr)
|
void resToLower(char *pStr)
|
||||||
{
|
{
|
||||||
|
@ -519,7 +492,7 @@ void *resGetDataFromHash(const char *pType, UDWORD HashedID)
|
||||||
|
|
||||||
if (psRes == NULL)
|
if (psRes == NULL)
|
||||||
{
|
{
|
||||||
ASSERT( FALSE, "resGetDataFromHash: Unknown ID:" );
|
ASSERT( psRes != NULL, "resGetDataFromHash: Unknown ID:" );
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -32,8 +32,6 @@
|
||||||
|
|
||||||
/* Function pointer for a function that loads from a memory buffer */
|
/* Function pointer for a function that loads from a memory buffer */
|
||||||
typedef BOOL (*RES_BUFFERLOAD)(char *pBuffer, UDWORD size, void **pData);
|
typedef BOOL (*RES_BUFFERLOAD)(char *pBuffer, UDWORD size, void **pData);
|
||||||
/* Function pointer for a function that loads from a filename */
|
|
||||||
typedef BOOL (*RES_FILELOAD)(char *pFile, void **pData);
|
|
||||||
|
|
||||||
/* Function pointer for releasing a resource loaded by the above functions */
|
/* Function pointer for releasing a resource loaded by the above functions */
|
||||||
typedef void (*RES_FREE)(void *pData);
|
typedef void (*RES_FREE)(void *pData);
|
||||||
|
@ -68,7 +66,6 @@ typedef struct _res_type
|
||||||
RES_DATA *psRes; // Linked list of data items of this type
|
RES_DATA *psRes; // Linked list of data items of this type
|
||||||
UDWORD HashedType; // hashed version of the name of the id - // a null hashedtype indicates end of list
|
UDWORD HashedType; // hashed version of the name of the id - // a null hashedtype indicates end of list
|
||||||
|
|
||||||
RES_FILELOAD fileLoad; // This isn't really used any more ?
|
|
||||||
struct _res_type *psNext;
|
struct _res_type *psNext;
|
||||||
} RES_TYPE;
|
} RES_TYPE;
|
||||||
|
|
||||||
|
@ -111,10 +108,6 @@ extern void resReleaseAllData(void);
|
||||||
extern BOOL resAddBufferLoad(const char *pType, RES_BUFFERLOAD buffLoad,
|
extern BOOL resAddBufferLoad(const char *pType, RES_BUFFERLOAD buffLoad,
|
||||||
RES_FREE release);
|
RES_FREE release);
|
||||||
|
|
||||||
/* Add a file name load and release function for a file type */
|
|
||||||
extern BOOL resAddFileLoad(const char *pType, RES_FILELOAD fileLoad,
|
|
||||||
RES_FREE release);
|
|
||||||
|
|
||||||
/* Call the load function for a file */
|
/* Call the load function for a file */
|
||||||
extern BOOL resLoadFile(char *pType, char *pFile);
|
extern BOOL resLoadFile(char *pType, char *pFile);
|
||||||
|
|
||||||
|
|
157
src/data.c
157
src/data.c
|
@ -1132,130 +1132,85 @@ static BOOL dataScriptLoadVals(char *pBuffer, UDWORD size, void **ppData)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static BOOL dataSaveGameLoad(char *pFile, void **ppData)
|
|
||||||
{
|
|
||||||
if (!stageTwoInitialise())
|
|
||||||
{
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!loadGameInit(pFile))
|
|
||||||
{
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
if (!loadGame(pFile, !KEEPOBJECTS, FREEMEM,TRUE))
|
|
||||||
{
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!newMapInitialise())
|
|
||||||
{
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
//not interested in this value
|
|
||||||
*ppData = NULL;
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// New reduced resource type ... specially for PSX
|
// New reduced resource type ... specially for PSX
|
||||||
// These are statically defined in data.c
|
// These are statically defined in data.c
|
||||||
// this is also defined in frameresource.c - needs moving to a .h file
|
// this is also defined in frameresource.c - needs moving to a .h file
|
||||||
|
// This basically matches the argument list of resAddBufferLoad in frameresource.c
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
const char *aType; // points to the string defining the type (e.g. SCRIPT) - NULL indicates end of list
|
const char *aType; // points to the string defining the type (e.g. SCRIPT) - NULL indicates end of list
|
||||||
RES_BUFFERLOAD buffLoad; // routine to process the data for this type
|
RES_BUFFERLOAD buffLoad; // routine to process the data for this type
|
||||||
RES_FREE release; // routine to release the data (NULL indicates none)
|
RES_FREE release; // routine to release the data (NULL indicates none)
|
||||||
void *ResourceData; // Linked list of data - set to null initially
|
|
||||||
UDWORD HashedType; // hashed version of aType
|
|
||||||
} RES_TYPE_MIN;
|
} RES_TYPE_MIN;
|
||||||
|
|
||||||
|
static const RES_TYPE_MIN ResourceTypes[] =
|
||||||
|
|
||||||
|
|
||||||
static RES_TYPE_MIN ResourceTypes[]=
|
|
||||||
{
|
{
|
||||||
{"SWEAPON", bufferSWEAPONLoad, NULL, NULL, 0},
|
{"SWEAPON", bufferSWEAPONLoad, NULL},
|
||||||
{"SBODY", bufferSBODYLoad, dataReleaseStats, NULL, 0},
|
{"SBODY", bufferSBODYLoad, dataReleaseStats},
|
||||||
{"SBRAIN", bufferSBRAINLoad, NULL, NULL, 0},
|
{"SBRAIN", bufferSBRAINLoad, NULL},
|
||||||
{"SPROP", bufferSPROPLoad, NULL, NULL, 0},
|
{"SPROP", bufferSPROPLoad, NULL},
|
||||||
{"SSENSOR", bufferSSENSORLoad, NULL, NULL, 0},
|
{"SSENSOR", bufferSSENSORLoad, NULL},
|
||||||
{"SECM", bufferSECMLoad, NULL, NULL, 0},
|
{"SECM", bufferSECMLoad, NULL},
|
||||||
{"SREPAIR", bufferSREPAIRLoad, NULL, NULL, 0},
|
{"SREPAIR", bufferSREPAIRLoad, NULL},
|
||||||
{"SCONSTR", bufferSCONSTRLoad, NULL, NULL, 0},
|
{"SCONSTR", bufferSCONSTRLoad, NULL},
|
||||||
{"SPROPTYPES", bufferSPROPTYPESLoad, NULL, NULL, 0},
|
{"SPROPTYPES", bufferSPROPTYPESLoad, NULL},
|
||||||
{"SPROPSND", bufferSPROPSNDLoad, NULL, NULL, 0},
|
{"SPROPSND", bufferSPROPSNDLoad, NULL},
|
||||||
{"STERRTABLE", bufferSTERRTABLELoad, NULL, NULL, 0},
|
{"STERRTABLE", bufferSTERRTABLELoad, NULL},
|
||||||
{"SSPECABIL", bufferSSPECABILLoad, NULL, NULL, 0},
|
{"SSPECABIL", bufferSSPECABILLoad, NULL},
|
||||||
{"SBPIMD", bufferSBPIMDLoad, NULL, NULL, 0},
|
{"SBPIMD", bufferSBPIMDLoad, NULL},
|
||||||
{"SWEAPSND", bufferSWEAPSNDLoad, NULL, NULL, 0},
|
{"SWEAPSND", bufferSWEAPSNDLoad, NULL},
|
||||||
{"SWEAPMOD", bufferSWEAPMODLoad, NULL, NULL, 0},
|
{"SWEAPMOD", bufferSWEAPMODLoad, NULL},
|
||||||
{"STEMPL", bufferSTEMPLLoad, dataSTEMPLRelease, NULL, 0}, //template and associated files
|
{"STEMPL", bufferSTEMPLLoad, dataSTEMPLRelease}, //template and associated files
|
||||||
{"STEMPWEAP", bufferSTEMPWEAPLoad, NULL, NULL, 0},
|
{"STEMPWEAP", bufferSTEMPWEAPLoad, NULL},
|
||||||
{"SSTRUCT", bufferSSTRUCTLoad, dataSSTRUCTRelease, NULL, 0}, //structure stats and associated files
|
{"SSTRUCT", bufferSSTRUCTLoad, dataSSTRUCTRelease}, //structure stats and associated files
|
||||||
{"SSTRFUNC", bufferSSTRFUNCLoad, NULL, NULL, 0},
|
{"SSTRFUNC", bufferSSTRFUNCLoad, NULL},
|
||||||
{"SSTRWEAP", bufferSSTRWEAPLoad, NULL, NULL, 0},
|
{"SSTRWEAP", bufferSSTRWEAPLoad, NULL},
|
||||||
{"SSTRMOD", bufferSSTRMODLoad, NULL, NULL, 0},
|
{"SSTRMOD", bufferSSTRMODLoad, NULL},
|
||||||
{"SFEAT", bufferSFEATLoad, dataSFEATRelease, NULL, 0}, //feature stats file
|
{"SFEAT", bufferSFEATLoad, dataSFEATRelease}, //feature stats file
|
||||||
{"SFUNC", bufferSFUNCLoad, dataSFUNCRelease, NULL, 0}, //function stats file
|
{"SFUNC", bufferSFUNCLoad, dataSFUNCRelease}, //function stats file
|
||||||
{"RESCH", bufferRESCHLoad, dataRESCHRelease, NULL, 0}, //research stats files
|
{"RESCH", bufferRESCHLoad, dataRESCHRelease}, //research stats files
|
||||||
{"RPREREQ", bufferRPREREQLoad, NULL, NULL, 0},
|
{"RPREREQ", bufferRPREREQLoad, NULL},
|
||||||
{"RCOMPRED", bufferRCOMPREDLoad, NULL, NULL, 0},
|
{"RCOMPRED", bufferRCOMPREDLoad, NULL},
|
||||||
{"RCOMPRES", bufferRCOMPRESLoad, NULL, NULL, 0},
|
{"RCOMPRES", bufferRCOMPRESLoad, NULL},
|
||||||
{"RSTRREQ", bufferRSTRREQLoad, NULL, NULL, 0},
|
{"RSTRREQ", bufferRSTRREQLoad, NULL},
|
||||||
{"RSTRRED", bufferRSTRREDLoad, NULL, NULL, 0},
|
{"RSTRRED", bufferRSTRREDLoad, NULL},
|
||||||
{"RSTRRES", bufferRSTRRESLoad, NULL, NULL, 0},
|
{"RSTRRES", bufferRSTRRESLoad, NULL},
|
||||||
{"RFUNC", bufferRFUNCLoad, NULL, NULL, 0},
|
{"RFUNC", bufferRFUNCLoad, NULL},
|
||||||
{"SMSG", bufferSMSGLoad, dataSMSGRelease, NULL, 0},
|
{"SMSG", bufferSMSGLoad, dataSMSGRelease},
|
||||||
{"SCRIPT", dataScriptLoad, (RES_FREE)scriptFreeCode, NULL, 0},
|
{"SCRIPT", dataScriptLoad, (RES_FREE)scriptFreeCode},
|
||||||
{"SCRIPTVAL", dataScriptLoadVals, NULL, NULL, 0},
|
{"SCRIPTVAL", dataScriptLoadVals, NULL},
|
||||||
{"STR_RES", dataStrResLoad, dataStrResRelease, NULL, 0},
|
{"STR_RES", dataStrResLoad, dataStrResRelease},
|
||||||
{"IMGPAGE", dataIMGPAGELoad, dataIMGPAGERelease, NULL, 0},
|
{"IMGPAGE", dataIMGPAGELoad, dataIMGPAGERelease},
|
||||||
{"TERTILES", NULL, NULL, NULL, 0}, // This version was used when running with the software renderer.
|
{"TERTILES", NULL, NULL}, // This version was used when running with the software renderer.
|
||||||
{"HWTERTILES", dataHWTERTILESLoad, dataHWTERTILESRelease, NULL, 0}, // freed by 3d shutdow},// Tertiles Files. This version used when running with hardware renderer.
|
{"HWTERTILES", dataHWTERTILESLoad, dataHWTERTILESRelease}, // freed by 3d shutdow},// Tertiles Files. This version used when running with hardware renderer.
|
||||||
{"AUDIOCFG", dataAudioCfgLoad, NULL, NULL, 0},
|
{"AUDIOCFG", dataAudioCfgLoad, NULL},
|
||||||
{"WAV", dataAudioLoad, dataAudioRelease, NULL, 0},
|
{"WAV", dataAudioLoad, dataAudioRelease},
|
||||||
{"ANI", dataAnimLoad, dataAnimRelease, NULL, 0},
|
{"ANI", dataAnimLoad, dataAnimRelease},
|
||||||
{"ANIMCFG", dataAnimCfgLoad, NULL, NULL, 0},
|
{"ANIMCFG", dataAnimCfgLoad, NULL},
|
||||||
{"IMG", dataIMGLoad, dataIMGRelease, NULL, 0},
|
{"IMG", dataIMGLoad, dataIMGRelease},
|
||||||
{"TEXPAGE", bufferTexPageLoad, dataTexPageRelease, NULL, 0},
|
{"TEXPAGE", bufferTexPageLoad, dataTexPageRelease},
|
||||||
{"IMD", dataIMDBufferLoad, (RES_FREE)iV_IMDRelease, NULL, 0},
|
{"IMD", dataIMDBufferLoad, (RES_FREE)iV_IMDRelease},
|
||||||
|
|
||||||
|
|
||||||
{NULL,NULL,NULL, NULL, 0} // indicates end of list
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/* Pass all the data loading functions to the framework library */
|
/* Pass all the data loading functions to the framework library */
|
||||||
BOOL dataInitLoadFuncs(void)
|
BOOL dataInitLoadFuncs(void)
|
||||||
{
|
{
|
||||||
RES_TYPE_MIN *CurrentType;
|
const RES_TYPE_MIN *CurrentType;
|
||||||
// UDWORD i;
|
// Points just past the last item in the list
|
||||||
|
const RES_TYPE_MIN *EndType = &ResourceTypes[sizeof(ResourceTypes) / sizeof(RES_TYPE_MIN)];
|
||||||
|
|
||||||
// init the cheat system;
|
// init the cheat system;
|
||||||
resetCheatHash();
|
resetCheatHash();
|
||||||
|
|
||||||
CurrentType=ResourceTypes; // point to the first entry
|
// Using iterator style: begin iterator (ResourceTypes),
|
||||||
|
// end iterator (EndType), and current iterator (CurrentType)
|
||||||
// While there are still some entries in the list
|
for (CurrentType = ResourceTypes; CurrentType != EndType; ++CurrentType)
|
||||||
while( CurrentType->aType != NULL )
|
|
||||||
{
|
{
|
||||||
// printf(" ==>%s\n",CurrentType->aType); //TESTING -Q
|
|
||||||
if(!resAddBufferLoad(CurrentType->aType,CurrentType->buffLoad,CurrentType->release))
|
if(!resAddBufferLoad(CurrentType->aType,CurrentType->buffLoad,CurrentType->release))
|
||||||
{
|
{
|
||||||
return FALSE; // error whilst adding a buffer load
|
return FALSE; // error whilst adding a buffer load
|
||||||
}
|
}
|
||||||
CurrentType++;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Now add the only file load left!
|
|
||||||
if (!resAddFileLoad("SAVEGAME", dataSaveGameLoad, NULL))
|
|
||||||
{
|
|
||||||
return FALSE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
Loading…
Reference in New Issue