forked from fte/fteqw
1
0
Fork 0

Fixed hexen2 plaques.

Fixed hexen2 new game menu ignoring class the first time around.
Fixed hexen2 pickup glows.
Slight loading speed improvement due to testing less texture paths.

git-svn-id: https://svn.code.sf.net/p/fteqw/code/branches/wip@3587 fc73d0e0-1445-4013-8a0c-d673dee63da5
This commit is contained in:
Spoike 2010-08-17 02:44:21 +00:00
parent 11d870ac27
commit a4ed95a376
11 changed files with 71 additions and 48 deletions

View File

@ -1492,6 +1492,8 @@ void CL_CheckServerInfo(void)
cl.minpitch = -89.9; cl.minpitch = -89.9;
} }
cl.hexen2pickups = atoi(Info_ValueForKey(cl.serverinfo, "sv_pupglow"));
allowed = atoi(Info_ValueForKey(cl.serverinfo, "allow")); allowed = atoi(Info_ValueForKey(cl.serverinfo, "allow"));
if (allowed & 1) if (allowed & 1)
cls.allow_watervis = true; cls.allow_watervis = true;

View File

@ -991,11 +991,6 @@ int CL_LoadModels(int stage, qboolean dontactuallyload)
// Host_EndGame("Worldmodel wasn't loaded\n"); // Host_EndGame("Worldmodel wasn't loaded\n");
} }
if (cl.worldmodel && cl.worldmodel->fromgame == fg_quake)
cl.hexen2pickups = cl.worldmodel->hulls[MAX_MAP_HULLSDH2-1].available;
else
cl.hexen2pickups = false;
#ifdef CSQC_DAT #ifdef CSQC_DAT
CSQC_WorldLoaded(); CSQC_WorldLoaded();
#endif #endif

View File

@ -447,12 +447,15 @@ void SCR_DrawCenterString (vrect_t *rect, cprint_t *p)
if (p->flags & CPRINT_BACKGROUND) if (p->flags & CPRINT_BACKGROUND)
{ //hexen2 style plaque. { //hexen2 style plaque.
int lines, len;
if (rect->width > 320) if (rect->width > 320)
{ {
rect->x = (rect->x + rect->width/2) - 160; rect->x = (rect->x + rect->width/2) - (160);
rect->width = 320; rect->width = 320;
} }
if (rect->width < 32)
return;
rect->x += 16;
rect->width -= 32;
} }
Font_BeginString(font_conchar, rect->x, rect->y, &left, &top); Font_BeginString(font_conchar, rect->x, rect->y, &left, &top);
@ -484,8 +487,11 @@ void SCR_DrawCenterString (vrect_t *rect, cprint_t *p)
if (p->flags & CPRINT_BACKGROUND) if (p->flags & CPRINT_BACKGROUND)
{ //hexen2 style plaque. { //hexen2 style plaque.
x = rect->x+(rect->width-320)/2; int px, py, pw;
Draw_TextBox(x-6, y-8, 320/8-1, linecount); px = rect->x;
py = ( y * vid.height) / (float)vid.pixelheight;
pw = rect->width+8;
Draw_TextBox(px-16, py-8-8, pw/8, linecount+2);
} }
for (l = 0; l < linecount; l++, y += Font_CharHeight()) for (l = 0; l < linecount; l++, y += Font_CharHeight())

View File

@ -2012,11 +2012,14 @@ texid_t R_LoadHiResTexture(char *name, char *subpath, unsigned int flags)
*data = '#'; *data = '#';
} }
snprintf(fname, sizeof(fname)-1, "%s/%s", subpath, name); snprintf(fname, sizeof(fname)-1, "%s/%s", subpath, name); /*should be safe if its null*/
tex = R_FindTexture(fname);
if (TEXVALID(tex)) //don't bother if it already exists.
return tex;
if (subpath && *subpath) if (subpath && *subpath)
{
tex = R_FindTexture(fname);
if (TEXVALID(tex)) //don't bother if it already exists.
return tex;
}
if (!(flags & IF_SUBDIRONLY))
{ {
tex = R_FindTexture(name); tex = R_FindTexture(name);
if (TEXVALID(tex)) //don't bother if it already exists. if (TEXVALID(tex)) //don't bother if it already exists.
@ -2024,12 +2027,18 @@ texid_t R_LoadHiResTexture(char *name, char *subpath, unsigned int flags)
} }
tex = R_LoadCompressed(fname); if (subpath && *subpath)
if (TEXVALID(tex)) {
return tex; tex = R_LoadCompressed(fname);
tex = R_LoadCompressed(name); if (TEXVALID(tex))
if (TEXVALID(tex)) return tex;
return tex; }
if (!(flags & IF_SUBDIRONLY))
{
tex = R_LoadCompressed(name);
if (TEXVALID(tex))
return tex;
}
if (strchr(name, '/')) //never look in a root dir for the pic if (strchr(name, '/')) //never look in a root dir for the pic
i = 0; i = 0;
@ -2053,7 +2062,11 @@ texid_t R_LoadHiResTexture(char *name, char *subpath, unsigned int flags)
snprintf(fname, sizeof(fname)-1, tex_path[i].path, subpath, nicename, tex_extensions[e].name); snprintf(fname, sizeof(fname)-1, tex_path[i].path, subpath, nicename, tex_extensions[e].name);
} }
else else
{
if (flags & IF_SUBDIRONLY)
continue;
snprintf(fname, sizeof(fname)-1, tex_path[i].path, nicename, tex_extensions[e].name); snprintf(fname, sizeof(fname)-1, tex_path[i].path, nicename, tex_extensions[e].name);
}
TRACE(("dbg: Mod_LoadHiResTexture: trying %s\n", fname)); TRACE(("dbg: Mod_LoadHiResTexture: trying %s\n", fname));
if ((buf = COM_LoadFile (fname, 5))) if ((buf = COM_LoadFile (fname, 5)))
{ {
@ -2094,32 +2107,35 @@ texid_t R_LoadHiResTexture(char *name, char *subpath, unsigned int flags)
} }
} }
/*still failed? attempt to load quake lmp files, which have no real format id*/ if (!(flags & IF_SUBDIRONLY))
snprintf(fname, sizeof(fname)-1, "%s%s", nicename, ".lmp");
if ((buf = COM_LoadFile (fname, 5)))
{ {
extern cvar_t vid_hardwaregamma; /*still failed? attempt to load quake lmp files, which have no real format id*/
tex = r_nulltex; snprintf(fname, sizeof(fname)-1, "%s%s", nicename, ".lmp");
if (com_filesize >= 8) if ((buf = COM_LoadFile (fname, 5)))
{ {
image_width = LittleLong(((int*)buf)[0]); extern cvar_t vid_hardwaregamma;
image_height = LittleLong(((int*)buf)[1]); tex = r_nulltex;
if (image_width*image_height+8 == com_filesize) if (com_filesize >= 8)
{ {
tex = R_LoadTexture8(name, image_width, image_height, buf+8, flags, 1); image_width = LittleLong(((int*)buf)[0]);
image_height = LittleLong(((int*)buf)[1]);
if (image_width*image_height+8 == com_filesize)
{
tex = R_LoadTexture8(name, image_width, image_height, buf+8, flags, 1);
}
} }
BZ_Free(buf);
return tex;
} }
BZ_Free(buf);
return tex;
}
//now look in wad files. (halflife compatability) //now look in wad files. (halflife compatability)
data = W_GetTexture(name, &image_width, &image_height, &alphaed); data = W_GetTexture(name, &image_width, &image_height, &alphaed);
if (data) if (data)
{ {
tex = R_LoadTexture32 (name, image_width, image_height, (unsigned*)data, flags); tex = R_LoadTexture32 (name, image_width, image_height, (unsigned*)data, flags);
BZ_Free(data); BZ_Free(data);
return tex; return tex;
}
} }
return r_nulltex; return r_nulltex;
} }

View File

@ -180,6 +180,8 @@ void M_Menu_SinglePlayer_f (void)
menu = M_CreateMenu(0); menu = M_CreateMenu(0);
MC_AddPicture(menu, 16, 0, 35, 176, "gfx/menu/hplaque.lmp"); MC_AddPicture(menu, 16, 0, 35, 176, "gfx/menu/hplaque.lmp");
Cvar_Get("cl_playerclass", "1", CVAR_USERINFO|CVAR_ARCHIVE, "Hexen2");
y = 64-20; y = 64-20;
if (!strncmp(Cmd_Argv(1), "class", 5)) if (!strncmp(Cmd_Argv(1), "class", 5))

View File

@ -245,7 +245,9 @@ enum imageflags
IF_NOPICMIP = 1<<1, IF_NOPICMIP = 1<<1,
IF_NOMIPMAP = 1<<2, IF_NOMIPMAP = 1<<2,
IF_NOALPHA = 1<<3, IF_NOALPHA = 1<<3,
IF_NOGAMMA = 1<<4 IF_NOGAMMA = 1<<4,
IF_SUBDIRONLY = 1<<31
}; };
enum uploadfmt enum uploadfmt

View File

@ -1803,7 +1803,7 @@ void COM_Gamedir (const char *dir)
#define DPCOMPAT "set dpcompat_set 1\nset dpcompat_trailparticles 1\n" #define DPCOMPAT "set dpcompat_set 1\nset dpcompat_trailparticles 1\n"
#define NEXCFG DPCOMPAT "set sv_maxairspeed \"400\"\nset sv_jumpvelocity 270\nset sv_mintic \"0.01\"\ncl_nolerp 0\nset r_particlesdesc effectinfo\n" #define NEXCFG DPCOMPAT "set sv_maxairspeed \"400\"\nset sv_jumpvelocity 270\nset sv_mintic \"0.01\"\ncl_nolerp 0\nset r_particlesdesc effectinfo\n"
#define DMFCFG "set com_parseutf8 1\npm_airstep 1\n" #define DMFCFG "set com_parseutf8 1\npm_airstep 1\n"
#define HEX2CFG "set sv_maxspeed 640\nset watervis 1\nset r_wateralpha 0.5\n" #define HEX2CFG "set sv_maxspeed 640\nset watervis 1\nset r_wateralpha 0.5\nset sv_pupglow 1\n"
typedef struct { typedef struct {
const char *protocolname; //sent to the master server when this is the current gamemode. const char *protocolname; //sent to the master server when this is the current gamemode.

View File

@ -841,7 +841,7 @@ static qboolean R_CalcModelLighting(entity_t *e, model_t *clmodel, unsigned int
if ((e->model->flags & EF_ROTATE) && cl.hexen2pickups) if ((e->model->flags & EF_ROTATE) && cl.hexen2pickups)
{ {
shadelight[0] = shadelight[1] = shadelight[2] = shadelight[0] = shadelight[1] = shadelight[2] =
ambientlight[0] = ambientlight[1] = ambientlight[2] = 128+sin(cl.time*4)*64; ambientlight[0] = ambientlight[1] = ambientlight[2] = 128+sin(cl.servertime*4)*64;
} }
if ((e->drawflags & MLS_MASKIN) == MLS_ABSLIGHT) if ((e->drawflags & MLS_MASKIN) == MLS_ABSLIGHT)
{ {

View File

@ -1085,7 +1085,7 @@ TRACE(("dbg: RMod_LoadTextures: inittexturedescs\n"));
mipheight = tx->height; mipheight = tx->height;
} }
tn.base = R_LoadReplacementTexture(mt->name, loadname, IF_NOALPHA); tn.base = R_LoadReplacementTexture(mt->name, loadname, IF_NOALPHA|IF_SUBDIRONLY);
if (!TEXVALID(tn.base)) if (!TEXVALID(tn.base))
{ {
tn.base = R_LoadReplacementTexture(mt->name, "bmodels", (*mt->name == '{')?0:IF_NOALPHA); tn.base = R_LoadReplacementTexture(mt->name, "bmodels", (*mt->name == '{')?0:IF_NOALPHA);
@ -1098,7 +1098,7 @@ TRACE(("dbg: RMod_LoadTextures: inittexturedescs\n"));
snprintf(altname, sizeof(altname)-1, "%s_luma", mt->name); snprintf(altname, sizeof(altname)-1, "%s_luma", mt->name);
if (gl_load24bit.value) if (gl_load24bit.value)
{ {
tn.fullbright = R_LoadReplacementTexture(altname, loadname, IF_NOGAMMA); tn.fullbright = R_LoadReplacementTexture(altname, loadname, IF_NOGAMMA|IF_SUBDIRONLY);
if (!TEXVALID(tn.fullbright)) if (!TEXVALID(tn.fullbright))
tn.fullbright = R_LoadReplacementTexture(altname, "bmodels", IF_NOGAMMA); tn.fullbright = R_LoadReplacementTexture(altname, "bmodels", IF_NOGAMMA);
} }
@ -1114,7 +1114,7 @@ TRACE(("dbg: RMod_LoadTextures: inittexturedescs\n"));
if (gl_bump.ival<2) //set to 2 to have faster loading. if (gl_bump.ival<2) //set to 2 to have faster loading.
{ {
snprintf(altname, sizeof(altname)-1, "%s_norm", mt->name); snprintf(altname, sizeof(altname)-1, "%s_norm", mt->name);
tn.bump = R_LoadReplacementTexture(altname, loadname, IF_NOALPHA|IF_NOGAMMA); tn.bump = R_LoadReplacementTexture(altname, loadname, IF_NOALPHA|IF_NOGAMMA|IF_SUBDIRONLY);
if (!TEXVALID(tn.bump)) if (!TEXVALID(tn.bump))
tn.bump = R_LoadReplacementTexture(altname, "bmodels", IF_NOALPHA|IF_NOGAMMA); tn.bump = R_LoadReplacementTexture(altname, "bmodels", IF_NOALPHA|IF_NOGAMMA);
} }
@ -1145,7 +1145,7 @@ TRACE(("dbg: RMod_LoadTextures: inittexturedescs\n"));
if (gl_specular.value && gl_load24bit.value) if (gl_specular.value && gl_load24bit.value)
{ {
snprintf(altname, sizeof(altname)-1, "%s_gloss", mt->name); snprintf(altname, sizeof(altname)-1, "%s_gloss", mt->name);
tn.specular = R_LoadHiResTexture(altname, loadname, IF_NOALPHA|IF_NOGAMMA); tn.specular = R_LoadHiResTexture(altname, loadname, IF_NOALPHA|IF_NOGAMMA|IF_SUBDIRONLY);
if (!TEXVALID(tn.specular)) if (!TEXVALID(tn.specular))
tn.specular = R_LoadHiResTexture(altname, "bmodels", IF_NOALPHA|IF_NOGAMMA); tn.specular = R_LoadHiResTexture(altname, "bmodels", IF_NOALPHA|IF_NOGAMMA);
} }

View File

@ -1217,8 +1217,6 @@ Con_DPrintf("PF_readcmd: %s\n%s", s, output);
case G_SETPAUSE: case G_SETPAUSE:
{ {
int i;
client_t *cl;
int pause = VM_LONG(arg[0]); int pause = VM_LONG(arg[0]);
if ((sv.paused&1) == (pause&1)) if ((sv.paused&1) == (pause&1))
break; //nothing changed, ignore it. break; //nothing changed, ignore it.

View File

@ -148,6 +148,7 @@ cvar_t sv_cullplayers_trace = CVARF("sv_cullplayers_trace", "", CVAR_SERVERINFO)
cvar_t sv_cullentities_trace = CVARF("sv_cullentities_trace", "", CVAR_SERVERINFO); cvar_t sv_cullentities_trace = CVARF("sv_cullentities_trace", "", CVAR_SERVERINFO);
cvar_t sv_phs = CVAR("sv_phs", "1"); cvar_t sv_phs = CVAR("sv_phs", "1");
cvar_t sv_resetparms = CVAR("sv_resetparms", "0"); cvar_t sv_resetparms = CVAR("sv_resetparms", "0");
cvar_t sv_pupglow = CVARF("sv_pupglow", "", CVAR_SERVERINFO);
cvar_t sv_master = CVAR("sv_master", "0"); cvar_t sv_master = CVAR("sv_master", "0");
cvar_t sv_masterport = CVAR("sv_masterport", "0"); cvar_t sv_masterport = CVAR("sv_masterport", "0");
@ -3623,6 +3624,7 @@ void SV_InitLocal (void)
Cvar_Register (&timeout, cvargroup_servercontrol); Cvar_Register (&timeout, cvargroup_servercontrol);
Cvar_Register (&zombietime, cvargroup_servercontrol); Cvar_Register (&zombietime, cvargroup_servercontrol);
Cvar_Register (&sv_pupglow, cvargroup_serverinfo);
Cvar_Register (&sv_loadentfiles, cvargroup_servercontrol); Cvar_Register (&sv_loadentfiles, cvargroup_servercontrol);
Cvar_Register (&sv_maxvelocity, cvargroup_serverphysics); Cvar_Register (&sv_maxvelocity, cvargroup_serverphysics);