[PATCH] qbsp: Complete removal of wadlist_t

Make all WADList functions take a pointer to the first wad_t, rather than
embedding it inside the struct wadlist. wadlist_t is no longer needed.

Signed-off-by: Tyrann <tyrann@disenchant.net>
This commit is contained in:
Tyrann 2006-10-02 14:26:27 +09:30
parent 39d6337fe3
commit 747631223c
3 changed files with 30 additions and 34 deletions

View File

@ -233,7 +233,7 @@ static void
ProcessFile(void)
{
char *wadstring;
wadlist_t wads;
wad_t *wads;
int numwads = 0;
// load brushes and entities
@ -278,10 +278,10 @@ ProcessFile(void)
CreateHulls();
WriteEntitiesToString();
WADList_Process(&wads, numwads);
WADList_Process(wads, numwads);
FinishBSPFile();
WADList_Free(&wads, numwads);
WADList_Free(wads, numwads);
}

View File

@ -24,8 +24,8 @@
#include "qbsp.h"
#include "wad.h"
static void WADList_LoadTextures(wadlist_t *w, int numwads, dmiptexlump_t *l);
static void WADList_AddAnimatingTextures(wadlist_t *w, int numwads);
static void WADList_LoadTextures(wad_t *wads, int numwads, dmiptexlump_t *l);
static void WADList_AddAnimatingTextures(wad_t *wads, int numwads);
static int WAD_LoadLump(wad_t *w, char *name, byte *dest);
@ -52,14 +52,14 @@ WAD_LoadInfo(wad_t *w)
int
WADList_Init(wadlist_t *list, char *wadstring)
WADList_Init(wad_t **wads, char *wadstring)
{
int i, len, numwads;
wad_t *tmp, *w;
char *fname;
numwads = 0;
list->wads = NULL;
*wads = NULL;
if (!wadstring)
return 0;
@ -94,8 +94,8 @@ WADList_Init(wadlist_t *list, char *wadstring)
}
/* Re-allocate just the required amount */
list->wads = AllocMem(OTHER, (w - tmp) * sizeof(wad_t), false);
memcpy(list->wads, tmp, (w - tmp) * sizeof(wad_t));
*wads = AllocMem(OTHER, (w - tmp) * sizeof(wad_t), false);
memcpy(*wads, tmp, (w - tmp) * sizeof(wad_t));
FreeMem(tmp, OTHER, numwads * sizeof(wad_t));
numwads = w - tmp;
@ -104,23 +104,23 @@ WADList_Init(wadlist_t *list, char *wadstring)
void
WADList_Free(wadlist_t *w, int numwads)
WADList_Free(wad_t *wads, int numwads)
{
int i;
if (w->wads) {
if (wads) {
for (i = 0; i < numwads; i++) {
fclose(w->wads[i].file);
FreeMem(w->wads[i].lumps, OTHER,
sizeof(lumpinfo_t) * w->wads[i].header.numlumps);
fclose(wads[i].file);
FreeMem(wads[i].lumps, OTHER,
sizeof(lumpinfo_t) * wads[i].header.numlumps);
}
FreeMem(w->wads, OTHER, numwads * sizeof(wad_t));
FreeMem(wads, OTHER, numwads * sizeof(wad_t));
}
}
void
WADList_Process(wadlist_t *w, int numwads)
WADList_Process(wad_t *wads, int numwads)
{
int i, j, k;
dmiptexlump_t *l;
@ -128,20 +128,20 @@ WADList_Process(wadlist_t *w, int numwads)
if (numwads < 1)
return;
WADList_AddAnimatingTextures(w, numwads);
WADList_AddAnimatingTextures(wads, numwads);
// Count texture size. Slow but saves memory.
for (i = 0; i < cMiptex; i++)
for (j = 0; j < numwads; j++) {
for (k = 0; k < w->wads[j].header.numlumps; k++)
if (!strcasecmp(rgszMiptex[i], w->wads[j].lumps[k].name)) {
for (k = 0; k < wads[j].header.numlumps; k++)
if (!strcasecmp(rgszMiptex[i], wads[j].lumps[k].name)) {
// Found it. Add in the size and skip to outer loop.
pWorldEnt->cTexdata += w->wads[j].lumps[k].disksize;
pWorldEnt->cTexdata += wads[j].lumps[k].disksize;
j = numwads;
break;
}
// If we found the texture already, break out to outer loop
if (k < w->wads[j].header.numlumps)
if (k < wads[j].header.numlumps)
break;
}
@ -152,7 +152,7 @@ WADList_Process(wadlist_t *w, int numwads)
l = (dmiptexlump_t *)pWorldEnt->pTexdata;
l->nummiptex = cMiptex;
WADList_LoadTextures(w, numwads, l);
WADList_LoadTextures(wads, numwads, l);
// Last pass, mark unfound textures as such
for (i = 0; i < cMiptex; i++)
@ -164,7 +164,7 @@ WADList_Process(wadlist_t *w, int numwads)
static void
WADList_LoadTextures(wadlist_t *w, int numwads, dmiptexlump_t *l)
WADList_LoadTextures(wad_t *wads, int numwads, dmiptexlump_t *l)
{
int i, j, len;
byte *data;
@ -177,7 +177,7 @@ WADList_LoadTextures(wadlist_t *w, int numwads, dmiptexlump_t *l)
continue;
l->dataofs[j] = data - (byte *)l;
len = WAD_LoadLump(w->wads + i, rgszMiptex[j], data);
len = WAD_LoadLump(wads + i, rgszMiptex[j], data);
if (data + len - pWorldEnt->pTexdata > pWorldEnt->cTexdata)
Message(msgError, errLowTextureCount);
@ -211,7 +211,7 @@ WAD_LoadLump(wad_t *w, char *name, byte *dest)
static void
WADList_AddAnimatingTextures(wadlist_t *w, int numwads)
WADList_AddAnimatingTextures(wad_t *wads, int numwads)
{
int base;
int i, j, k, l;
@ -233,8 +233,8 @@ WADList_AddAnimatingTextures(wadlist_t *w, int numwads)
// see if this name exists in the wadfiles
for (l = 0; l < numwads; l++)
for (k = 0; k < w->wads[l].header.numlumps; k++)
if (!strcasecmp(name, w->wads[l].lumps[k].name)) {
for (k = 0; k < wads[l].header.numlumps; k++)
if (!strcasecmp(name, wads[l].lumps[k].name)) {
FindMiptex(name); // add to the miptex list
break;
}

View File

@ -46,12 +46,8 @@ typedef struct {
FILE *file;
} wad_t;
typedef struct {
wad_t *wads;
} wadlist_t;
int WADList_Init(wadlist_t *list, char *wadstring);
void WADList_Process(wadlist_t *w, int numwads);
void WADList_Free(wadlist_t *w, int numwads);
int WADList_Init(wad_t **wads, char *wadstring);
void WADList_Process(wad_t *wads, int numwads);
void WADList_Free(wad_t *wads, int numwads);
#endif /* WAD_H */