mirror of
https://git.code.sf.net/p/quake/newtree
synced 2025-03-30 19:50:48 +00:00
When you change gamedirs, cachepics (such as your conback) will be reloaded
in GL.. Please test this extensively, I _think_ the tempfile loader is smart enough to handle what I'm doing properly. If it's not, we'll have to fix a slight memory leak.
This commit is contained in:
parent
13ce6fc2b8
commit
d182c83842
3 changed files with 42 additions and 17 deletions
|
@ -542,6 +542,8 @@ void CL_StopUpload(void)
|
|||
=====================================================================
|
||||
*/
|
||||
|
||||
void Draw_ClearCache (void);
|
||||
|
||||
/*
|
||||
==================
|
||||
CL_ParseServerData
|
||||
|
@ -578,6 +580,7 @@ void CL_ParseServerData (void)
|
|||
// save current config
|
||||
Host_WriteConfiguration ();
|
||||
cflag = true;
|
||||
Draw_ClearCache ();
|
||||
}
|
||||
|
||||
COM_Gamedir(str);
|
||||
|
|
|
@ -75,6 +75,16 @@ qpic_t *Draw_PicFromWad (char *name)
|
|||
return W_GetLumpName (name);
|
||||
}
|
||||
|
||||
/*
|
||||
Draw_ClearCache
|
||||
|
||||
This is a no-op in software targets
|
||||
*/
|
||||
void
|
||||
Draw_ClearCache (void)
|
||||
{
|
||||
}
|
||||
|
||||
/*
|
||||
================
|
||||
Draw_CachePic
|
||||
|
|
|
@ -79,7 +79,7 @@ int ltexcrctable[256]; // cache mismatch checking --KB
|
|||
|
||||
int translate_texture;
|
||||
int char_texture;
|
||||
int cs_texture; // crosshair texture
|
||||
int cs_texture; // crosshair texturea
|
||||
|
||||
static byte cs_data[64] = {
|
||||
0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff,
|
||||
|
@ -202,13 +202,14 @@ void Scrap_Upload (void)
|
|||
typedef struct cachepic_s
|
||||
{
|
||||
char name[MAX_QPATH];
|
||||
qboolean dirty;
|
||||
qpic_t pic;
|
||||
byte padding[32]; // for appended glpic
|
||||
} cachepic_t;
|
||||
|
||||
#define MAX_CACHED_PICS 128
|
||||
cachepic_t menu_cachepics[MAX_CACHED_PICS];
|
||||
int menu_numcachepics;
|
||||
cachepic_t cachepics[MAX_CACHED_PICS];
|
||||
int numcachepics;
|
||||
|
||||
byte menuplyr_pixels[4096];
|
||||
|
||||
|
@ -257,6 +258,15 @@ qpic_t *Draw_PicFromWad (char *name)
|
|||
return p;
|
||||
}
|
||||
|
||||
void
|
||||
Draw_ClearCache (void)
|
||||
{
|
||||
cachepic_t *pic;
|
||||
int i;
|
||||
|
||||
for (pic=cachepics, i=0 ; i<numcachepics ; pic++, i++)
|
||||
pic->dirty = true;
|
||||
}
|
||||
|
||||
/*
|
||||
================
|
||||
|
@ -270,14 +280,19 @@ qpic_t *Draw_CachePic (char *path)
|
|||
qpic_t *dat;
|
||||
glpic_t *gl;
|
||||
|
||||
for (pic=menu_cachepics, i=0 ; i<menu_numcachepics ; pic++, i++)
|
||||
for (pic=cachepics, i=0 ; i<numcachepics ; pic++, i++)
|
||||
if (!strcmp (path, pic->name))
|
||||
return &pic->pic;
|
||||
break;
|
||||
|
||||
if (menu_numcachepics == MAX_CACHED_PICS)
|
||||
Sys_Error ("menu_numcachepics == MAX_CACHED_PICS");
|
||||
menu_numcachepics++;
|
||||
strcpy (pic->name, path);
|
||||
if (i == numcachepics)
|
||||
{
|
||||
if (numcachepics == MAX_CACHED_PICS)
|
||||
Sys_Error ("menu_numcachepics == MAX_CACHED_PICS");
|
||||
numcachepics++;
|
||||
strcpy (pic->name, path);
|
||||
}
|
||||
else if (!pic->dirty)
|
||||
return &pic->pic;
|
||||
|
||||
//
|
||||
// load the pic from disk
|
||||
|
@ -295,6 +310,7 @@ qpic_t *Draw_CachePic (char *path)
|
|||
|
||||
pic->pic.width = dat->width;
|
||||
pic->pic.height = dat->height;
|
||||
pic->dirty = false;
|
||||
|
||||
gl = (glpic_t *)pic->pic.data;
|
||||
gl->texnum = GL_LoadPicTexture (dat);
|
||||
|
@ -517,7 +533,8 @@ void Draw_Crosshair(void)
|
|||
extern vrect_t scr_vrect;
|
||||
unsigned char *pColor;
|
||||
|
||||
if (crosshair->value == 2) {
|
||||
if (crosshair->value == 2)
|
||||
{
|
||||
x = scr_vrect.x + scr_vrect.width/2 - 3 + cl_crossx->value;
|
||||
y = scr_vrect.y + scr_vrect.height/2 - 3 + cl_crossy->value;
|
||||
|
||||
|
@ -535,8 +552,8 @@ void Draw_Crosshair(void)
|
|||
glTexCoord2f (0, 1);
|
||||
glVertex2f (x - 4, y+12);
|
||||
glEnd ();
|
||||
|
||||
} else if (crosshair->value)
|
||||
}
|
||||
else if (crosshair->value)
|
||||
Draw_Character8 (scr_vrect.x + scr_vrect.width/2-4 + cl_crossx->value,
|
||||
scr_vrect.y + scr_vrect.height/2-4 + cl_crossy->value, '+');
|
||||
}
|
||||
|
@ -886,11 +903,6 @@ Call before beginning any disc IO.
|
|||
*/
|
||||
void Draw_BeginDisc (void)
|
||||
{
|
||||
if (!draw_disc)
|
||||
return;
|
||||
glDrawBuffer (GL_FRONT);
|
||||
Draw_Pic (vid.width - 24, 0, draw_disc);
|
||||
glDrawBuffer (GL_BACK);
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in a new issue