X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=menu.c;h=c4ce2787b9aab00e442c6ef4102e4c9871019a67;hb=68287aff6f373628781abed3b1b4b896f3563861;hp=ba8600e6400b0b4064f9d1df5976c6f4572e0c86;hpb=1cf3ca527c99b74bf7616dcf74e3854b58d0d553;p=xonotic%2Fdarkplaces.git diff --git a/menu.c b/menu.c index ba8600e6..c4ce2787 100644 --- a/menu.c +++ b/menu.c @@ -897,16 +897,17 @@ void M_MultiPlayer_Key (int key, char ascii) //============================================================================= /* SETUP MENU */ -int setup_cursor = 3; -int setup_cursor_table[] = {40, 64, 88, 124}; +int setup_cursor = 4; +int setup_cursor_table[] = {40, 64, 88, 124, 140}; char setup_myname[32]; int setup_oldtop; int setup_oldbottom; int setup_top; int setup_bottom; +int setup_rate; -#define NUM_SETUP_CMDS 4 +#define NUM_SETUP_CMDS 5 void M_Menu_Setup_f (void) { @@ -916,12 +917,46 @@ void M_Menu_Setup_f (void) strcpy(setup_myname, cl_name.string); setup_top = setup_oldtop = cl_color.integer >> 4; setup_bottom = setup_oldbottom = cl_color.integer & 15; + setup_rate = cl_rate.integer; } static int menuplyr_width, menuplyr_height, menuplyr_top, menuplyr_bottom, menuplyr_load; static qbyte *menuplyr_pixels; static unsigned int *menuplyr_translated; +typedef struct ratetable_s +{ + int rate; + char *name; +} +ratetable_t; + +#define RATES ((int)(sizeof(setup_ratetable)/sizeof(setup_ratetable[0]))) +static ratetable_t setup_ratetable[] = +{ + {1000, "28.8 bad"}, + {1500, "28.8 mediocre"}, + {2000, "28.8 good"}, + {2500, "33.6 mediocre"}, + {3000, "33.6 good"}, + {3500, "56k bad"}, + {4000, "56k mediocre"}, + {4500, "56k adequate"}, + {5000, "56k good"}, + {7000, "64k ISDN"}, + {15000, "128k ISDN"}, + {25000, "broadband"} +}; + +static int setup_rateindex(int rate) +{ + int i; + for (i = 0;i < RATES;i++) + if (setup_ratetable[i].rate > setup_rate) + break; + return bound(1, i, RATES) - 1; +} + void M_Setup_Draw (void) { int i; @@ -943,8 +978,11 @@ void M_Setup_Draw (void) M_Print (64, 88, "Pants color"); } - M_DrawTextBox (64, 124-8, 14, 1); - M_Print (72, 124, "Accept Changes"); + M_Print (64, 124-8, "Network speed limit"); + M_Print (168, 124, va("%i (%s)", setup_rate, setup_ratetable[setup_rateindex(setup_rate)].name)); + + M_DrawTextBox (64, 140-8, 14, 1); + M_Print (72, 140, "Accept Changes"); // LordHavoc: rewrote this code greatly if (menuplyr_load) @@ -1020,6 +1058,13 @@ void M_Setup_Key (int k, char ascii) setup_top = setup_top - 1; if (setup_cursor == 2) setup_bottom = setup_bottom - 1; + if (setup_cursor == 3) + { + l = setup_rateindex(setup_rate) - 1; + if (l < 0) + l = RATES - 1; + setup_rate = setup_ratetable[l].rate; + } break; case K_RIGHTARROW: if (setup_cursor < 1) @@ -1030,16 +1075,23 @@ forward: setup_top = setup_top + 1; if (setup_cursor == 2) setup_bottom = setup_bottom + 1; + if (setup_cursor == 3) + { + l = setup_rateindex(setup_rate) + 1; + if (l >= RATES) + l = 0; + setup_rate = setup_ratetable[l].rate; + } break; case K_ENTER: if (setup_cursor == 0) return; - if (setup_cursor == 1 || setup_cursor == 2) + if (setup_cursor == 1 || setup_cursor == 2 || setup_cursor == 3) goto forward; - // setup_cursor == 3 (Accept changes) + // setup_cursor == 4 (Accept changes) if (strcmp(cl_name.string, setup_myname) != 0) Cbuf_AddText ( va ("name \"%s\"\n", setup_myname) ); if (setup_top != setup_oldtop || setup_bottom != setup_oldbottom) @@ -1398,50 +1450,28 @@ void M_Menu_Options_Effects_AdjustSliders (int dir) S_LocalSound ("misc/menu3.wav"); optnum = 0; - if (options_effects_cursor == optnum++) - Cvar_SetValueQuick (&r_modellights, bound(0, r_modellights.value + dir, 8)); - else if (options_effects_cursor == optnum++) - Cvar_SetValueQuick (&r_coronas, !r_coronas.integer); - else if (options_effects_cursor == optnum++) - Cvar_SetValueQuick (&gl_flashblend, !gl_flashblend.integer); - else if (options_effects_cursor == optnum++) - Cvar_SetValueQuick (&cl_particles, !cl_particles.integer); - else if (options_effects_cursor == optnum++) - Cvar_SetValueQuick (&cl_particles_quality, bound(1, cl_particles_quality.value + dir * 0.5, 4)); - else if (options_effects_cursor == optnum++) - Cvar_SetValueQuick (&cl_explosions, !cl_explosions.integer); - else if (options_effects_cursor == optnum++) - Cvar_SetValueQuick (&r_explosionclip, !r_explosionclip.integer); - else if (options_effects_cursor == optnum++) - Cvar_SetValueQuick (&cl_stainmaps, !cl_stainmaps.integer); - else if (options_effects_cursor == optnum++) - Cvar_SetValueQuick (&cl_decals, !cl_decals.integer); - else if (options_effects_cursor == optnum++) - Cvar_SetValueQuick (&r_detailtextures, !r_detailtextures.integer); - else if (options_effects_cursor == optnum++) - Cvar_SetValueQuick (&cl_particles_bulletimpacts, !cl_particles_bulletimpacts.integer); - else if (options_effects_cursor == optnum++) - Cvar_SetValueQuick (&cl_particles_smoke, !cl_particles_smoke.integer); - else if (options_effects_cursor == optnum++) - Cvar_SetValueQuick (&cl_particles_sparks, !cl_particles_sparks.integer); - else if (options_effects_cursor == optnum++) - Cvar_SetValueQuick (&cl_particles_bubbles, !cl_particles_bubbles.integer); - else if (options_effects_cursor == optnum++) - Cvar_SetValueQuick (&cl_particles_blood, !cl_particles_blood.integer); - 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 (&r_lerpmodels, !r_lerpmodels.integer); - else if (options_effects_cursor == optnum++) - Cvar_SetValueQuick (&r_lerpsprites, !r_lerpsprites.integer); - else if (options_effects_cursor == optnum++) - Cvar_SetValueQuick (&r_wateralpha, bound(0, r_wateralpha.value + dir * 0.1, 1)); - else if (options_effects_cursor == optnum++) - Cvar_SetValueQuick (&r_waterscroll, bound(0, r_waterscroll.value + dir * 0.5, 10)); - else if (options_effects_cursor == optnum++) - Cvar_SetValueQuick (&r_watershader, bound(0, r_watershader.value + dir * 0.25, 10)); + if (options_effects_cursor == optnum++) Cvar_SetValueQuick (&r_modellights, bound(0, r_modellights.value + dir, 8)); + else if (options_effects_cursor == optnum++) Cvar_SetValueQuick (&r_coronas, bound(0, r_coronas.value + dir * 0.125, 4)); + else if (options_effects_cursor == optnum++) Cvar_SetValueQuick (&gl_flashblend, !gl_flashblend.integer); + else if (options_effects_cursor == optnum++) Cvar_SetValueQuick (&cl_particles, !cl_particles.integer); + else if (options_effects_cursor == optnum++) Cvar_SetValueQuick (&cl_particles_quality, bound(1, cl_particles_quality.value + dir * 0.5, 4)); + else if (options_effects_cursor == optnum++) Cvar_SetValueQuick (&cl_explosions, !cl_explosions.integer); + else if (options_effects_cursor == optnum++) Cvar_SetValueQuick (&r_explosionclip, !r_explosionclip.integer); + else if (options_effects_cursor == optnum++) Cvar_SetValueQuick (&cl_stainmaps, !cl_stainmaps.integer); + else if (options_effects_cursor == optnum++) Cvar_SetValueQuick (&cl_decals, !cl_decals.integer); + else if (options_effects_cursor == optnum++) Cvar_SetValueQuick (&r_detailtextures, !r_detailtextures.integer); + else if (options_effects_cursor == optnum++) Cvar_SetValueQuick (&cl_particles_bulletimpacts, !cl_particles_bulletimpacts.integer); + else if (options_effects_cursor == optnum++) Cvar_SetValueQuick (&cl_particles_smoke, !cl_particles_smoke.integer); + else if (options_effects_cursor == optnum++) Cvar_SetValueQuick (&cl_particles_sparks, !cl_particles_sparks.integer); + else if (options_effects_cursor == optnum++) Cvar_SetValueQuick (&cl_particles_bubbles, !cl_particles_bubbles.integer); + else if (options_effects_cursor == optnum++) Cvar_SetValueQuick (&cl_particles_blood, !cl_particles_blood.integer); + 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 (&r_lerpmodels, !r_lerpmodels.integer); + else if (options_effects_cursor == optnum++) Cvar_SetValueQuick (&r_lerpsprites, !r_lerpsprites.integer); + else if (options_effects_cursor == optnum++) Cvar_SetValueQuick (&r_wateralpha, bound(0, r_wateralpha.value + dir * 0.1, 1)); + else if (options_effects_cursor == optnum++) Cvar_SetValueQuick (&r_waterscroll, bound(0, r_waterscroll.value + dir * 0.5, 10)); + else if (options_effects_cursor == optnum++) Cvar_SetValueQuick (&r_watershader, bound(0, r_watershader.value + dir * 0.25, 10)); } void M_Options_Effects_Draw (void) @@ -1461,7 +1491,7 @@ void M_Options_Effects_Draw (void) opty = 32 - bound(0, optcursor - (visible >> 1), max(0, OPTIONS_EFFECTS_ITEMS - visible)) * 8; M_Options_PrintSlider( " Lights Per Model", true, r_modellights.value, 0, 8); - M_Options_PrintCheckbox(" Coronas", true, r_coronas.integer); + M_Options_PrintSlider( " Corona Intensity", true, r_coronas.value, 0, 4); M_Options_PrintCheckbox(" Use Only Coronas", true, gl_flashblend.integer); M_Options_PrintCheckbox(" Particles", true, cl_particles.integer); M_Options_PrintSlider( " Particles Quality", true, cl_particles_quality.value, 1, 4); @@ -1740,7 +1770,6 @@ void M_Options_ColorControl_Key (int k, char ascii) Cvar_SetValueQuick(&v_color_white_r, 1); Cvar_SetValueQuick(&v_color_white_g, 1); Cvar_SetValueQuick(&v_color_white_b, 1); - Cbuf_AddText ("exec default.cfg\n"); break; default: M_Menu_Options_ColorControl_AdjustSliders (1); @@ -2235,7 +2264,7 @@ void M_Menu_Video_AdjustSliders (int dir) int new_resolution = video_resolution + dir; if (gamemode == GAME_FNIGGIUM ? new_resolution < VID_640 : new_resolution < 0) video_resolution = VID_RES_COUNT - 1; - else if (new_resolution > VID_RES_COUNT) + else if (new_resolution > VID_RES_COUNT - 1) video_resolution = gamemode == GAME_FNIGGIUM ? VID_640 : 0; else video_resolution = new_resolution;