X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fdarkplaces.git;a=blobdiff_plain;f=menu.c;h=b5270e285096a52f2fa33db0ee9d6e7ee2258daf;hp=eb741b2a2437a9033bebcd1939d7b01de28e342a;hb=ecfa97404a1e344f1617cca6a22863652cd9774e;hpb=6fec031c43332c784db51efa5a98061a230ecc9b diff --git a/menu.c b/menu.c index eb741b2a..b5270e28 100644 --- a/menu.c +++ b/menu.c @@ -18,7 +18,9 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "quakedef.h" +#ifdef CONFIG_CD #include "cdaudio.h" +#endif #include "image.h" #include "progsvm.h" @@ -29,6 +31,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #define TYPE_BOTH 3 static cvar_t forceqmenu = { 0, "forceqmenu", "0", "enables the quake menu instead of the quakec menu.dat (if present)" }; +static cvar_t menu_progs = { 0, "menu_progs", "menu.dat", "name of quakec menu.dat file" }; static int NehGameType; @@ -1698,7 +1701,9 @@ static void M_Options_Draw (void) M_Options_PrintSlider( " Brightness", true, v_contrast.value, 1, 2); M_Options_PrintSlider( " Gamma", true, v_gamma.value, 0.5, 3); M_Options_PrintSlider( " Sound Volume", snd_initialized.integer, volume.value, 0, 1); +#ifdef CONFIG_CD M_Options_PrintSlider( " Music Volume", cdaudioinitialized.integer, bgmvolume.value, 0, 1); +#endif M_Options_PrintCommand( " Customize Effects", true); M_Options_PrintCommand( " Effects: Quake", true); M_Options_PrintCommand( " Effects: Normal", true); @@ -1757,16 +1762,16 @@ static void M_Options_Key (int k, int ascii) M_Menu_Options_Graphics_f (); break; case 22: // Lighting: Flares - Cbuf_AddText("r_coronas 1;gl_flashblend 1;r_shadow_gloss 0;r_shadow_realtime_dlight 0;r_shadow_realtime_dlight_shadows 0;r_shadow_realtime_world 0;r_shadow_realtime_world_lightmaps 0;r_shadow_realtime_world_shadows 1;r_bloom 0;r_hdr 0"); + Cbuf_AddText("r_coronas 1;gl_flashblend 1;r_shadow_gloss 0;r_shadow_realtime_dlight 0;r_shadow_realtime_dlight_shadows 0;r_shadow_realtime_world 0;r_shadow_realtime_world_lightmaps 0;r_shadow_realtime_world_shadows 1;r_bloom 0"); break; case 23: // Lighting: Normal - Cbuf_AddText("r_coronas 1;gl_flashblend 0;r_shadow_gloss 1;r_shadow_realtime_dlight 1;r_shadow_realtime_dlight_shadows 0;r_shadow_realtime_world 0;r_shadow_realtime_world_lightmaps 0;r_shadow_realtime_world_shadows 1;r_bloom 0;r_hdr 0"); + Cbuf_AddText("r_coronas 1;gl_flashblend 0;r_shadow_gloss 1;r_shadow_realtime_dlight 1;r_shadow_realtime_dlight_shadows 0;r_shadow_realtime_world 0;r_shadow_realtime_world_lightmaps 0;r_shadow_realtime_world_shadows 1;r_bloom 0"); break; case 24: // Lighting: High - Cbuf_AddText("r_coronas 1;gl_flashblend 0;r_shadow_gloss 1;r_shadow_realtime_dlight 1;r_shadow_realtime_dlight_shadows 1;r_shadow_realtime_world 0;r_shadow_realtime_world_lightmaps 0;r_shadow_realtime_world_shadows 1;r_bloom 1;r_hdr 0"); + Cbuf_AddText("r_coronas 1;gl_flashblend 0;r_shadow_gloss 1;r_shadow_realtime_dlight 1;r_shadow_realtime_dlight_shadows 1;r_shadow_realtime_world 0;r_shadow_realtime_world_lightmaps 0;r_shadow_realtime_world_shadows 1;r_bloom 1"); break; case 25: // Lighting: Full - Cbuf_AddText("r_coronas 1;gl_flashblend 0;r_shadow_gloss 1;r_shadow_realtime_dlight 1;r_shadow_realtime_dlight_shadows 1;r_shadow_realtime_world 1;r_shadow_realtime_world_lightmaps 0;r_shadow_realtime_world_shadows 1;r_bloom 1;r_hdr 0"); + Cbuf_AddText("r_coronas 1;gl_flashblend 0;r_shadow_gloss 1;r_shadow_realtime_dlight 1;r_shadow_realtime_dlight_shadows 1;r_shadow_realtime_world 1;r_shadow_realtime_world_lightmaps 0;r_shadow_realtime_world_shadows 1;r_bloom 1"); break; case 26: M_Menu_ModList_f (); @@ -3201,6 +3206,7 @@ static int M_ChooseQuitMessage(int request) case GAME_NORMAL: case GAME_HIPNOTIC: case GAME_ROGUE: + case GAME_QUOTH: case GAME_NEHAHRA: case GAME_DEFEATINDETAIL2: if (request-- == 0) return M_QuitMessage("Are you gonna quit","this game just like","everything else?",NULL,NULL,NULL,NULL,NULL); @@ -3936,6 +3942,7 @@ static gameinfo_t gamelist[] = {GAME_NORMAL, &sharewarequakegame, ®isteredquakegame}, {GAME_HIPNOTIC, &hipnoticgame, &hipnoticgame}, {GAME_ROGUE, &roguegame, &roguegame}, + {GAME_QUOTH, &sharewarequakegame, ®isteredquakegame}, {GAME_NEHAHRA, &nehahragame, &nehahragame}, {GAME_TRANSFUSION, &transfusiongame, &transfusiongame}, {GAME_GOODVSBAD2, &goodvsbad2game, &goodvsbad2game}, @@ -5272,8 +5279,8 @@ static void MP_KeyEvent (int key, int ascii, qboolean downevent) prvm_prog_t *prog = MVM_prog; // pass key - prog->globals.generic[OFS_PARM0] = (float) key; - prog->globals.generic[OFS_PARM1] = (float) ascii; + prog->globals.fp[OFS_PARM0] = (prvm_vec_t) key; + prog->globals.fp[OFS_PARM1] = (prvm_vec_t) ascii; if (downevent) prog->ExecuteProgram(prog, PRVM_menufunction(m_keydown),"m_keydown(float key, float ascii) required"); else if (PRVM_menufunction(m_keyup)) @@ -5300,6 +5307,8 @@ static void MP_Draw (void) // FIXME: this really shouldnt error out lest we have a very broken refdef state...? // or does it kill the server too? + PRVM_G_FLOAT(OFS_PARM0) = vid.width; + PRVM_G_FLOAT(OFS_PARM1) = vid.height; prog->ExecuteProgram(prog, PRVM_menufunction(m_draw),"m_draw() required"); // TODO: imo this should be moved into scene, too [1/27/2008 Andreas] @@ -5312,8 +5321,8 @@ static void MP_ToggleMenu(int mode) { prvm_prog_t *prog = MVM_prog; - prog->globals.generic[OFS_PARM0] = (float) mode; - prog->ExecuteProgram(prog, PRVM_menufunction(m_toggle),"m_toggle() required"); + prog->globals.fp[OFS_PARM0] = (prvm_vec_t) mode; + prog->ExecuteProgram(prog, PRVM_menufunction(m_toggle),"m_toggle(float mode) required"); } static void MP_NewMap(void) @@ -5326,8 +5335,8 @@ static void MP_NewMap(void) static void MP_Shutdown (void) { prvm_prog_t *prog = MVM_prog; - - prog->ExecuteProgram(prog, PRVM_menufunction(m_shutdown),"m_shutdown() required"); + if (prog->loaded) + prog->ExecuteProgram(prog, PRVM_menufunction(m_shutdown),"m_shutdown() required"); // reset key_dest key_dest = key_game; @@ -5362,9 +5371,9 @@ static void MP_Init (void) prog->ExecuteProgram = MVM_ExecuteProgram; // allocate the mempools - prog->progs_mempool = Mem_AllocPool(M_PROG_FILENAME, 0, NULL); + prog->progs_mempool = Mem_AllocPool(menu_progs.string, 0, NULL); - PRVM_Prog_Load(prog, M_PROG_FILENAME, m_numrequiredfunc, m_required_func, m_numrequiredfields, m_required_fields, m_numrequiredglobals, m_required_globals); + PRVM_Prog_Load(prog, menu_progs.string, NULL, 0, m_numrequiredfunc, m_required_func, m_numrequiredfields, m_required_fields, m_numrequiredglobals, m_required_globals); // note: OP_STATE is not supported by menu qc, we don't even try to detect // it here @@ -5387,7 +5396,7 @@ void (*MR_NewMap) (void); void MR_SetRouting(qboolean forceold) { // if the menu prog isnt available or forceqmenu ist set, use the old menu - if(!FS_FileExists(M_PROG_FILENAME) || forceqmenu.integer || forceold) + if(!FS_FileExists(menu_progs.string) || forceqmenu.integer || forceold) { // set menu router function pointers MR_KeyEvent = M_KeyEvent; @@ -5430,6 +5439,7 @@ void MR_Init_Commands(void) // set router console commands Cvar_RegisterVariable (&forceqmenu); Cvar_RegisterVariable (&menu_options_colorcontrol_correctionvalue); + Cvar_RegisterVariable (&menu_progs); Cmd_AddCommand ("menu_restart",MR_Restart, "restart menu system (reloads menu.dat)"); Cmd_AddCommand ("togglemenu", Call_MR_ToggleMenu_f, "opens or closes menu"); }