//=============================================================================
/* 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)
{
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;
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)
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)
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)
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)
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);
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);
count = 0;
- for (j=0 ; j<256 ; j++)
+ for (j = 0; j < sizeof (keybindings[0]) / sizeof (keybindings[0][0]); j++)
{
- b = keybindings[j];
+ b = keybindings[0][j];
if (!b)
continue;
if (!strcmp (b, command) )
int j;
char *b;
- for (j=0 ; j<256 ; j++)
+ for (j = 0; j < sizeof (keybindings[0]) / sizeof (keybindings[0][0]); j++)
{
- b = keybindings[j];
+ b = keybindings[0][j];
if (!b)
continue;
if (!strcmp (b, command))
- Key_SetBinding (j, "");
+ Key_SetBinding (j, 0, "");
}
}
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;