X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=menu.c;h=f7eb4d393b989fb3492b1c890eb190fb7d0ff665;hb=e19ae5af1136a913d72fd12b8cf136faf362c0d9;hp=6ffb2c90e3ce5969ecab9912bfa3935992a0b6ee;hpb=c52bc263597e240f934d3948850a519e051e17e5;p=xonotic%2Fdarkplaces.git diff --git a/menu.c b/menu.c index 6ffb2c90..f7eb4d39 100644 --- a/menu.c +++ b/menu.c @@ -301,9 +301,15 @@ void M_ToggleMenu_f (void) m_entersound = true; if (key_dest != key_menu || m_state != m_main) + { + if(Cmd_Argc() == 2 && !strcmp(Cmd_Argv(1), "1")) + return; M_Menu_Main_f (); + } else { + if(Cmd_Argc() == 2 && !strcmp(Cmd_Argv(1), "0")) + return; key_dest = key_game; m_state = m_none; } @@ -1561,6 +1567,8 @@ static void M_Menu_Options_AdjustSliders (int dir) Cvar_SetValueQuick (&vid_conheight, bound(240, vid_conheight.value + dir * 48, 1536)); else if (options_cursor == optnum++) Cvar_SetValueQuick (&scr_conalpha, bound(0, scr_conalpha.value + dir * 0.2, 1)); + else if (options_cursor == optnum++) + Cvar_SetValueQuick (&scr_conbrightness, bound(0, scr_conbrightness.value + dir * 0.2, 1)); else if (options_cursor == optnum++) Cvar_SetValueQuick (&sbar_alpha_bg, bound(0, sbar_alpha_bg.value + dir * 0.1, 1)); else if (options_cursor == optnum++) @@ -1574,7 +1582,7 @@ static void M_Menu_Options_AdjustSliders (int dir) else if (options_cursor == optnum++) Cvar_SetValueQuick (&scr_screenshot_jpeg_quality, bound(0, scr_screenshot_jpeg_quality.value + dir * 0.1, 1)); else if (options_cursor == optnum++) - Cvar_SetValueQuick (&scr_screenshot_gamma, bound(0.1, scr_screenshot_gamma.value + dir * 0.1, 4)); + Cvar_SetValueQuick (&scr_screenshot_gammaboost, bound(0.1, scr_screenshot_gammaboost.value + dir * 0.1, 4)); else if (options_cursor == optnum++) Cvar_SetValueQuick (&r_sky, !r_sky.integer); else if (options_cursor == optnum++) @@ -1695,13 +1703,14 @@ static void M_Options_Draw (void) M_Options_PrintSlider( " 2D Screen Width ", true, vid_conwidth.value, 320, 2048); M_Options_PrintSlider( " 2D Screen Height", true, vid_conheight.value, 240, 1536); M_Options_PrintSlider( " Console Alpha", true, scr_conalpha.value, 0, 1); + M_Options_PrintSlider( "Conback Brightness", true, scr_conbrightness.value, 0, 1); M_Options_PrintSlider( " Sbar Alpha BG", true, sbar_alpha_bg.value, 0, 1); M_Options_PrintSlider( " Sbar Alpha FG", true, sbar_alpha_fg.value, 0, 1); M_Options_PrintSlider( " Screen size", true, scr_viewsize.value, 30, 120); M_Options_PrintSlider( " Field of View", true, scr_fov.integer, 1, 170); M_Options_PrintCheckbox(" JPEG screenshots", jpeg_dll != NULL, scr_screenshot_jpeg.integer); M_Options_PrintSlider( " JPEG quality", jpeg_dll != NULL, scr_screenshot_jpeg_quality.value, 0, 1); - M_Options_PrintSlider( " Screenshot Gamma", jpeg_dll != NULL, scr_screenshot_gamma.value, 0.1, 4); + M_Options_PrintSlider( " Screenshot Gamma", jpeg_dll != NULL, scr_screenshot_gammaboost.value, 0.1, 4); M_Options_PrintCheckbox(" Sky", true, r_sky.integer); M_Options_PrintCheckbox(" Dithering", true, gl_dither.integer); M_Options_PrintSlider( "Anisotropic Filter", gl_support_anisotropy, gl_texture_anisotropy.integer, 1, gl_max_anisotropy); @@ -1791,7 +1800,7 @@ static void M_Options_Key (int k, char ascii) } } -#define OPTIONS_EFFECTS_ITEMS 35 +#define OPTIONS_EFFECTS_ITEMS 36 static int options_effects_cursor; @@ -1808,8 +1817,9 @@ extern cvar_t cl_stainmaps_clearonload; extern cvar_t r_explosionclip; extern cvar_t r_coronas; extern cvar_t gl_flashblend; -extern cvar_t cl_beams_polygon; -extern cvar_t cl_beams_relative; +extern cvar_t cl_beams_polygons; +extern cvar_t cl_beams_quakepositionhack; +extern cvar_t cl_beams_instantaimhack; extern cvar_t cl_beams_lightatend; extern cvar_t r_lightningbeam_thickness; extern cvar_t r_lightningbeam_scroll; @@ -1843,7 +1853,8 @@ static void M_Menu_Options_Effects_AdjustSliders (int dir) else if (options_effects_cursor == optnum++) Cvar_SetValueQuick (&cl_particles_blood_alpha, bound(0.2, cl_particles_blood_alpha.value + dir * 0.1, 1)); else if (options_effects_cursor == optnum++) Cvar_SetValueQuick (&cl_particles_blood_bloodhack, !cl_particles_blood_bloodhack.integer); else if (options_effects_cursor == optnum++) Cvar_SetValueQuick (&cl_beams_polygons, !cl_beams_polygons.integer); - else if (options_effects_cursor == optnum++) Cvar_SetValueQuick (&cl_beams_relative, !cl_beams_relative.integer); + else if (options_effects_cursor == optnum++) Cvar_SetValueQuick (&cl_beams_instantaimhack, !cl_beams_instantaimhack.integer); + else if (options_effects_cursor == optnum++) Cvar_SetValueQuick (&cl_beams_quakepositionhack, !cl_beams_quakepositionhack.integer); else if (options_effects_cursor == optnum++) Cvar_SetValueQuick (&cl_beams_lightatend, !cl_beams_lightatend.integer); else if (options_effects_cursor == optnum++) Cvar_SetValueQuick (&r_lightningbeam_thickness, bound(1, r_lightningbeam_thickness.integer + dir, 10)); else if (options_effects_cursor == optnum++) Cvar_SetValueQuick (&r_lightningbeam_scroll, bound(0, r_lightningbeam_scroll.integer + dir, 10)); @@ -1895,8 +1906,9 @@ static void M_Options_Effects_Draw (void) M_Options_PrintCheckbox(" Blood", true, cl_particles_blood.integer); M_Options_PrintSlider( " Blood Opacity", true, cl_particles_blood_alpha.value, 0.2, 1); M_Options_PrintCheckbox("Force New Blood Effect", true, cl_particles_blood_bloodhack.integer); - M_Options_PrintCheckbox(" Lightning Polygons", true, cl_beams_polygons.integer); - M_Options_PrintCheckbox("Lightning Smooth Sweep", true, cl_beams_relative.integer); + M_Options_PrintCheckbox(" Polygon Lightning", true, cl_beams_polygons.integer); + M_Options_PrintCheckbox("Smooth Sweep Lightning", true, cl_beams_instantaimhack.integer); + M_Options_PrintCheckbox(" Waist-level Lightning", true, cl_beams_quakepositionhack.integer); M_Options_PrintCheckbox(" Lightning End Light", true, cl_beams_lightatend.integer); M_Options_PrintSlider( " Lightning Thickness", cl_beams_polygons.integer, r_lightningbeam_thickness.integer, 1, 10); M_Options_PrintSlider( " Lightning Scroll", cl_beams_polygons.integer, r_lightningbeam_scroll.integer, 0, 10); @@ -4407,7 +4419,7 @@ static void M_ServerList_Key(int k, char ascii) //============================================================================= /* Menu Subsystem */ -static void M_Keydown(int key, char ascii); +static void M_KeyEvent(int key, char ascii, qboolean downevent); static void M_Draw(void); void M_ToggleMenu_f(void); static void M_Shutdown(void); @@ -4639,8 +4651,10 @@ void M_Draw (void) } -void M_Keydown (int key, char ascii) +void M_KeyEvent (int key, char ascii, qboolean downevent) { + if (!downevent) + return; switch (m_state) { case m_none: @@ -4753,6 +4767,7 @@ mfunction_t *PRVM_ED_FindFunction(const char *); #define M_F_INIT "m_init" #define M_F_KEYDOWN "m_keydown" +#define M_F_KEYUP "m_keyup" #define M_F_DRAW "m_draw" // normal menu names (rest) #define M_F_TOGGLE "m_toggle" @@ -4773,6 +4788,7 @@ static qboolean m_displayed; static int m_numrequiredfunc = sizeof(m_required_func) / sizeof(char*); static func_t m_draw, m_keydown; +static mfunction_t *m_keyup; void MR_SetRouting (qboolean forceold); @@ -4808,7 +4824,7 @@ void MP_Error(const char *format, ...) Host_AbortCurrentFrame(); } -void MP_Keydown (int key, char ascii) +void MP_KeyEvent (int key, char ascii, qboolean downevent) { PRVM_Begin; PRVM_SetProg(PRVM_MENUPROG); @@ -4819,7 +4835,10 @@ void MP_Keydown (int key, char ascii) // pass key prog->globals.generic[OFS_PARM0] = (float) key; prog->globals.generic[OFS_PARM1] = (float) ascii; - PRVM_ExecuteProgram(m_keydown, M_F_KEYDOWN"(float key, float ascii) required\n"); + if (downevent) + PRVM_ExecuteProgram(m_keydown, M_F_KEYDOWN"(float key, float ascii) required\n"); + else if (m_keyup) + PRVM_ExecuteProgram((func_t)(m_keyup - prog->functions), M_F_KEYUP"(float key, float ascii) required\n"); PRVM_End; } @@ -4912,6 +4931,7 @@ void MP_Init (void) // set m_draw and m_keydown m_draw = (func_t) (PRVM_ED_FindFunction(M_F_DRAW) - prog->functions); m_keydown = (func_t) (PRVM_ED_FindFunction(M_F_KEYDOWN) - prog->functions); + m_keyup = PRVM_ED_FindFunction(M_F_KEYUP); #ifdef NG_MENU m_displayed = false; @@ -4936,7 +4956,7 @@ void MP_Restart(void) static cvar_t forceqmenu = { 0, "forceqmenu", "0", "enables the quake menu instead of the quakec menu.dat (if present)" }; -void (*MR_Keydown) (int key, char ascii); +void (*MR_KeyEvent) (int key, char ascii, qboolean downevent); void (*MR_Draw) (void); void (*MR_ToggleMenu_f) (void); void (*MR_Shutdown) (void); @@ -4949,7 +4969,7 @@ void MR_SetRouting(qboolean forceold) if(!FS_FileExists(M_PROG_FILENAME) || forceqmenu.integer || forceold) { // set menu router function pointers - MR_Keydown = M_Keydown; + MR_KeyEvent = M_KeyEvent; MR_Draw = M_Draw; MR_ToggleMenu_f = M_ToggleMenu_f; MR_Shutdown = M_Shutdown; @@ -4966,7 +4986,7 @@ void MR_SetRouting(qboolean forceold) else { // set menu router function pointers - MR_Keydown = MP_Keydown; + MR_KeyEvent = MP_KeyEvent; MR_Draw = MP_Draw; MR_ToggleMenu_f = MP_ToggleMenu_f; MR_Shutdown = MP_Shutdown;