X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=menu.c;h=caaf255d909e62b4f397682cd617d35f17dd08a5;hb=9f4157a2c414ad09053f4230cb6f6132b8529092;hp=b0b5b5cc2ae25208adf1ada79fd59a0dcb68bf5e;hpb=c3c4739040e89a6a11f15ee0c509c7e970623438;p=xonotic%2Fdarkplaces.git diff --git a/menu.c b/menu.c index b0b5b5cc..caaf255d 100644 --- a/menu.c +++ b/menu.c @@ -40,6 +40,7 @@ void M_Menu_Main_f (void); void M_Menu_Setup_f (void); void M_Menu_Options_f (void); void M_Menu_Options_Effects_f (void); + void M_Menu_Options_Graphics_f (void); void M_Menu_Options_ColorControl_f (void); void M_Menu_Keys_f (void); void M_Menu_Video_f (void); @@ -57,6 +58,7 @@ void M_Main_Draw (void); void M_Setup_Draw (void); void M_Options_Draw (void); void M_Options_Effects_Draw (void); + void M_Options_Graphics_Draw (void); void M_Options_ColorControl_Draw (void); void M_Keys_Draw (void); void M_Video_Draw (void); @@ -74,6 +76,7 @@ void M_Main_Key (int key, char ascii); void M_Setup_Key (int key, char ascii); void M_Options_Key (int key, char ascii); void M_Options_Effects_Key (int key, char ascii); + void M_Options_Graphics_Key (int key, char ascii); void M_Options_ColorControl_Key (int key, char ascii); void M_Keys_Key (int key, char ascii); void M_Video_Key (int key, char ascii); @@ -317,7 +320,7 @@ void M_Demo_Key (int k, char ascii) break; case K_ENTER: - S_LocalSound ("misc/menu2.wav"); + S_LocalSound ("misc/menu2.wav", true); m_state = m_none; key_dest = key_game; Cbuf_AddText (va ("playdemo %s\n", NehahraDemos[demo_cursor].name)); @@ -325,7 +328,7 @@ void M_Demo_Key (int k, char ascii) case K_UPARROW: case K_LEFTARROW: - S_LocalSound ("misc/menu1.wav"); + S_LocalSound ("misc/menu1.wav", true); demo_cursor--; if (demo_cursor < 0) demo_cursor = NumberOfNehahraDemos-1; @@ -333,7 +336,7 @@ void M_Demo_Key (int k, char ascii) case K_DOWNARROW: case K_RIGHTARROW: - S_LocalSound ("misc/menu1.wav"); + S_LocalSound ("misc/menu1.wav", true); demo_cursor++; if (demo_cursor >= NumberOfNehahraDemos) demo_cursor = 0; @@ -417,13 +420,13 @@ void M_Main_Key (int key, char ascii) break; case K_DOWNARROW: - S_LocalSound ("misc/menu1.wav"); + S_LocalSound ("misc/menu1.wav", true); if (++m_main_cursor >= MAIN_ITEMS) m_main_cursor = 0; break; case K_UPARROW: - S_LocalSound ("misc/menu1.wav"); + S_LocalSound ("misc/menu1.wav", true); if (--m_main_cursor < 0) m_main_cursor = MAIN_ITEMS - 1; break; @@ -616,13 +619,13 @@ void M_SinglePlayer_Key (int key, char ascii) break; case K_DOWNARROW: - S_LocalSound ("misc/menu1.wav"); + S_LocalSound ("misc/menu1.wav", true); if (++m_singleplayer_cursor >= SINGLEPLAYER_ITEMS) m_singleplayer_cursor = 0; break; case K_UPARROW: - S_LocalSound ("misc/menu1.wav"); + S_LocalSound ("misc/menu1.wav", true); if (--m_singleplayer_cursor < 0) m_singleplayer_cursor = SINGLEPLAYER_ITEMS - 1; break; @@ -764,7 +767,7 @@ void M_Load_Key (int k, char ascii) break; case K_ENTER: - S_LocalSound ("misc/menu2.wav"); + S_LocalSound ("misc/menu2.wav", true); if (!loadable[load_cursor]) return; m_state = m_none; @@ -776,7 +779,7 @@ void M_Load_Key (int k, char ascii) case K_UPARROW: case K_LEFTARROW: - S_LocalSound ("misc/menu1.wav"); + S_LocalSound ("misc/menu1.wav", true); load_cursor--; if (load_cursor < 0) load_cursor = MAX_SAVEGAMES-1; @@ -784,7 +787,7 @@ void M_Load_Key (int k, char ascii) case K_DOWNARROW: case K_RIGHTARROW: - S_LocalSound ("misc/menu1.wav"); + S_LocalSound ("misc/menu1.wav", true); load_cursor++; if (load_cursor >= MAX_SAVEGAMES) load_cursor = 0; @@ -809,7 +812,7 @@ void M_Save_Key (int k, char ascii) case K_UPARROW: case K_LEFTARROW: - S_LocalSound ("misc/menu1.wav"); + S_LocalSound ("misc/menu1.wav", true); load_cursor--; if (load_cursor < 0) load_cursor = MAX_SAVEGAMES-1; @@ -817,7 +820,7 @@ void M_Save_Key (int k, char ascii) case K_DOWNARROW: case K_RIGHTARROW: - S_LocalSound ("misc/menu1.wav"); + S_LocalSound ("misc/menu1.wav", true); load_cursor++; if (load_cursor >= MAX_SAVEGAMES) load_cursor = 0; @@ -867,13 +870,13 @@ void M_MultiPlayer_Key (int key, char ascii) break; case K_DOWNARROW: - S_LocalSound ("misc/menu1.wav"); + S_LocalSound ("misc/menu1.wav", true); if (++m_multiplayer_cursor >= MULTIPLAYER_ITEMS) m_multiplayer_cursor = 0; break; case K_UPARROW: - S_LocalSound ("misc/menu1.wav"); + S_LocalSound ("misc/menu1.wav", true); if (--m_multiplayer_cursor < 0) m_multiplayer_cursor = MULTIPLAYER_ITEMS - 1; break; @@ -1038,14 +1041,14 @@ void M_Setup_Key (int k, char ascii) break; case K_UPARROW: - S_LocalSound ("misc/menu1.wav"); + S_LocalSound ("misc/menu1.wav", true); setup_cursor--; if (setup_cursor < 0) setup_cursor = NUM_SETUP_CMDS-1; break; case K_DOWNARROW: - S_LocalSound ("misc/menu1.wav"); + S_LocalSound ("misc/menu1.wav", true); setup_cursor++; if (setup_cursor >= NUM_SETUP_CMDS) setup_cursor = 0; @@ -1054,7 +1057,7 @@ void M_Setup_Key (int k, char ascii) case K_LEFTARROW: if (setup_cursor < 1) return; - S_LocalSound ("misc/menu3.wav"); + S_LocalSound ("misc/menu3.wav", true); if (setup_cursor == 1) setup_top = setup_top - 1; if (setup_cursor == 2) @@ -1071,7 +1074,7 @@ void M_Setup_Key (int k, char ascii) if (setup_cursor < 1) return; forward: - S_LocalSound ("misc/menu3.wav"); + S_LocalSound ("misc/menu3.wav", true); if (setup_cursor == 1) setup_top = setup_top + 1; if (setup_cursor == 2) @@ -1180,7 +1183,6 @@ void M_Menu_Options_f (void) } extern cvar_t snd_staticvolume; -extern cvar_t gl_delayfinish; extern cvar_t slowmo; extern dllhandle_t jpeg_dll; extern cvar_t gl_texture_anisotropy; @@ -1188,9 +1190,9 @@ extern cvar_t gl_texture_anisotropy; void M_Menu_Options_AdjustSliders (int dir) { int optnum; - S_LocalSound ("misc/menu3.wav"); + S_LocalSound ("misc/menu3.wav", true); - optnum = 6; + optnum = 7; if (options_cursor == optnum++) Cvar_SetValueQuick (&vid_conwidth, bound(320, vid_conwidth.value + dir * 64, 2048)); else if (options_cursor == optnum++) @@ -1215,8 +1217,6 @@ void M_Menu_Options_AdjustSliders (int dir) Cvar_SetValueQuick (&gl_combine, !gl_combine.integer); else if (options_cursor == optnum++) Cvar_SetValueQuick (&gl_dither, !gl_dither.integer); - else if (options_cursor == optnum++) - Cvar_SetValueQuick (&gl_delayfinish, !gl_delayfinish.integer); else if (options_cursor == optnum++) Cvar_SetValueQuick (&gl_texture_anisotropy, bound(1, gl_texture_anisotropy.integer + dir, gl_max_anisotropy)); else if (options_cursor == optnum++) @@ -1326,6 +1326,7 @@ void M_Options_Draw (void) M_Options_PrintCommand( " Reset to defaults", true); M_Options_PrintCommand( " Video", true); M_Options_PrintCommand( " Effects", true); + M_Options_PrintCommand( " Graphics", true); M_Options_PrintCommand( " Color Control", true); M_Options_PrintSlider( " 2D Screen Width ", true, vid_conwidth.value, 320, 2048); M_Options_PrintSlider( " 2D Screen Height", true, vid_conheight.value, 240, 1536); @@ -1339,7 +1340,6 @@ void M_Options_Draw (void) M_Options_PrintCheckbox(" Sky", true, r_sky.integer); M_Options_PrintCheckbox(" Texture Combine", true, gl_combine.integer); M_Options_PrintCheckbox(" Dithering", true, gl_dither.integer); - M_Options_PrintCheckbox("Delay gfx (faster)", true, gl_delayfinish.integer); M_Options_PrintSlider( "Anisotropic Filter", gl_support_anisotropy, gl_texture_anisotropy.integer, 1, gl_max_anisotropy); M_Options_PrintSlider( " Game Speed", sv.active, slowmo.value, 0, 5); M_Options_PrintSlider( " CD Music Volume", cdaudioinitialized.integer, bgmvolume.value, 0, 1); @@ -1391,6 +1391,9 @@ void M_Options_Key (int k, char ascii) M_Menu_Options_Effects_f (); break; case 5: + M_Menu_Options_Graphics_f (); + break; + case 6: M_Menu_Options_ColorControl_f (); break; default: @@ -1400,14 +1403,14 @@ void M_Options_Key (int k, char ascii) return; case K_UPARROW: - S_LocalSound ("misc/menu1.wav"); + S_LocalSound ("misc/menu1.wav", true); options_cursor--; if (options_cursor < 0) options_cursor = OPTIONS_ITEMS-1; break; case K_DOWNARROW: - S_LocalSound ("misc/menu1.wav"); + S_LocalSound ("misc/menu1.wav", true); options_cursor++; if (options_cursor >= OPTIONS_ITEMS) options_cursor = 0; @@ -1463,7 +1466,7 @@ extern cvar_t r_lightningbeam_qmbtexture; void M_Menu_Options_Effects_AdjustSliders (int dir) { int optnum; - S_LocalSound ("misc/menu3.wav"); + S_LocalSound ("misc/menu3.wav", true); optnum = 0; if (options_effects_cursor == optnum++) Cvar_SetValueQuick (&r_modellights, bound(0, r_modellights.value + dir, 8)); @@ -1566,14 +1569,14 @@ void M_Options_Effects_Key (int k, char ascii) break; case K_UPARROW: - S_LocalSound ("misc/menu1.wav"); + S_LocalSound ("misc/menu1.wav", true); options_effects_cursor--; if (options_effects_cursor < 0) options_effects_cursor = OPTIONS_EFFECTS_ITEMS-1; break; case K_DOWNARROW: - S_LocalSound ("misc/menu1.wav"); + S_LocalSound ("misc/menu1.wav", true); options_effects_cursor++; if (options_effects_cursor >= OPTIONS_EFFECTS_ITEMS) options_effects_cursor = 0; @@ -1590,7 +1593,103 @@ void M_Options_Effects_Key (int k, char ascii) } +#define OPTIONS_GRAPHICS_ITEMS 7 + +int options_graphics_cursor; + +void M_Menu_Options_Graphics_f (void) +{ + key_dest = key_menu; + m_state = m_options_graphics; + m_entersound = true; +} + +extern cvar_t r_shadow_gloss; +extern cvar_t r_shadow_realtime_dlight; +extern cvar_t r_shadow_realtime_dlight_shadows; +extern cvar_t r_shadow_realtime_world; +extern cvar_t r_shadow_realtime_world_dlightshadows; +extern cvar_t r_shadow_realtime_world_lightmaps; +extern cvar_t r_shadow_realtime_world_shadows; + +void M_Menu_Options_Graphics_AdjustSliders (int dir) +{ + int optnum; + S_LocalSound ("misc/menu3.wav", true); + + optnum = 0; + + if (options_graphics_cursor == optnum++) Cvar_SetValueQuick (&r_shadow_gloss, bound(0, r_shadow_gloss.integer + dir, 2)); + else if (options_graphics_cursor == optnum++) Cvar_SetValueQuick (&r_shadow_realtime_dlight, !r_shadow_realtime_dlight.integer); + else if (options_graphics_cursor == optnum++) Cvar_SetValueQuick (&r_shadow_realtime_dlight_shadows, !r_shadow_realtime_dlight_shadows.integer); + else if (options_graphics_cursor == optnum++) Cvar_SetValueQuick (&r_shadow_realtime_world, !r_shadow_realtime_world.integer); + else if (options_graphics_cursor == optnum++) Cvar_SetValueQuick (&r_shadow_realtime_world_dlightshadows, !r_shadow_realtime_world_dlightshadows.integer); + else if (options_graphics_cursor == optnum++) Cvar_SetValueQuick (&r_shadow_realtime_world_lightmaps, !r_shadow_realtime_world_lightmaps.integer); + else if (options_graphics_cursor == optnum++) Cvar_SetValueQuick (&r_shadow_realtime_world_shadows, !r_shadow_realtime_world_shadows.integer); +} + + +void M_Options_Graphics_Draw (void) +{ + int visible; + cachepic_t *p; + M_Background(320, 200); + + M_DrawPic(16, 4, "gfx/qplaque.lmp"); + p = Draw_CachePic("gfx/p_option.lmp"); + M_DrawPic((320-p->width)/2, 4, "gfx/p_option.lmp"); + + optcursor = options_graphics_cursor; + optnum = 0; + visible = (vid.conheight - 32) / 8; + opty = 32 - bound(0, optcursor - (visible >> 1), max(0, OPTIONS_GRAPHICS_ITEMS - visible)) * 8; + + M_Options_PrintSlider( " Gloss Mode", true, r_shadow_gloss.integer, 0, 2); + M_Options_PrintCheckbox(" RT DLights", true, r_shadow_realtime_dlight.integer); + M_Options_PrintCheckbox(" RT DLight Shadows", true, r_shadow_realtime_dlight_shadows.integer); + M_Options_PrintCheckbox(" RT World", true, r_shadow_realtime_world.integer); + M_Options_PrintCheckbox("RT World DLight Shadows", true, r_shadow_realtime_world_dlightshadows.integer); + M_Options_PrintCheckbox(" RT World Lightmaps", true, r_shadow_realtime_world_lightmaps.integer); + M_Options_PrintCheckbox(" RT World Shadow", true, r_shadow_realtime_world_shadows.integer); +} + + +void M_Options_Graphics_Key (int k, char ascii) +{ + switch (k) + { + case K_ESCAPE: + M_Menu_Options_f (); + break; + + case K_ENTER: + M_Menu_Options_Graphics_AdjustSliders (1); + break; + + case K_UPARROW: + S_LocalSound ("misc/menu1.wav", true); + options_graphics_cursor--; + if (options_graphics_cursor < 0) + options_graphics_cursor = OPTIONS_GRAPHICS_ITEMS-1; + break; + + case K_DOWNARROW: + S_LocalSound ("misc/menu1.wav", true); + options_graphics_cursor++; + if (options_graphics_cursor >= OPTIONS_GRAPHICS_ITEMS) + options_graphics_cursor = 0; + break; + + case K_LEFTARROW: + M_Menu_Options_Graphics_AdjustSliders (-1); + break; + + case K_RIGHTARROW: + M_Menu_Options_Graphics_AdjustSliders (1); + break; + } +} #define OPTIONS_COLORCONTROL_ITEMS 18 @@ -1612,7 +1711,7 @@ void M_Menu_Options_ColorControl_AdjustSliders (int dir) { int optnum; float f; - S_LocalSound ("misc/menu3.wav"); + S_LocalSound ("misc/menu3.wav", true); optnum = 1; if (options_colorcontrol_cursor == optnum++) @@ -1816,14 +1915,14 @@ void M_Options_ColorControl_Key (int k, char ascii) return; case K_UPARROW: - S_LocalSound ("misc/menu1.wav"); + S_LocalSound ("misc/menu1.wav", true); options_colorcontrol_cursor--; if (options_colorcontrol_cursor < 0) options_colorcontrol_cursor = OPTIONS_COLORCONTROL_ITEMS-1; break; case K_DOWNARROW: - S_LocalSound ("misc/menu1.wav"); + S_LocalSound ("misc/menu1.wav", true); options_colorcontrol_cursor++; if (options_colorcontrol_cursor >= OPTIONS_COLORCONTROL_ITEMS) options_colorcontrol_cursor = 0; @@ -2162,7 +2261,7 @@ void M_Keys_Key (int k, char ascii) if (bind_grab) { // defining a key - S_LocalSound ("misc/menu1.wav"); + S_LocalSound ("misc/menu1.wav", true); if (k == K_ESCAPE) { bind_grab = false; @@ -2185,7 +2284,7 @@ void M_Keys_Key (int k, char ascii) case K_LEFTARROW: case K_UPARROW: - S_LocalSound ("misc/menu1.wav"); + S_LocalSound ("misc/menu1.wav", true); do { keys_cursor--; @@ -2197,7 +2296,7 @@ void M_Keys_Key (int k, char ascii) case K_DOWNARROW: case K_RIGHTARROW: - S_LocalSound ("misc/menu1.wav"); + S_LocalSound ("misc/menu1.wav", true); do { keys_cursor++; @@ -2209,7 +2308,7 @@ void M_Keys_Key (int k, char ascii) case K_ENTER: // go into bind mode M_FindKeysForCommand (bindnames[keys_cursor][0], keys); - S_LocalSound ("misc/menu2.wav"); + S_LocalSound ("misc/menu2.wav", true); if (keys[NUMKEYS - 1] != -1) M_UnbindCommand (bindnames[keys_cursor][0]); bind_grab = true; @@ -2217,7 +2316,7 @@ void M_Keys_Key (int k, char ascii) case K_BACKSPACE: // delete bindings case K_DEL: // delete bindings - S_LocalSound ("misc/menu2.wav"); + S_LocalSound ("misc/menu2.wav", true); M_UnbindCommand (bindnames[keys_cursor][0]); break; } @@ -2303,7 +2402,7 @@ void M_Video_Draw (void) void M_Menu_Video_AdjustSliders (int dir) { - S_LocalSound ("misc/menu3.wav"); + S_LocalSound ("misc/menu3.wav", true); switch (video_cursor) { @@ -2345,7 +2444,7 @@ void M_Video_Key (int key, char ascii) Cvar_SetValueQuick(&vid_height, current_vid_height); Cvar_SetValueQuick(&vid_bitsperpixel, current_vid_bitsperpixel); - S_LocalSound ("misc/menu1.wav"); + S_LocalSound ("misc/menu1.wav", true); M_Menu_Options_f (); break; @@ -2363,14 +2462,14 @@ void M_Video_Key (int key, char ascii) break; case K_UPARROW: - S_LocalSound ("misc/menu1.wav"); + S_LocalSound ("misc/menu1.wav", true); video_cursor--; if (video_cursor < 0) video_cursor = VIDEO_ITEMS-1; break; case K_DOWNARROW: - S_LocalSound ("misc/menu1.wav"); + S_LocalSound ("misc/menu1.wav", true); video_cursor++; if (video_cursor >= VIDEO_ITEMS) video_cursor = 0; @@ -2497,6 +2596,12 @@ int M_ChooseQuitMessage(int request) if (request-- == 0) return M_QuitMessage("Your mech here is way more impressive","than your car out there...","Press Y to quit, N to keep fraggin'",NULL,NULL,NULL,NULL,NULL); if (request-- == 0) return M_QuitMessage("Quitting won't reduce your debt","Press Y to quit, N to keep fraggin'",NULL,NULL,NULL,NULL,NULL,NULL); break; + case GAME_OPENQUARTZ: + if (request-- == 0) return M_QuitMessage("There is nothing like free beer!","Press Y to quit, N to stay",NULL,NULL,NULL,NULL,NULL,NULL); + if (request-- == 0) return M_QuitMessage("GNU is not Unix!","Press Y to quit, N to stay",NULL,NULL,NULL,NULL,NULL,NULL); + if (request-- == 0) return M_QuitMessage("You prefer free beer over free speech?","Press Y to quit, N to stay",NULL,NULL,NULL,NULL,NULL,NULL); + if (request-- == 0) return M_QuitMessage("Is OpenQuartz Propaganda?","Press Y to quit, N to stay",NULL,NULL,NULL,NULL,NULL,NULL); + break; default: if (request-- == 0) return M_QuitMessage("Tired of fragging already?",NULL,NULL,NULL,NULL,NULL,NULL,NULL); if (request-- == 0) return M_QuitMessage("Quit now and forfeit your bodycount?",NULL,NULL,NULL,NULL,NULL,NULL,NULL); @@ -2668,14 +2773,14 @@ void M_LanConfig_Key (int key, char ascii) break; case K_UPARROW: - S_LocalSound ("misc/menu1.wav"); + S_LocalSound ("misc/menu1.wav", true); lanConfig_cursor--; if (lanConfig_cursor < 0) lanConfig_cursor = NUM_LANCONFIG_CMDS-1; break; case K_DOWNARROW: - S_LocalSound ("misc/menu1.wav"); + S_LocalSound ("misc/menu1.wav", true); lanConfig_cursor++; if (lanConfig_cursor >= NUM_LANCONFIG_CMDS) lanConfig_cursor = 0; @@ -2964,6 +3069,7 @@ level_t transfusionlevels[] = {"e1m2", "Wrong Side of the Tracks"}, {"e1m7", "Altar of Stone"}, {"e2m8", "The Lair of Shial"}, + {"e3m1", "Ghost Town"}, {"e3m7", "The Pit of Cerberus"}, {"e4m1", "Butchery Loves Company"}, {"e4m7", "In the Flesh"}, @@ -2994,6 +3100,7 @@ level_t transfusionlevels[] = {"qbb1", "The Confluence"}, {"qbb2", "KathartiK"}, {"qbb3", "Caleb's Woodland Retreat"}, + {"zoo", "Zoo"}, {"dranzbb6", "Black Coffee"}, {"fragm", "Frag'M"}, @@ -3006,12 +3113,12 @@ level_t transfusionlevels[] = episode_t transfusionepisodes[] = { {"Blood", 0, 8}, - {"Blood Single Player", 8, 9}, - {"Plasma Pack", 17, 6}, - {"Cryptic Passage", 23, 2}, - {"Blood 2", 25, 5}, - {"Transfusion", 30, 8}, - {"Conversions", 38, 6} + {"Blood Single Player", 8, 10}, + {"Plasma Pack", 18, 6}, + {"Cryptic Passage", 24, 2}, + {"Blood 2", 26, 5}, + {"Transfusion", 31, 9}, + {"Conversions", 40, 6} }; level_t goodvsbad2levels[] = @@ -3048,6 +3155,32 @@ episode_t battlemechepisodes[] = {"Time for Battle", 0, 7}, }; +level_t openquartzlevels[] = +{ + {"start", "Welcome to Openquartz"}, + + {"void1", "The center of nowhere"}, // 1 + {"void2", "The place with no name"}, + {"void3", "The lost supply base"}, + {"void4", "Past the outer limits"}, + {"void5", "Into the nonexistance"}, + {"void6", "Void walk"}, + + {"vtest", "Warp Central"}, + {"box", "The deathmatch box"}, + {"bunkers", "Void command"}, + {"house", "House of chaos"}, + {"office", "Overnight office kill"}, + {"am1", "The nameless chambers"}, +}; + +episode_t openquartzepisodes[] = +{ + {"Single Player", 0, 1}, + {"Void Deathmatch", 1, 6}, + {"Contrib", 7, 6}, +}; + gamelevels_t sharewarequakegame = {"Shareware Quake", quakelevels, quakeepisodes, 2}; gamelevels_t registeredquakegame = {"Quake", quakelevels, quakeepisodes, 7}; gamelevels_t hipnoticgame = {"Scourge of Armagon", hipnoticlevels, hipnoticepisodes, 6}; @@ -3056,6 +3189,7 @@ gamelevels_t nehahragame = {"Nehahra", nehahralevels, nehahraepisodes, 4}; gamelevels_t transfusiongame = {"Transfusion", transfusionlevels, transfusionepisodes, 7}; gamelevels_t goodvsbad2game = {"Good Vs. Bad 2", goodvsbad2levels, goodvsbad2episodes, 1}; gamelevels_t battlemechgame = {"Battlemech", battlemechlevels, battlemechepisodes, 1}; +gamelevels_t openquartzgame = {"OpenQuartz", openquartzlevels, openquartzepisodes, 3}; typedef struct { @@ -3074,6 +3208,7 @@ gameinfo_t gamelist[] = {GAME_TRANSFUSION, &transfusiongame, &transfusiongame}, {GAME_GOODVSBAD2, &goodvsbad2game, &goodvsbad2game}, {GAME_BATTLEMECH, &battlemechgame, &battlemechgame}, + {GAME_OPENQUARTZ, &openquartzgame, &openquartzgame}, {-1, &sharewarequakegame, ®isteredquakegame} // final fallback }; @@ -3400,14 +3535,14 @@ void M_GameOptions_Key (int key, char ascii) break; case K_UPARROW: - S_LocalSound ("misc/menu1.wav"); + S_LocalSound ("misc/menu1.wav", true); gameoptions_cursor--; if (gameoptions_cursor < 0) gameoptions_cursor = NUM_GAMEOPTIONS-1; break; case K_DOWNARROW: - S_LocalSound ("misc/menu1.wav"); + S_LocalSound ("misc/menu1.wav", true); gameoptions_cursor++; if (gameoptions_cursor >= NUM_GAMEOPTIONS) gameoptions_cursor = 0; @@ -3416,19 +3551,19 @@ void M_GameOptions_Key (int key, char ascii) case K_LEFTARROW: if (gameoptions_cursor == 0) break; - S_LocalSound ("misc/menu3.wav"); + S_LocalSound ("misc/menu3.wav", true); M_NetStart_Change (-1); break; case K_RIGHTARROW: if (gameoptions_cursor == 0) break; - S_LocalSound ("misc/menu3.wav"); + S_LocalSound ("misc/menu3.wav", true); M_NetStart_Change (1); break; case K_ENTER: - S_LocalSound ("misc/menu2.wav"); + S_LocalSound ("misc/menu2.wav", true); if (gameoptions_cursor == 0) { if (sv.active) @@ -3543,7 +3678,7 @@ void M_ServerList_Key(int k, char ascii) case K_UPARROW: case K_LEFTARROW: - S_LocalSound("misc/menu1.wav"); + S_LocalSound("misc/menu1.wav", true); slist_cursor--; if (slist_cursor < 0) slist_cursor = hostCacheCount - 1; @@ -3551,14 +3686,14 @@ void M_ServerList_Key(int k, char ascii) case K_DOWNARROW: case K_RIGHTARROW: - S_LocalSound("misc/menu1.wav"); + S_LocalSound("misc/menu1.wav", true); slist_cursor++; if (slist_cursor >= hostCacheCount) slist_cursor = 0; break; case K_ENTER: - S_LocalSound("misc/menu2.wav"); + S_LocalSound("misc/menu2.wav", true); Cbuf_AddText(va("connect \"%s\"\n", hostcache[slist_cursor].cname)); break; @@ -3590,6 +3725,7 @@ void M_Init (void) Cmd_AddCommand ("menu_setup", M_Menu_Setup_f); Cmd_AddCommand ("menu_options", M_Menu_Options_f); Cmd_AddCommand ("menu_options_effects", M_Menu_Options_Effects_f); + Cmd_AddCommand ("menu_options_graphics", M_Menu_Options_Graphics_f); Cmd_AddCommand ("menu_options_colorcontrol", M_Menu_Options_ColorControl_f); Cvar_RegisterVariable (&menu_options_colorcontrol_correctionvalue); Cmd_AddCommand ("menu_keys", M_Menu_Keys_f); @@ -3705,6 +3841,10 @@ void M_Draw (void) M_Options_Effects_Draw (); break; + case m_options_graphics: + M_Options_Graphics_Draw (); + break; + case m_options_colorcontrol: M_Options_ColorControl_Draw (); break; @@ -3740,7 +3880,7 @@ void M_Draw (void) if (m_entersound) { - S_LocalSound ("misc/menu2.wav"); + S_LocalSound ("misc/menu2.wav", true); m_entersound = false; } @@ -3791,6 +3931,10 @@ void M_Keydown (int key, char ascii) M_Options_Effects_Key (key, ascii); return; + case m_options_graphics: + M_Options_Graphics_Key (key, ascii); + return; + case m_options_colorcontrol: M_Options_ColorControl_Key (key, ascii); return; @@ -4073,8 +4217,8 @@ void MR_Init() // the normal quake menu only the first time else if(COM_CheckParm("-useqmenu")) MR_SetRouting (TRUE); - else - MR_SetRouting (FALSE); + + MR_SetRouting (FALSE); }