From ce4d162f31563cc1a53708724a7344a11ae0092f Mon Sep 17 00:00:00 2001 From: Spoike Date: Mon, 9 Apr 2018 18:01:15 +0000 Subject: [PATCH] write +moveleft etc to configs ONLY if they were explicitly +fooed, and not just because someone was still holding a key on a map change. moved various config saving options to features, buttons saving is now disabled by default. git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@5239 fc73d0e0-1445-4013-8a0c-d673dee63da5 --- engine/client/cl_input.c | 14 +++++++------- engine/common/cmd.c | 25 +++++++++++++++++++------ engine/d3d/d3d_backend.c | 32 ++++++++++++++++++++------------ 3 files changed, 46 insertions(+), 25 deletions(-) diff --git a/engine/client/cl_input.c b/engine/client/cl_input.c index 14752f68d..f6086acf0 100644 --- a/engine/client/cl_input.c +++ b/engine/client/cl_input.c @@ -185,7 +185,7 @@ static void KeyDown (kbutton_t *b, kbutton_t *anti) b->down[pnum][1] = k; else { - Con_Printf ("Three keys down for a button!\n"); + Con_DPrintf ("Three keys down for a button!\n"); return; } @@ -379,20 +379,20 @@ void IN_WriteButtons(vfsfile_t *f, qboolean all) VFS_PRINTF(f, "\n//Player 1 buttons\n"); for (b = 0; b < countof(buttons); b++) { - if (buttons[b].button->state[s]&1) + if ((buttons[b].button->state[s]&1) && (buttons[b].button->down[s][0]==-1 || buttons[b].button->down[s][1]==-1)) VFS_PRINTF(f, "+%s\n", buttons[b].name); else if (b || all) VFS_PRINTF(f, "-%s\n", buttons[b].name); } - for (; s < MAX_SPLITS; s++) + for (s = 1; s < MAX_SPLITS; s++) { - VFS_PRINTF(f, "\n//Player %i buttons\n", s+1); + VFS_PRINTF(f, "\n//Player %i buttons\n", s); for (b = 0; b < countof(buttons); b++) { - if (buttons[b].button->state[s]&1) - VFS_PRINTF(f, "+p%i %s\n", s+1, buttons[b].name); + if ((buttons[b].button->state[s]&1) && (buttons[b].button->down[s][0]==-1 || buttons[b].button->down[s][1]==-1)) + VFS_PRINTF(f, "+p%i %s\n", s, buttons[b].name); else if (b || all) - VFS_PRINTF(f, "-p%i %s\n", s+1, buttons[b].name); + VFS_PRINTF(f, "-p%i %s\n", s, buttons[b].name); } } diff --git a/engine/common/cmd.c b/engine/common/cmd.c index b9f9fd6ba..02809f48a 100644 --- a/engine/common/cmd.c +++ b/engine/common/cmd.c @@ -52,6 +52,11 @@ cmdalias_t *cmd_alias; cvar_t cfg_save_all = CVARFD("cfg_save_all", "", CVAR_ARCHIVE|CVAR_NOTFROMSERVER, "If 1, cfg_save ALWAYS saves all cvars. If 0, cfg_save only ever saves archived cvars. If empty, cfg_save saves all cvars only when an explicit filename was given (ie: when not used internally via quit menu options)."); cvar_t cfg_save_auto = CVARFD("cfg_save_auto", "0", CVAR_ARCHIVE|CVAR_NOTFROMSERVER, "If 1, the config will automatically be saved and without prompts. If 0, you'll have to save your config manually (possibly via prompts from the quit menu)."); +cvar_t cfg_save_infos = CVARFD("cfg_save_infos", "1", CVAR_ARCHIVE|CVAR_NOTFROMSERVER, "If 1, saves userinfo and serverinfo to configs."); +cvar_t cfg_save_aliases = CVARFD("cfg_save_aliases", "1", CVAR_ARCHIVE|CVAR_NOTFROMSERVER, "If 1, saves userinfo and serverinfo to configs."); +cvar_t cfg_save_binds = CVARFD("cfg_save_binds", "1", CVAR_ARCHIVE|CVAR_NOTFROMSERVER, "If 1, saves all key bindings to configs."); +cvar_t cfg_save_buttons = CVARFD("cfg_save_buttons", "0", CVAR_ARCHIVE|CVAR_NOTFROMSERVER, "If 1, saves the state of things such as +mlook or +forward to configs."); + cvar_t cl_warncmd = CVARF("cl_warncmd", "1", CVAR_NOSAVE|CVAR_NORESET); cvar_t cl_aliasoverlap = CVARF("cl_aliasoverlap", "1", CVAR_NOTFROMSERVER); @@ -3785,7 +3790,6 @@ void Cmd_WriteConfig_f(void) char fname[MAX_QPATH]; char sysname[MAX_OSPATH]; qboolean all = true; - extern cvar_t cfg_save_all; if (Cmd_IsInsecure() && Cmd_Argc() > 1) { @@ -3832,18 +3836,23 @@ void Cmd_WriteConfig_f(void) VFS_PRINTF(f, "// %s config file\n\n", *fs_gamename.string?fs_gamename.string:FULLENGINENAME); #ifndef SERVERONLY - Key_WriteBindings (f); - IN_WriteButtons(f, all); - CL_SaveInfo(f); + if (cfg_save_binds.ival) + Key_WriteBindings (f); + if (cfg_save_buttons.ival) + IN_WriteButtons(f, all); + if (cfg_save_infos.ival) + CL_SaveInfo(f); #else VFS_WRITE(f, "// Dedicated Server config\n\n", 28); #endif #ifdef CLIENTONLY VFS_WRITE(f, "// no local/server infos\n\n", 26); #else - SV_SaveInfos(f); + if (cfg_save_infos.ival) + SV_SaveInfos(f); #endif - Alias_WriteAliases (f); + if (cfg_save_aliases.ival) + Alias_WriteAliases (f); Cvar_WriteVariables (f, all); VFS_CLOSE(f); @@ -4100,6 +4109,10 @@ void Cmd_Init (void) Cvar_Register (&cl_warncmd, "Warnings"); Cvar_Register (&cfg_save_all, "client operation options"); Cvar_Register (&cfg_save_auto, "client operation options"); + Cvar_Register (&cfg_save_infos, "client operation options"); + Cvar_Register (&cfg_save_aliases, "client operation options"); + Cvar_Register (&cfg_save_binds, "client operation options"); + Cvar_Register (&cfg_save_buttons, "client operation options"); #ifndef SERVERONLY rcon_level.ival = atof(rcon_level.enginevalue); //client is restricted to not be allowed to change restrictions. diff --git a/engine/d3d/d3d_backend.c b/engine/d3d/d3d_backend.c index f367fecc6..15076441d 100644 --- a/engine/d3d/d3d_backend.c +++ b/engine/d3d/d3d_backend.c @@ -2664,7 +2664,7 @@ static void BE_DrawMeshChain_Internal(void) BindTexture(passno, shaderstate.fogtexture); BE_ApplyTMUState(passno, shaderstate.curtexflags[passno]); - Vector4Set((qbyte*)&shaderstate.passcolour, r_refdef.globalfog.colour[2]*255, r_refdef.globalfog.colour[1]*255, r_refdef.globalfog.colour[0]*255, r_refdef.globalfog.colour[3]*255); + Vector4Set((qbyte*)&shaderstate.passcolour, r_refdef.globalfog.colour[2]*255, r_refdef.globalfog.colour[1]*255, r_refdef.globalfog.colour[0]*255, r_refdef.globalfog.alpha*255); IDirect3DDevice9_SetTextureStageState(pD3DDev9, passno, D3DTSS_CONSTANT, shaderstate.passcolour); IDirect3DDevice9_SetRenderState(pD3DDev9, D3DRS_COLORVERTEX, FALSE); IDirect3DDevice9_SetTextureStageState(pD3DDev9, passno, D3DTSS_COLORARG1, D3DTA_CONSTANT); @@ -3862,20 +3862,28 @@ void D3D9BE_BaseEntTextures(void) void D3D9BE_RenderShadowBuffer(unsigned int numverts, IDirect3DVertexBuffer9 *vbuf, unsigned int numindicies, IDirect3DIndexBuffer9 *ibuf) { - float pushdepth = shaderstate.curshader->polyoffset.factor; + polyoffset_t po = shaderstate.curshader->polyoffset; #ifdef BEF_PUSHDEPTH - extern cvar_t r_polygonoffset_submodel_factor; -// if (shaderstate.flags & BEF_PUSHDEPTH) - pushdepth += r_polygonoffset_submodel_factor.value; -#endif -// D3D9BE_Cull(0);//shaderstate.curshader->flags & (SHADER_CULL_FRONT | SHADER_CULL_BACK)); - pushdepth /= 0xffff; - - if (pushdepth != shaderstate.depthbias) + if (shaderstate.flags & BEF_PUSHDEPTH) { - shaderstate.depthbias = pushdepth; - IDirect3DDevice9_SetRenderState(pD3DDev9, D3DRS_DEPTHBIAS, *(DWORD*)&shaderstate.depthbias); + extern cvar_t r_polygonoffset_submodel_factor, r_polygonoffset_submodel_offset; + po.factor += r_polygonoffset_submodel_factor.value; + po.unit += r_polygonoffset_submodel_offset.value; } +#endif + if (po.factor != shaderstate.curpolyoffset.factor) + { + shaderstate.curpolyoffset.factor = po.factor; + IDirect3DDevice9_SetRenderState(pD3DDev9, D3DRS_SLOPESCALEDEPTHBIAS, *(DWORD*)&po.factor); + } + if (po.unit != shaderstate.curpolyoffset.unit) + { + shaderstate.curpolyoffset.unit = po.unit; + po.unit *= shaderstate.gltod3d_depthunit; + IDirect3DDevice9_SetRenderState(pD3DDev9, D3DRS_DEPTHBIAS, *(DWORD*)&po.unit); + } + +// D3D9BE_Cull(0); IDirect3DDevice9_SetStreamSource(pD3DDev9, STRM_VERT, vbuf, 0, sizeof(vecV_t));