]> git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - menu.c
disable canjump check until it's fixed
[xonotic/darkplaces.git] / menu.c
diff --git a/menu.c b/menu.c
index 6ffb2c90e3ce5969ecab9912bfa3935992a0b6ee..f7eb4d393b989fb3492b1c890eb190fb7d0ff665 100644 (file)
--- 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;