diff --git a/engine/client/cl_parse.c b/engine/client/cl_parse.c index 631296cee..6e1b78052 100644 --- a/engine/client/cl_parse.c +++ b/engine/client/cl_parse.c @@ -6056,14 +6056,14 @@ void CLQW_ParseServerMessage (void) case svcqw_updatestatbyte: i = MSG_ReadByte (); j = MSG_ReadByte (); - CL_SetStatInt (destsplit, i, j); CL_SetStatFloat (destsplit, i, j); + CL_SetStatInt (destsplit, i, j); break; case svcqw_updatestatlong: i = MSG_ReadByte (); j = MSG_ReadLong (); //make qbyte if nq compatability? - CL_SetStatInt (destsplit, i, j); CL_SetStatFloat (destsplit, i, j); + CL_SetStatInt (destsplit, i, j); break; case svcfte_updatestatstring: diff --git a/engine/client/keys.c b/engine/client/keys.c index a4be13ad6..18b3702c6 100644 --- a/engine/client/keys.c +++ b/engine/client/keys.c @@ -2076,10 +2076,26 @@ void Key_Event (int devid, int key, unsigned int unicode, qboolean down) // // during demo playback, most keys bring up the main menu // - if (cls.demoplayback && cls.demoplayback != DPB_MVD && cls.demoplayback != DPB_EZTV && down && conkey && key != K_TAB && !Key_Dest_Has(~kdm_game)) + if (cls.demoplayback && cls.demoplayback != DPB_MVD && cls.demoplayback != DPB_EZTV && down && conkey && !Key_Dest_Has(~kdm_game)) { - M_ToggleMenu_f (); - return; + switch (key) + { //these keys don't force the menu to appear while playing the demo reel + case K_LSHIFT: + case K_RSHIFT: + case K_LALT: + case K_RALT: + case K_LCTRL: +// case K_RCTRL: + break; + default: + dc = keybindings[key][modifierstate]; + //toggleconsole or +showFOO keys should do their regular bind action + if (!dc || (strcmp(dc, "toggleconsole") && strncmp(dc, "+show", 5))) + { + M_ToggleMenu_f (); + return; + } + } } // diff --git a/engine/client/m_options.c b/engine/client/m_options.c index d6ccf39d9..77eda10b1 100644 --- a/engine/client/m_options.c +++ b/engine/client/m_options.c @@ -545,6 +545,7 @@ const char *presetexec[] = // 286 options (also the first commands to be execed in the chain) "seta m_preset_chosen 1;" "seta gl_texturemode nn;" + "seta gl_texturemode2d n;" "seta gl_blendsprites 0;" "seta r_particlesystem null;" "seta r_particledesc \"\";" @@ -584,6 +585,7 @@ const char *presetexec[] = , // fast options "gl_texturemode ln;" + "gl_texturemode2d n;" "r_particlesystem classic;" "r_particledesc classic;" "r_drawflat 0;" @@ -607,7 +609,9 @@ const char *presetexec[] = "cl_rollangle 2.0;" "cl_bob 0.02;" //these things are perhaps a little extreme + "r_loadlit 0;" "gl_texturemode nn;" //yup, we went there. + "gl_texturemode2d n;" //yeah, 2d too. "r_part_classic_square 1;" //blocky baby! "cl_sbar 1;" //its a style thing "sv_nqplayerphysics 1;" //gb wanted this @@ -627,9 +631,11 @@ const char *presetexec[] = "r_coronas 1;" "r_lerpmuzzlehack 1;" "gl_texturemode ln;" + "gl_texturemode2d l;" "cl_sbar 0;" "sv_nqplayerphysics 0;" "cl_demoreel 0;" + "r_loadlit 1;" , // nice options "r_stains 0.75;" diff --git a/engine/gl/gl_backend.c b/engine/gl/gl_backend.c index d820563b4..f8020592e 100644 --- a/engine/gl/gl_backend.c +++ b/engine/gl/gl_backend.c @@ -1002,23 +1002,25 @@ int GLBE_SetupForShadowMap(texid_t shadowmaptex, int texwidth, int texheight, fl static void T_Gen_CurrentRender(int tmu) { int vwidth, vheight; + int pwidth = vid.fbpwidth; + int pheight = vid.fbpheight; if (r_refdef.recurse) return; if (r_config.texture_non_power_of_two) { - vwidth = vid.pixelwidth; - vheight = vid.pixelheight; + vwidth = pwidth; + vheight = pheight; } else { vwidth = 1; vheight = 1; - while (vwidth < vid.pixelwidth) + while (vwidth < pwidth) { vwidth *= 2; } - while (vheight < vid.pixelheight) + while (vheight < pheight) { vheight *= 2; } diff --git a/engine/gl/gl_rmain.c b/engine/gl/gl_rmain.c index 04a2342be..9c35f3de9 100644 --- a/engine/gl/gl_rmain.c +++ b/engine/gl/gl_rmain.c @@ -159,8 +159,8 @@ void GL_SetupSceneProcessingTextures (void) if (!gl_config.arb_shader_objects) return; - TEXASSIGN(scenepp_texture_warp, GL_AllocNewTexture("***postprocess_warp***", PP_WARP_TEX_SIZE, PP_WARP_TEX_SIZE, IF_NOMIPMAP|IF_NOGAMMA)); - TEXASSIGN(scenepp_texture_edge, GL_AllocNewTexture("***postprocess_edge***", PP_WARP_TEX_SIZE, PP_WARP_TEX_SIZE, IF_NOMIPMAP|IF_NOGAMMA)); + TEXASSIGN(scenepp_texture_warp, GL_AllocNewTexture("***postprocess_warp***", PP_WARP_TEX_SIZE, PP_WARP_TEX_SIZE, IF_NOMIPMAP|IF_NOGAMMA|IF_LINEAR)); + TEXASSIGN(scenepp_texture_edge, GL_AllocNewTexture("***postprocess_edge***", PP_WARP_TEX_SIZE, PP_WARP_TEX_SIZE, IF_NOMIPMAP|IF_NOGAMMA|IF_LINEAR)); // init warp texture - this specifies offset in for (y=0; yserverflags = svs.serverflags; pr_global_struct->time = sv.time = sv.world.physicstime = time; sv.starttime = Sys_DoubleTime() - sv.time; @@ -1094,6 +1093,8 @@ void SV_Savegame (char *savename) VFS_PRINTF (f, "%s\n", sv.name); + VFS_PRINTF (f, "%g\n", (float)svs.serverflags); + VFS_CLOSE(f); #ifdef Q2SERVER @@ -1225,9 +1226,9 @@ void SV_Loadgame_f (void) for (trim = str+strlen(str)-1; trim>=str && *trim <= ' '; trim--) *trim='\0'; for (trim = str; *trim <= ' ' && *trim; trim++) - - if (*str == '(') - cl->spawn_parms[len] = atof(str); + ; + if (*trim == '(') + cl->spawn_parms[len] = atof(trim+1); else { version = atoi(str); @@ -1320,6 +1321,10 @@ void SV_Loadgame_f (void) for (trim = str; *trim <= ' ' && *trim; trim++) ; + //serverflags is reset on restart, so we need to read the value as it was at the start of the current map. + VFS_GETS(f, filename, sizeof(filename)-1); + svs.serverflags = atof(filename); + VFS_CLOSE(f); #ifdef Q2SERVER