r_menutint added, changes background tint for gl and sw
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@1394 fc73d0e0-1445-4013-8a0c-d673dee63da5
This commit is contained in:
parent
f7425dd4d7
commit
12a172bc95
|
@ -234,6 +234,8 @@ extern cvar_t r_waterlayers;
|
||||||
cvar_t gl_triplebuffer = {"gl_triplebuffer", "1", NULL, CVAR_ARCHIVE};
|
cvar_t gl_triplebuffer = {"gl_triplebuffer", "1", NULL, CVAR_ARCHIVE};
|
||||||
cvar_t vid_hardwaregamma = {"vid_hardwaregamma", "1", NULL, CVAR_ARCHIVE};
|
cvar_t vid_hardwaregamma = {"vid_hardwaregamma", "1", NULL, CVAR_ARCHIVE};
|
||||||
|
|
||||||
|
cvar_t r_menutint = {"r_menutint", "0.68 0.4 0.13"};
|
||||||
|
|
||||||
void GLRenderer_Init(void)
|
void GLRenderer_Init(void)
|
||||||
{
|
{
|
||||||
extern cvar_t gl_contrast;
|
extern cvar_t gl_contrast;
|
||||||
|
@ -520,6 +522,7 @@ void Renderer_Init(void)
|
||||||
Cvar_Register (&r_fastskycolour, GRAPHICALNICETIES);
|
Cvar_Register (&r_fastskycolour, GRAPHICALNICETIES);
|
||||||
|
|
||||||
Cvar_Register (&r_drawflat, GRAPHICALNICETIES);
|
Cvar_Register (&r_drawflat, GRAPHICALNICETIES);
|
||||||
|
Cvar_Register (&r_menutint, GRAPHICALNICETIES);
|
||||||
|
|
||||||
//bulletens
|
//bulletens
|
||||||
Cvar_Register(&bul_nowater, BULLETENVARS);
|
Cvar_Register(&bul_nowater, BULLETENVARS);
|
||||||
|
|
|
@ -1320,8 +1320,33 @@ void GLDraw_Crosshair(void)
|
||||||
|
|
||||||
if (crosshair.modified || crosshaircolor.modified || crosshair.value >= FIRSTANIMATEDCROSHAIR)
|
if (crosshair.modified || crosshaircolor.modified || crosshair.value >= FIRSTANIMATEDCROSHAIR)
|
||||||
{
|
{
|
||||||
int c = d_8to24rgbtable[(qbyte) crosshaircolor.value];
|
char *t;
|
||||||
int c2 = d_8to24rgbtable[(qbyte) crosshaircolor.value];
|
|
||||||
|
int c, c2, i;
|
||||||
|
|
||||||
|
t = strstr(crosshaircolor.string, " ");
|
||||||
|
if (!t) // use standard coloring
|
||||||
|
c = d_8to24rgbtable[(qbyte) crosshaircolor.value];
|
||||||
|
else // use RGB coloring
|
||||||
|
{
|
||||||
|
t++;
|
||||||
|
// abusing the fact that atof considers whitespace to be a delimiter...
|
||||||
|
i = crosshaircolor.value;
|
||||||
|
i = bound(0, i, 255);
|
||||||
|
c = i; // red channel (first 8 bits)
|
||||||
|
i = atoi(t);
|
||||||
|
i = bound(0, i, 255);
|
||||||
|
c |= (i << 8); // green channel
|
||||||
|
t = strstr(t, " "); // find last value
|
||||||
|
if (t)
|
||||||
|
{
|
||||||
|
i = atoi(t+1);
|
||||||
|
i = bound(0, i, 255);
|
||||||
|
c |= (i << 16); // blue channel
|
||||||
|
}
|
||||||
|
c |= 0xff000000; // alpha channel (always full)
|
||||||
|
} // i contains the crosshair color
|
||||||
|
c2 = c;
|
||||||
|
|
||||||
crosshair.modified = false;
|
crosshair.modified = false;
|
||||||
crosshaircolor.modified = false;
|
crosshaircolor.modified = false;
|
||||||
|
@ -1874,12 +1899,73 @@ Draw_FadeScreen
|
||||||
|
|
||||||
================
|
================
|
||||||
*/
|
*/
|
||||||
|
vec3_t fadecolor;
|
||||||
|
int faderender;
|
||||||
|
int fademodified;
|
||||||
|
|
||||||
void GLDraw_FadeScreen (void)
|
void GLDraw_FadeScreen (void)
|
||||||
{
|
{
|
||||||
|
extern cvar_t r_menutint;
|
||||||
|
|
||||||
|
if (fademodified != r_menutint.modified)
|
||||||
|
{
|
||||||
|
char *t;
|
||||||
|
|
||||||
|
// parse r_menutint and clear defaults
|
||||||
|
fadecolor[0] = r_menutint.value;
|
||||||
|
fadecolor[1] = 0;
|
||||||
|
fadecolor[2] = 0;
|
||||||
|
|
||||||
|
faderender = GL_DST_COLOR;
|
||||||
|
|
||||||
|
t = strstr(r_menutint.string, " ");
|
||||||
|
if (t)
|
||||||
|
{
|
||||||
|
fadecolor[1] = atof(t+1);
|
||||||
|
t = strstr(t+1, " ");
|
||||||
|
if (t)
|
||||||
|
fadecolor[2] = atof(t+1);
|
||||||
|
}
|
||||||
|
|
||||||
|
// bounds check and inverse check
|
||||||
|
if (fadecolor[0] < 0)
|
||||||
|
{
|
||||||
|
faderender = GL_ONE_MINUS_DST_COLOR;
|
||||||
|
fadecolor[0] = -(fadecolor[0]);
|
||||||
|
}
|
||||||
|
if (fadecolor[0] > 1)
|
||||||
|
fadecolor[0] = 1;
|
||||||
|
|
||||||
|
if (fadecolor[1] < 0)
|
||||||
|
{
|
||||||
|
faderender = GL_ONE_MINUS_DST_COLOR;
|
||||||
|
fadecolor[1] = -(fadecolor[1]);
|
||||||
|
}
|
||||||
|
if (fadecolor[1] > 1)
|
||||||
|
fadecolor[1] = 1;
|
||||||
|
|
||||||
|
if (fadecolor[2] < 0)
|
||||||
|
{
|
||||||
|
faderender = GL_ONE_MINUS_DST_COLOR;
|
||||||
|
fadecolor[2] = -(fadecolor[2]);
|
||||||
|
}
|
||||||
|
if (fadecolor[2] > 1)
|
||||||
|
fadecolor[2] = 1;
|
||||||
|
|
||||||
|
if (faderender == GL_DST_COLOR && fadecolor[0] == 1 && fadecolor[1] == 1 && fadecolor[2] == 1)
|
||||||
|
faderender = 0;
|
||||||
|
|
||||||
|
fademodified = r_menutint.modified;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!faderender)
|
||||||
|
return;
|
||||||
|
|
||||||
qglEnable (GL_BLEND);
|
qglEnable (GL_BLEND);
|
||||||
|
qglBlendFunc(faderender, GL_ZERO);
|
||||||
qglDisable(GL_ALPHA_TEST);
|
qglDisable(GL_ALPHA_TEST);
|
||||||
qglDisable (GL_TEXTURE_2D);
|
qglDisable (GL_TEXTURE_2D);
|
||||||
qglColor4f (0, 0, 0, 0.5);
|
qglColor4f (fadecolor[0], fadecolor[1], fadecolor[2], 1);
|
||||||
qglBegin (GL_QUADS);
|
qglBegin (GL_QUADS);
|
||||||
|
|
||||||
qglVertex2f (0,0);
|
qglVertex2f (0,0);
|
||||||
|
@ -1891,6 +1977,7 @@ void GLDraw_FadeScreen (void)
|
||||||
qglColor4f (1,1,1,1);
|
qglColor4f (1,1,1,1);
|
||||||
qglEnable (GL_TEXTURE_2D);
|
qglEnable (GL_TEXTURE_2D);
|
||||||
qglDisable (GL_BLEND);
|
qglDisable (GL_BLEND);
|
||||||
|
qglBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
||||||
qglEnable(GL_ALPHA_TEST);
|
qglEnable(GL_ALPHA_TEST);
|
||||||
|
|
||||||
Sbar_Changed();
|
Sbar_Changed();
|
||||||
|
|
|
@ -62,6 +62,8 @@ typedef struct cachepic_s
|
||||||
swcachepic_t swmenu_cachepics[MAX_CACHED_PICS];
|
swcachepic_t swmenu_cachepics[MAX_CACHED_PICS];
|
||||||
int swmenu_numcachepics;
|
int swmenu_numcachepics;
|
||||||
|
|
||||||
|
qbyte sw_crosshaircolor;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
================
|
================
|
||||||
Draw_CachePic
|
Draw_CachePic
|
||||||
|
@ -861,11 +863,42 @@ void SWDraw_Crosshair(void)
|
||||||
int x, y;
|
int x, y;
|
||||||
extern cvar_t crosshair, cl_crossx, cl_crossy, crosshaircolor;
|
extern cvar_t crosshair, cl_crossx, cl_crossy, crosshaircolor;
|
||||||
extern vrect_t scr_vrect;
|
extern vrect_t scr_vrect;
|
||||||
qbyte c = (qbyte)crosshaircolor.value;
|
qbyte c, c2;
|
||||||
qbyte c2 = (qbyte)crosshaircolor.value;
|
|
||||||
|
|
||||||
int sc;
|
int sc;
|
||||||
|
|
||||||
|
if (crosshaircolor.modified)
|
||||||
|
{ // redo color every modification to crosshaircolor
|
||||||
|
char *t;
|
||||||
|
|
||||||
|
t = strstr(crosshaircolor.string, " ");
|
||||||
|
if (!t) // use standard coloring
|
||||||
|
sw_crosshaircolor = (qbyte) crosshaircolor.value;
|
||||||
|
else // use RGB coloring
|
||||||
|
{
|
||||||
|
int rc,gc,bc;
|
||||||
|
|
||||||
|
t++;
|
||||||
|
// abusing the fact that atof considers whitespace to be a delimiter...
|
||||||
|
rc = (int)crosshaircolor.value;
|
||||||
|
rc = bound(0, rc, 255);
|
||||||
|
gc = atoi(t);
|
||||||
|
gc = bound(0, gc, 255);
|
||||||
|
t = strstr(t, " "); // find last value
|
||||||
|
if (t)
|
||||||
|
{
|
||||||
|
bc = atoi(t+1);
|
||||||
|
bc = bound(0, bc, 255);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
bc = 0;
|
||||||
|
sw_crosshaircolor = GetPalette(rc,gc,bc);
|
||||||
|
}
|
||||||
|
|
||||||
|
crosshaircolor.modified = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
c2 = c = sw_crosshaircolor;
|
||||||
|
|
||||||
for (sc = 0; sc < cl.splitclients; sc++)
|
for (sc = 0; sc < cl.splitclients; sc++)
|
||||||
{
|
{
|
||||||
SCR_CrosshairPosition(sc, &x, &y);
|
SCR_CrosshairPosition(sc, &x, &y);
|
||||||
|
@ -2340,14 +2373,86 @@ Draw_FadeScreen
|
||||||
|
|
||||||
================
|
================
|
||||||
*/
|
*/
|
||||||
|
char fscolormap[256];
|
||||||
|
int fsnodraw = 1;
|
||||||
|
int fsmodified;
|
||||||
|
|
||||||
void SWDraw_FadeScreen (void)
|
void SWDraw_FadeScreen (void)
|
||||||
{
|
{
|
||||||
int x,y;
|
int x,y;
|
||||||
|
extern cvar_t r_menutint;
|
||||||
|
|
||||||
VID_UnlockBuffer ();
|
VID_UnlockBuffer ();
|
||||||
S_ExtraUpdate ();
|
S_ExtraUpdate ();
|
||||||
VID_LockBuffer ();
|
VID_LockBuffer ();
|
||||||
|
|
||||||
|
if (fsmodified != r_menutint.modified)
|
||||||
|
{
|
||||||
|
char *t;
|
||||||
|
int s;
|
||||||
|
float r, g, b;
|
||||||
|
qbyte invmask = 0;
|
||||||
|
|
||||||
|
qbyte *rgb = (qbyte *)d_8to24rgbtable;
|
||||||
|
|
||||||
|
// parse r_menutint
|
||||||
|
fsnodraw = 0;
|
||||||
|
r = r_menutint.value;
|
||||||
|
g = 0;
|
||||||
|
b = 0;
|
||||||
|
t = strstr(r_menutint.string, " ");
|
||||||
|
if (t)
|
||||||
|
{
|
||||||
|
g = atof(t+1);
|
||||||
|
t = strstr(t+1, " ");
|
||||||
|
if (t)
|
||||||
|
b = atof(t+1);
|
||||||
|
}
|
||||||
|
|
||||||
|
// bounds check and inverse check
|
||||||
|
if (r < 0)
|
||||||
|
{
|
||||||
|
invmask = 0xff;
|
||||||
|
r = -r;
|
||||||
|
}
|
||||||
|
if (r > 1)
|
||||||
|
r = 1;
|
||||||
|
|
||||||
|
if (g < 0)
|
||||||
|
{
|
||||||
|
invmask = 0xff;
|
||||||
|
g = -g;
|
||||||
|
}
|
||||||
|
if (g > 1)
|
||||||
|
g = 1;
|
||||||
|
|
||||||
|
if (b < 0)
|
||||||
|
{
|
||||||
|
invmask = 0xff;
|
||||||
|
b = -b;
|
||||||
|
}
|
||||||
|
if (b > 1)
|
||||||
|
b = 1;
|
||||||
|
|
||||||
|
if (!invmask && r == 1 && g == 1 && b == 1)
|
||||||
|
fsnodraw = 1;
|
||||||
|
|
||||||
|
// generate colormap
|
||||||
|
for (x = 0; x < 256; x++)
|
||||||
|
{
|
||||||
|
// convert to grayscale value
|
||||||
|
s = rgb[0]*0.299 + rgb[1]*0.587 + rgb[2]*0.114;
|
||||||
|
|
||||||
|
fscolormap[x] = GetPalette((int)(s*r)^invmask, (int)(s*g)^invmask, (int)(s*b)^invmask);
|
||||||
|
rgb += 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
fsmodified = r_menutint.modified;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (fsnodraw)
|
||||||
|
return;
|
||||||
|
|
||||||
if (r_pixbytes == 4)
|
if (r_pixbytes == 4)
|
||||||
{
|
{
|
||||||
qbyte *pbuf;
|
qbyte *pbuf;
|
||||||
|
@ -2383,15 +2488,12 @@ void SWDraw_FadeScreen (void)
|
||||||
qbyte *pbuf;
|
qbyte *pbuf;
|
||||||
for (y=0 ; y<vid.height ; y++)
|
for (y=0 ; y<vid.height ; y++)
|
||||||
{
|
{
|
||||||
int t;
|
|
||||||
|
|
||||||
pbuf = (qbyte *)(vid.buffer + vid.rowbytes*y);
|
pbuf = (qbyte *)(vid.buffer + vid.rowbytes*y);
|
||||||
t = (y & 1) << 1;
|
|
||||||
|
|
||||||
for (x=0 ; x<vid.width ; x++)
|
for (x=0 ; x<vid.width ; x++)
|
||||||
{
|
{
|
||||||
if ((x & 3) != t)
|
pbuf[x] = fscolormap[pbuf[x]];
|
||||||
pbuf[x] = 0;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue