]> git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - menu.c
the record command now disconnects you if starting a new map, this fixes a crash...
[xonotic/darkplaces.git] / menu.c
diff --git a/menu.c b/menu.c
index f4e493a7ea3639b6a067e219ef821cfa4800295a..e9597350fafabec523c47ea31fc3fb1a8e17a9a0 100644 (file)
--- a/menu.c
+++ b/menu.c
@@ -1976,7 +1976,7 @@ static void M_Options_Effects_Key (int k, char ascii)
 }
 
 
-#define        OPTIONS_GRAPHICS_ITEMS  19
+#define        OPTIONS_GRAPHICS_ITEMS  20
 
 static int options_graphics_cursor;
 
@@ -1999,6 +1999,7 @@ extern cvar_t r_bloom_colorscale;
 extern cvar_t r_bloom_colorsubtract;
 extern cvar_t r_bloom_colorexponent;
 extern cvar_t r_bloom_blur;
+extern cvar_t r_bloom_brighten;
 extern cvar_t r_bloom_resolution;
 extern cvar_t r_hdr;
 extern cvar_t r_hdr_scenebrightness;
@@ -2028,6 +2029,7 @@ static void M_Menu_Options_Graphics_AdjustSliders (int dir)
        else if (options_graphics_cursor == optnum++) Cvar_SetValueQuick (&r_bloom_colorscale,                      bound(0.0625, r_bloom_colorscale.value + dir * 0.0625, 1));
        else if (options_graphics_cursor == optnum++) Cvar_SetValueQuick (&r_bloom_colorsubtract,                   bound(0, r_bloom_colorsubtract.value + dir * 0.0625, 1-0.0625));
        else if (options_graphics_cursor == optnum++) Cvar_SetValueQuick (&r_bloom_colorexponent,                   bound(1, r_bloom_colorexponent.value *= (dir > 0 ? 2 : 0.5), 8));
+       else if (options_graphics_cursor == optnum++) Cvar_SetValueQuick (&r_bloom_brighten,                        bound(1, r_bloom_brighten.value + dir * 0.0625, 4));
        else if (options_graphics_cursor == optnum++) Cvar_SetValueQuick (&r_bloom_blur,                            bound(1, r_bloom_blur.value + dir * 1, 16));
        else if (options_graphics_cursor == optnum++) Cvar_SetValueQuick (&r_bloom_resolution,                      bound(64, r_bloom_resolution.value + dir * 64, 2048));
        else if (options_graphics_cursor == optnum++) Cvar_SetValueQuick (&gl_picmip,                               bound(0, gl_picmip.value - dir, 3));
@@ -2066,7 +2068,7 @@ static void M_Options_Graphics_Draw (void)
        M_Options_PrintSlider(  "      Bloom Color Scale", r_hdr.integer || r_bloom.integer, r_bloom_colorscale.value, 0.0625, 1);
        M_Options_PrintSlider(  "   Bloom Color Subtract", r_hdr.integer || r_bloom.integer, r_bloom_colorsubtract.value, 0, 1-0.0625);
        M_Options_PrintSlider(  "   Bloom Color Exponent", r_hdr.integer || r_bloom.integer, r_bloom_colorexponent.value, 1, 8);
-       M_Options_PrintSlider(  "        Bloom Intensity", r_hdr.integer || r_bloom.integer, r_bloom_colorscale.value, 0.125, 4);
+       M_Options_PrintSlider(  "        Bloom Intensity", r_hdr.integer || r_bloom.integer, r_bloom_brighten.value, 1, 4);
        M_Options_PrintSlider(  "             Bloom Blur", r_hdr.integer || r_bloom.integer, r_bloom_blur.value, 1, 16);
        M_Options_PrintSlider(  "       Bloom Resolution", r_hdr.integer || r_bloom.integer, r_bloom_resolution.value, 64, 2048);
        M_Options_PrintSlider(  "        Texture Quality", true, gl_picmip.value, 3, 0);
@@ -4814,22 +4816,13 @@ void M_Restart(void)
 
 //============================================================================
 // Menu prog handling
-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"
-#define M_F_SHUTDOWN   "m_shutdown"
 
 static char *m_required_func[] = {
-M_F_INIT,
-M_F_KEYDOWN,
-M_F_DRAW,
-M_F_TOGGLE,
-M_F_SHUTDOWN,
+"m_init",
+"m_keydown",
+"m_draw",
+"m_toggle",
+"m_shutdown",
 };
 
 #ifdef NG_MENU
@@ -4838,9 +4831,6 @@ 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);
 
 void MP_Error(const char *format, ...) DP_FUNC_PRINTF(1);
@@ -4881,16 +4871,13 @@ void MP_KeyEvent (int key, char ascii, qboolean downevent)
        PRVM_Begin;
        PRVM_SetProg(PRVM_MENUPROG);
 
-       // set time
-       *prog->time = realtime;
-
        // pass key
        prog->globals.generic[OFS_PARM0] = (float) key;
        prog->globals.generic[OFS_PARM1] = (float) ascii;
        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_ExecuteProgram(prog->funcoffsets.m_keydown,"m_keydown(float key, float ascii) required");
+       else if (prog->funcoffsets.m_keyup)
+               PRVM_ExecuteProgram(prog->funcoffsets.m_keyup,"m_keyup(float key, float ascii) required");
 
        PRVM_End;
 }
@@ -4900,10 +4887,7 @@ void MP_Draw (void)
        PRVM_Begin;
        PRVM_SetProg(PRVM_MENUPROG);
 
-       // set time
-       *prog->time = realtime;
-
-       PRVM_ExecuteProgram(m_draw,"");
+       PRVM_ExecuteProgram(prog->funcoffsets.m_draw,"m_draw() required");
 
        PRVM_End;
 }
@@ -4913,17 +4897,14 @@ void MP_ToggleMenu_f (void)
        PRVM_Begin;
        PRVM_SetProg(PRVM_MENUPROG);
 
-       // set time
-       *prog->time = realtime;
-
 #ifdef NG_MENU
        m_displayed = !m_displayed;
        if( m_displayed )
-               PRVM_ExecuteProgram((func_t) (PRVM_ED_FindFunction(M_F_DISPLAY) - prog->functions),"");
+               PRVM_ExecuteProgram(prog->funcoffsets.m_display,"m_display() required");
        else
-               PRVM_ExecuteProgram((func_t) (PRVM_ED_FindFunction(M_F_HIDE) - prog->functions),"");
+               PRVM_ExecuteProgram(prog->funcoffsets.m_hide,"m_hide() required");
 #else
-       PRVM_ExecuteProgram((func_t) (PRVM_ED_FindFunction(M_F_TOGGLE) - prog->functions),"");
+       PRVM_ExecuteProgram(prog->funcoffsets.m_toggle,"m_toggle() required");
 #endif
 
        PRVM_End;
@@ -4934,10 +4915,7 @@ void MP_Shutdown (void)
        PRVM_Begin;
        PRVM_SetProg(PRVM_MENUPROG);
 
-       // set time
-       *prog->time = realtime;
-
-       PRVM_ExecuteProgram((func_t) (PRVM_ED_FindFunction(M_F_SHUTDOWN) - prog->functions),"");
+       PRVM_ExecuteProgram(prog->funcoffsets.m_shutdown,"m_shutdown() required");
 
        // reset key_dest
        key_dest = key_game;
@@ -4978,22 +4956,14 @@ void MP_Init (void)
        // allocate the mempools
        prog->progs_mempool = Mem_AllocPool(M_PROG_FILENAME, 0, NULL);
 
-       PRVM_LoadProgs(M_PROG_FILENAME, m_numrequiredfunc, m_required_func, 0, NULL);
-
-       // 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);
+       PRVM_LoadProgs(M_PROG_FILENAME, m_numrequiredfunc, m_required_func, 0, NULL, 0, NULL);
 
 #ifdef NG_MENU
        m_displayed = false;
 #endif
 
-       // set time
-       *prog->time = realtime;
-
        // call the prog init
-       PRVM_ExecuteProgram((func_t) (PRVM_ED_FindFunction(M_F_INIT) - prog->functions),"");
+       PRVM_ExecuteProgram(prog->funcoffsets.m_init,"m_init() required");
 
        PRVM_End;
 }