DrawQ_String(menu_x + cx, menu_y + cy, temp, 1, 8, 8, 1, 1, 1, 1, 0);
}
-void M_Print (float cx, float cy, const char *str)
+void M_Print(float cx, float cy, const char *str)
{
DrawQ_String(menu_x + cx, menu_y + cy, str, 0, 8, 8, 1, 1, 1, 1, 0);
}
DrawQ_String(menu_x + cx, menu_y + cy, str, 0, 8, 8, 1, 0, 0, 1, 0);
}
-void M_ItemPrint (float cx, float cy, char *str, int unghosted)
+void M_ItemPrint(float cx, float cy, char *str, int unghosted)
{
if (unghosted)
DrawQ_String(menu_x + cx, menu_y + cy, str, 0, 8, 8, 1, 1, 1, 1, 0);
M_Background(320, 200);
for (i = 0;i < NumberOfNehahraDemos;i++)
- M_Print (16, 16 + 8*i, NehahraDemos[i].desc);
+ M_Print(16, 16 + 8*i, NehahraDemos[i].desc);
// line cursor
M_DrawCharacter (8, 16 + demo_cursor*8, 12+((int)(realtime*4)&1));
M_DrawTextBox (60, 8 * 8, 23, 4);
if (gamemode == GAME_NEXUIZ)
- M_Print (95, 10 * 8, "Nexuiz is for");
+ M_Print(95, 10 * 8, "Nexuiz is for");
else if (gamemode == GAME_GOODVSBAD2)
- M_Print (95, 10 * 8, "Good Vs Bad 2 is for");
+ M_Print(95, 10 * 8, "Good Vs Bad 2 is for");
else if (gamemode == GAME_BATTLEMECH)
- M_Print (95, 10 * 8, "Battlemech is for");
+ M_Print(95, 10 * 8, "Battlemech is for");
else
- M_Print (95, 10 * 8, "Transfusion is for");
- M_Print (83, 11 * 8, "multiplayer play only");
+ M_Print(95, 10 * 8, "Transfusion is for");
+ M_Print(83, 11 * 8, "multiplayer play only");
}
else
{
M_DrawPic ( (320-p->width)/2, 4, "gfx/p_load.lmp");
for (i=0 ; i< MAX_SAVEGAMES; i++)
- M_Print (16, 32 + 8*i, m_filenames[i]);
+ M_Print(16, 32 + 8*i, m_filenames[i]);
// line cursor
M_DrawCharacter (8, 32 + load_cursor*8, 12+((int)(realtime*4)&1));
M_DrawPic ( (320-p->width)/2, 4, "gfx/p_save.lmp");
for (i=0 ; i<MAX_SAVEGAMES ; i++)
- M_Print (16, 32 + 8*i, m_filenames[i]);
+ M_Print(16, 32 + 8*i, m_filenames[i]);
// line cursor
M_DrawCharacter (8, 32 + load_cursor*8, 12+((int)(realtime*4)&1));
//=============================================================================
/* 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;
+int setup_oldrate;
-#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;
p = Draw_CachePic ("gfx/p_multi.lmp");
M_DrawPic ( (320-p->width)/2, 4, "gfx/p_multi.lmp");
- M_Print (64, 40, "Your name");
+ M_Print(64, 40, "Your name");
M_DrawTextBox (160, 32, 16, 1);
- M_Print (168, 40, setup_myname);
+ M_Print(168, 40, setup_myname);
if (gamemode != GAME_GOODVSBAD2)
{
- M_Print (64, 64, "Shirt color");
- M_Print (64, 88, "Pants color");
+ M_Print(64, 64, "Shirt color");
+ 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)
menuplyr_load = false;
menuplyr_top = -1;
menuplyr_bottom = -1;
- if ((f = FS_LoadFile("gfx/menuplyr.lmp", true)))
+ if ((f = FS_LoadFile("gfx/menuplyr.lmp", tempmempool, true)))
{
data = LoadLMPAs8Bit (f, 0, 0);
menuplyr_width = image_width;
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)
Cbuf_AddText( va ("color %i %i\n", setup_top, setup_bottom) );
+ if (setup_rate != setup_oldrate)
+ Cbuf_AddText(va("rate %i\n", setup_rate));
+
m_entersound = true;
M_Menu_MultiPlayer_f ();
break;
void M_DrawCheckbox (int x, int y, int on)
{
if (on)
- M_Print (x, y, "on");
+ M_Print(x, y, "on");
else
- M_Print (x, y, "off");
+ M_Print(x, y, "off");
}
-#define OPTIONS_ITEMS 33
+#define OPTIONS_ITEMS 37
int options_cursor;
Cvar_SetValueQuick (&scr_conbrightness, bound(0, scr_conbrightness.value + dir * 0.2, 1));
else if (options_cursor == optnum++)
Cvar_SetValueQuick (&scr_viewsize, bound(30, scr_viewsize.value + dir * 10, 120));
+ else if (options_cursor == optnum++)
+ Cvar_SetValueQuick (&scr_fov, bound(1, scr_fov.integer + dir * 1, 170));
else if (options_cursor == optnum++)
Cvar_SetValueQuick (&scr_screenshot_jpeg, !scr_screenshot_jpeg.integer);
+ else if (options_cursor == optnum++)
+ Cvar_SetValueQuick (&scr_screenshot_jpeg_quality, bound(0, scr_screenshot_jpeg_quality.value + dir * 0.1, 1));
else if (options_cursor == optnum++)
Cvar_SetValueQuick (&r_sky, !r_sky.integer);
else if (options_cursor == optnum++)
else if (options_cursor == optnum++)
Cvar_SetValueQuick (&gl_delayfinish, !gl_delayfinish.integer);
else if (options_cursor == optnum++)
- Cvar_SetValueQuick (&gl_texture_anisotropy, bound(0, gl_texture_anisotropy.value + dir, 8));
+ Cvar_SetValueQuick (&gl_texture_anisotropy, bound(1, gl_texture_anisotropy.integer + dir, gl_max_anisotropy));
else if (options_cursor == optnum++)
Cvar_SetValueQuick (&slowmo, bound(0, slowmo.value + dir * 0.25, 5));
else if (options_cursor == optnum++)
-#ifdef _WIN32
- Cvar_SetValueQuick (&bgmvolume, bound(0, bgmvolume.value + dir * 1.0, 1));
-#else
Cvar_SetValueQuick (&bgmvolume, bound(0, bgmvolume.value + dir * 0.1, 1));
-#endif
else if (options_cursor == optnum++)
Cvar_SetValueQuick (&volume, bound(0, volume.value + dir * 0.1, 1));
else if (options_cursor == optnum++)
Cvar_SetValueQuick (&crosshair_static, !crosshair_static.integer);
else if (options_cursor == optnum++)
Cvar_SetValueQuick (&showfps, !showfps.integer);
+ else if (options_cursor == optnum++)
+ Cvar_SetValueQuick (&showtime, !showtime.integer);
+ else if (options_cursor == optnum++)
+ Cvar_SetValueQuick (&showdate, !showdate.integer);
else if (options_cursor == optnum++)
{
if (cl_forwardspeed.value > 200)
{
if (opty >= 32)
{
- DrawQ_Fill(menu_x, menu_y + opty, 640, 8, optnum == optcursor ? (0.5 + 0.2 * sin(realtime * M_PI)) : 0, 0, 0, 0.5, 0);
+ DrawQ_Fill(menu_x, menu_y + opty, 320, 8, optnum == optcursor ? (0.5 + 0.2 * sin(realtime * M_PI)) : 0, 0, 0, 0.5, 0);
M_ItemPrint(0, opty, s, enabled);
}
opty += 8;
{
if (opty >= 32)
{
- DrawQ_Fill(menu_x, menu_y + opty, 640, 8, optnum == optcursor ? (0.5 + 0.2 * sin(realtime * M_PI)) : 0, 0, 0, 0.5, 0);
+ DrawQ_Fill(menu_x, menu_y + opty, 320, 8, optnum == optcursor ? (0.5 + 0.2 * sin(realtime * M_PI)) : 0, 0, 0, 0.5, 0);
M_ItemPrint(0, opty, s, enabled);
M_DrawCheckbox(0 + strlen(s) * 8 + 8, opty, yes);
}
{
if (opty >= 32)
{
- DrawQ_Fill(menu_x, menu_y + opty, 640, 8, optnum == optcursor ? (0.5 + 0.2 * sin(realtime * M_PI)) : 0, 0, 0, 0.5, 0);
+ DrawQ_Fill(menu_x, menu_y + opty, 320, 8, optnum == optcursor ? (0.5 + 0.2 * sin(realtime * M_PI)) : 0, 0, 0, 0.5, 0);
M_ItemPrint(0, opty, s, enabled);
M_DrawSlider(0 + strlen(s) * 8 + 8, opty, value, minvalue, maxvalue);
}
p = Draw_CachePic("gfx/p_option.lmp");
M_DrawPic((320-p->width)/2, 4, "gfx/p_option.lmp");
- // LordHavoc: FIXME: overbright needs to be disabled in GAME_GOODVSBAD2 but combine should not be disabled
- // LordHavoc: perhaps it's time for Overbright Bits to die, and a r_lightmapintensity option to be added?
optnum = 0;
optcursor = options_cursor;
visible = (vid.conheight - 32) / 8;
M_Options_PrintSlider( " Console Alpha", true, scr_conalpha.value, 0, 1);
M_Options_PrintSlider( "Conback Brightness", true, scr_conbrightness.value, 0, 1);
M_Options_PrintSlider( " Screen size", true, scr_viewsize.value, 30, 120);
+ M_Options_PrintSlider( " Field of View", true, scr_fov.integer, 1, 170);
M_Options_PrintCheckbox(" JPEG screenshots", jpeg_dll != NULL, scr_screenshot_jpeg.integer);
+ M_Options_PrintSlider( " JPEG quality", jpeg_dll != NULL, scr_screenshot_jpeg_quality.value, 0, 1);
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.value, 0, 8);
+ 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, bgmvolume.value, 0, 1);
- M_Options_PrintSlider( " Sound Volume", snd_initialized, volume.value, 0, 1);
- M_Options_PrintSlider(gamemode == GAME_GOODVSBAD2 ? " Music Volume" : " Ambient Volume", snd_initialized, snd_staticvolume.value, 0, 1);
+ M_Options_PrintSlider( " CD Music Volume", cdaudioinitialized.integer, bgmvolume.value, 0, 1);
+ M_Options_PrintSlider( " Sound Volume", snd_initialized.integer, volume.value, 0, 1);
+ M_Options_PrintSlider(gamemode == GAME_GOODVSBAD2 ? " Music Volume" : " Ambient Volume", snd_initialized.integer, snd_staticvolume.value, 0, 1);
M_Options_PrintSlider( " Crosshair", true, crosshair.value, 0, 5);
M_Options_PrintSlider( " Crosshair Size", true, crosshair_size.value, 1, 5);
M_Options_PrintCheckbox(" Static Crosshair", true, crosshair_static.integer);
M_Options_PrintCheckbox(" Show Framerate", true, showfps.integer);
+ M_Options_PrintCheckbox(" Show Time", true, showtime.integer);
+ M_Options_PrintCheckbox(" Show Date", true, showdate.integer);
M_Options_PrintCheckbox(" Always Run", true, cl_forwardspeed.value > 200);
M_Options_PrintCheckbox(" Lookspring", true, lookspring.integer);
M_Options_PrintCheckbox(" Lookstrafe", true, lookstrafe.integer);
}
}
-#define OPTIONS_EFFECTS_ITEMS 20
+#define OPTIONS_EFFECTS_ITEMS 33
int options_effects_cursor;
extern cvar_t cl_particles_bubbles;
extern cvar_t cl_particles_blood;
extern cvar_t cl_particles_blood_alpha;
+extern cvar_t cl_particles_blood_bloodhack;
+extern cvar_t r_lightningbeam_thickness;
+extern cvar_t r_lightningbeam_scroll;
+extern cvar_t r_lightningbeam_repeatdistance;
+extern cvar_t r_lightningbeam_color_red;
+extern cvar_t r_lightningbeam_color_green;
+extern cvar_t r_lightningbeam_color_blue;
+extern cvar_t r_lightningbeam_qmbtexture;
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 (&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_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_lightningbeam_thickness, bound(1, r_lightningbeam_thickness.integer + dir, 10));
+ else if (options_effects_cursor == optnum++) Cvar_SetValueQuick (&r_lightningbeam_scroll, bound(0, r_lightningbeam_scroll.integer + dir, 10));
+ else if (options_effects_cursor == optnum++) Cvar_SetValueQuick (&r_lightningbeam_repeatdistance, bound(64, r_lightningbeam_repeatdistance.integer + dir * 64, 1024));
+ else if (options_effects_cursor == optnum++) Cvar_SetValueQuick (&r_lightningbeam_color_red, bound(0, r_lightningbeam_color_red.value + dir * 0.1, 1));
+ else if (options_effects_cursor == optnum++) Cvar_SetValueQuick (&r_lightningbeam_color_green, bound(0, r_lightningbeam_color_green.value + dir * 0.1, 1));
+ else if (options_effects_cursor == optnum++) Cvar_SetValueQuick (&r_lightningbeam_color_blue, bound(0, r_lightningbeam_color_blue.value + dir * 0.1, 1));
+ else if (options_effects_cursor == optnum++) Cvar_SetValueQuick (&r_lightningbeam_qmbtexture, !r_lightningbeam_qmbtexture.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 (&gl_polyblend, bound(0, gl_polyblend.value + dir * 0.1, 1));
+ else if (options_effects_cursor == optnum++) Cvar_SetValueQuick (&r_skyscroll1, bound(-8, r_skyscroll1.value + dir * 0.1, 8));
+ else if (options_effects_cursor == optnum++) Cvar_SetValueQuick (&r_skyscroll2, bound(-8, r_skyscroll2.value + dir * 0.1, 8));
+ else if (options_effects_cursor == optnum++) Cvar_SetValueQuick (&r_waterwarp, bound(0, r_waterwarp.value + dir * 0.1, 1));
+ 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);
M_Options_PrintCheckbox(" Bubbles", true, cl_particles_bubbles.integer);
M_Options_PrintCheckbox(" Blood", true, cl_particles_blood.integer);
M_Options_PrintSlider( " Blood Opacity", true, cl_particles_blood_alpha.value, 0.2, 1);
+ M_Options_PrintCheckbox("Force New Blood Effect", true, cl_particles_blood_bloodhack.integer);
+ M_Options_PrintSlider( " Lightning Thickness", true, r_lightningbeam_thickness.integer, 1, 10);
+ M_Options_PrintSlider( " Lightning Scroll", true, r_lightningbeam_scroll.integer, 0, 10);
+ M_Options_PrintSlider( " Lightning Repeat Dist", true, r_lightningbeam_repeatdistance.integer, 64, 1024);
+ M_Options_PrintSlider( " Lightning Color Red", true, r_lightningbeam_color_red.value, 0, 1);
+ M_Options_PrintSlider( " Lightning Color Green", true, r_lightningbeam_color_green.value, 0, 1);
+ M_Options_PrintSlider( " Lightning Color Blue", true, r_lightningbeam_color_blue.value, 0, 1);
+ M_Options_PrintCheckbox(" Lightning QMB Texture", true, r_lightningbeam_qmbtexture.integer);
M_Options_PrintCheckbox(" Model Interpolation", true, r_lerpmodels.integer);
M_Options_PrintCheckbox(" Sprite Interpolation", true, r_lerpsprites.integer);
+ M_Options_PrintSlider( " View Blend", true, gl_polyblend.value, 0, 1);
+ M_Options_PrintSlider( "Upper Sky Scroll Speed", true, r_skyscroll1.value, -8, 8);
+ M_Options_PrintSlider( "Lower Sky Scroll Speed", true, r_skyscroll2.value, -8, 8);
+ M_Options_PrintSlider( " Underwater View Warp", true, r_waterwarp.value, 0, 1);
+ M_Options_PrintSlider( " Water Alpha (opacity)", true, r_wateralpha.value, 0, 1);
M_Options_PrintSlider( " Water Movement", true, r_waterscroll.value, 0, 10);
M_Options_PrintSlider( " GeForce3 Water Shader", true, r_watershader.value, 0, 10);
}
opty = 32 - bound(0, optcursor - (visible >> 1), max(0, OPTIONS_COLORCONTROL_ITEMS - visible)) * 8;
M_Options_PrintCommand( " Reset to defaults", true);
- M_Options_PrintCheckbox("Hardware Gamma Control", vid_hardwaregammasupported, v_hwgamma.integer);
- M_Options_PrintSlider( " Gamma", !v_color_enable.integer && vid_hardwaregammasupported && v_hwgamma.integer, v_gamma.value, 1, 5);
+ M_Options_PrintCheckbox("Hardware Gamma Control", vid_hardwaregammasupported.integer, v_hwgamma.integer);
+ M_Options_PrintSlider( " Gamma", !v_color_enable.integer && vid_hardwaregammasupported.integer && v_hwgamma.integer, v_gamma.value, 1, 5);
M_Options_PrintSlider( " Contrast", !v_color_enable.integer, v_contrast.value, 1, 5);
M_Options_PrintSlider( " Brightness", !v_color_enable.integer, v_brightness.value, 0, 0.8);
M_Options_PrintCheckbox(" Color Level Controls", true, v_color_enable.integer);
M_Options_PrintSlider( " Black: Green", v_color_enable.integer, v_color_black_g.value, 0, 0.8);
M_Options_PrintSlider( " Black: Blue ", v_color_enable.integer, v_color_black_b.value, 0, 0.8);
M_Options_PrintSlider( " Black: Grey ", v_color_enable.integer, (v_color_black_r.value + v_color_black_g.value + v_color_black_b.value) / 3, 0, 0.8);
- M_Options_PrintSlider( " Grey: Red ", v_color_enable.integer && vid_hardwaregammasupported && v_hwgamma.integer, v_color_grey_r.value, 0, 0.95);
- M_Options_PrintSlider( " Grey: Green", v_color_enable.integer && vid_hardwaregammasupported && v_hwgamma.integer, v_color_grey_g.value, 0, 0.95);
- M_Options_PrintSlider( " Grey: Blue ", v_color_enable.integer && vid_hardwaregammasupported && v_hwgamma.integer, v_color_grey_b.value, 0, 0.95);
- M_Options_PrintSlider( " Grey: Grey ", v_color_enable.integer && vid_hardwaregammasupported && v_hwgamma.integer, (v_color_grey_r.value + v_color_grey_g.value + v_color_grey_b.value) / 3, 0, 0.95);
+ M_Options_PrintSlider( " Grey: Red ", v_color_enable.integer && vid_hardwaregammasupported.integer && v_hwgamma.integer, v_color_grey_r.value, 0, 0.95);
+ M_Options_PrintSlider( " Grey: Green", v_color_enable.integer && vid_hardwaregammasupported.integer && v_hwgamma.integer, v_color_grey_g.value, 0, 0.95);
+ M_Options_PrintSlider( " Grey: Blue ", v_color_enable.integer && vid_hardwaregammasupported.integer && v_hwgamma.integer, v_color_grey_b.value, 0, 0.95);
+ M_Options_PrintSlider( " Grey: Grey ", v_color_enable.integer && vid_hardwaregammasupported.integer && v_hwgamma.integer, (v_color_grey_r.value + v_color_grey_g.value + v_color_grey_b.value) / 3, 0, 0.95);
M_Options_PrintSlider( " White: Red ", v_color_enable.integer, v_color_white_r.value, 1, 5);
M_Options_PrintSlider( " White: Green", v_color_enable.integer, v_color_white_g.value, 1, 5);
M_Options_PrintSlider( " White: Blue ", v_color_enable.integer, v_color_white_b.value, 1, 5);
switch (k)
{
case K_ESCAPE:
- M_Menu_Main_f ();
+ M_Menu_Options_f ();
break;
case K_ENTER:
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);
{"impulse 26", "next armor type"},
{"impulse 27", "identify player"},
{"impulse 55", "voting menu"},
-{"impulse 56", "observer mode"}
+{"impulse 56", "observer mode"},
+{"", "Taunts"}, // Taunts
+{"impulse 70", "taunt 0"},
+{"impulse 71", "taunt 1"},
+{"impulse 72", "taunt 2"},
+{"impulse 73", "taunt 3"},
+{"impulse 74", "taunt 4"},
+{"impulse 75", "taunt 5"},
+{"impulse 76", "taunt 6"},
+{"impulse 77", "taunt 7"},
+{"impulse 78", "taunt 8"},
+{"impulse 79", "taunt 9"}
};
char *goodvsbad2bindnames[][2] =
count = 0;
- for (j=0 ; j<256 ; j++)
+ for (j = 0; j < (int)sizeof (keybindings[0]) / (int)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 < (int)sizeof (keybindings[0]) / (int)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, "");
}
}
M_DrawPic ( (320-p->width)/2, 4, "gfx/ttl_cstm.lmp");
if (bind_grab)
- M_Print (12, 32, "Press a key or button for this action");
+ M_Print(12, 32, "Press a key or button for this action");
else
- M_Print (18, 32, "Enter to change, backspace to clear");
+ M_Print(18, 32, "Enter to change, backspace to clear");
// search for known bindings
for (i=0 ; i<numcommands ; i++)
continue;
}
else
- M_Print (16, y, bindnames[i][1]);
+ M_Print(16, y, bindnames[i][1]);
M_FindKeysForCommand (bindnames[i][0], keys);
}
}
}
- M_Print (150, y, keystring);
+ M_Print(150, y, keystring);
}
if (bind_grab)
int video_cursor_table[] = {56, 68, 80, 100};
// note: if modes are added to the beginning of this list, update the
// video_resolution = x; in M_Menu_Video_f below
-unsigned short video_resolutions[][2] = {{320,240}, {400,300}, {512,384}, {640,480}, {800,600}, {1024,768}, {1152,864}, {1280,960}, {1280,1024}, {1600,1200}, {1792,1344}, {1920,1440}, {2048,1536}};
+unsigned short video_resolutions[][2] = {{320,240}, {400,300}, {512,384}, {640,480}, {800,600}, {1024,768}, {1152,864}, {1280,960}, {1280,1024}, {1600,1200}, {1792,1344}, {1920,1440}, {2048,1536}, {0,0}};
+// this is the number of the 640x480 mode in the list
+#define VID_640 3
+#define VID_RES_COUNT ((int)(sizeof(video_resolutions) / sizeof(video_resolutions[0])) - 1)
int video_resolution;
extern int current_vid_fullscreen;
m_entersound = true;
// Look for the current resolution
- for (video_resolution = 0; video_resolution < (int) (sizeof (video_resolutions) / sizeof (video_resolutions[0])); video_resolution++)
+ for (video_resolution = 0; video_resolution < VID_RES_COUNT; video_resolution++)
{
if (video_resolutions[video_resolution][0] == current_vid_width &&
video_resolutions[video_resolution][1] == current_vid_height)
break;
}
- // Default to 800x600 if we didn't find it
- if (video_resolution == sizeof (video_resolutions) / sizeof (video_resolutions[0]))
+ // Default to VID_640 if we didn't find it
+ if (video_resolution == VID_RES_COUNT)
{
// may need to update this number if mode list changes
- video_resolution = 4;
+ video_resolution = VID_640;
Cvar_SetValueQuick (&vid_width, video_resolutions[video_resolution][0]);
Cvar_SetValueQuick (&vid_height, video_resolutions[video_resolution][1]);
}
// Resolution
M_Print(16, video_cursor_table[0], " Resolution");
string = va("%dx%d", video_resolutions[video_resolution][0], video_resolutions[video_resolution][1]);
- M_Print (220, video_cursor_table[0], string);
+ M_Print(220, video_cursor_table[0], string);
// Bits per pixel
M_Print(16, video_cursor_table[1], " Bits per pixel");
- M_Print (220, video_cursor_table[1], (vid_bitsperpixel.integer == 32) ? "32" : "16");
+ M_Print(220, video_cursor_table[1], (vid_bitsperpixel.integer == 32) ? "32" : "16");
// Fullscreen
M_Print(16, video_cursor_table[2], " Fullscreen");
case 0:
{
int new_resolution = video_resolution + dir;
- if (new_resolution < 0)
- video_resolution = sizeof (video_resolutions) / sizeof (video_resolutions[0]) - 1;
- else if (new_resolution > (int) (sizeof (video_resolutions) / sizeof (video_resolutions[0]) - 1))
- video_resolution = 0;
+ if (gamemode == GAME_FNIGGIUM ? new_resolution < VID_640 : new_resolution < 0)
+ video_resolution = VID_RES_COUNT - 1;
+ else if (new_resolution > VID_RES_COUNT - 1)
+ video_resolution = gamemode == GAME_FNIGGIUM ? VID_640 : 0;
else
video_resolution = new_resolution;
else
startJoin = "Join Game";
protocol = "TCP/IP";
- M_Print (basex, 32, va ("%s - %s", startJoin, protocol));
+ M_Print(basex, 32, va ("%s - %s", startJoin, protocol));
basex += 8;
- M_Print (basex, lanConfig_cursor_table[0], "Port");
+ M_Print(basex, lanConfig_cursor_table[0], "Port");
M_DrawTextBox (basex+8*8, lanConfig_cursor_table[0]-8, 6, 1);
- M_Print (basex+9*8, lanConfig_cursor_table[0], lanConfig_portname);
+ M_Print(basex+9*8, lanConfig_cursor_table[0], lanConfig_portname);
if (JoiningGame)
{
- M_Print (basex, lanConfig_cursor_table[1], "Search for games...");
- M_Print (basex, lanConfig_cursor_table[2]-16, "Join game at:");
+ M_Print(basex, lanConfig_cursor_table[1], "Search for games...");
+ M_Print(basex, lanConfig_cursor_table[2]-16, "Join game at:");
M_DrawTextBox (basex+8, lanConfig_cursor_table[2]-8, 22, 1);
- M_Print (basex+16, lanConfig_cursor_table[2], lanConfig_joinname);
+ M_Print(basex+16, lanConfig_cursor_table[2], lanConfig_joinname);
}
else
{
M_DrawTextBox (basex, lanConfig_cursor_table[1]-8, 2, 1);
- M_Print (basex+8, lanConfig_cursor_table[1], "OK");
+ M_Print(basex+8, lanConfig_cursor_table[1], "OK");
}
M_DrawCharacter (basex-8, lanConfig_cursor_table [lanConfig_cursor], 12+((int)(realtime*4)&1));
M_DrawCharacter (basex+16 + 8*strlen(lanConfig_joinname), lanConfig_cursor_table [2], 10+((int)(realtime*4)&1));
if (*m_return_reason)
- M_Print (basex, 168, m_return_reason);
+ M_Print(basex, 168, m_return_reason);
}
{"e1m7", "Altar of Stone"},
{"e2m8", "The Lair of Shial"},
{"e3m7", "The Pit of Cerberus"},
+ {"e4m1", "Butchery Loves Company"},
+ {"e4m7", "In the Flesh"},
{"e4m8", "The Hall of the Epiphany"},
{"e4m9", "Mall of the Dead"},
{"dm3", "Area 15"},
{"e6m1", "Welcome to Your Life"},
{"e6m8", "Beauty and the Beast"},
+ {"e6m9", "Forgotten Catacombs"},
{"cpbb01", "Crypt of Despair"},
{"cpbb03", "Unholy Cathedral"},
{"crypt", "The Crypt"},
{"bb3_2k1", "Bodies Infusion"},
+ {"captasao", "Captasao"},
+ {"curandero", "Curandero"},
{"dcamp", "DeathCamp"},
{"highnoon", "HighNoon"},
{"qbb1", "The Confluence"},
{"fragm", "Frag'M"},
{"maim", "Maim"},
{"qe1m7", "The House of Chthon"},
+ {"qmorbias", "Dm-Morbias"},
{"simple", "Dead Simple"}
};
episode_t transfusionepisodes[] =
{
{"Blood", 0, 8},
- {"Blood Single Player", 8, 7},
- {"Plasma Pack", 15, 5},
- {"Cryptic Passage", 20, 2},
- {"Blood 2", 22, 5},
- {"Transfusion", 27, 6},
- {"Conversions", 33, 5}
+ {"Blood Single Player", 8, 9},
+ {"Plasma Pack", 17, 6},
+ {"Cryptic Passage", 23, 2},
+ {"Blood 2", 25, 5},
+ {"Transfusion", 30, 8},
+ {"Conversions", 38, 6}
};
level_t goodvsbad2levels[] =
M_DrawPic ( (320-p->width)/2, 4, "gfx/p_multi.lmp");
M_DrawTextBox (152, 32, 10, 1);
- M_Print (160, 40, "begin game");
+ M_Print(160, 40, "begin game");
- M_Print (0, 56, " Max players");
- M_Print (160, 56, va("%i", maxplayers) );
+ M_Print(0, 56, " Max players");
+ M_Print(160, 56, va("%i", maxplayers) );
if (gamemode != GAME_GOODVSBAD2)
{
- M_Print (0, 64, " Game Type");
+ M_Print(0, 64, " Game Type");
if (gamemode == GAME_TRANSFUSION)
{
if (!deathmatch.integer)
Cvar_SetValue("deathmatch", 1);
if (deathmatch.integer == 2)
- M_Print (160, 64, "Capture the Flag");
+ M_Print(160, 64, "Capture the Flag");
else
- M_Print (160, 64, "Blood Bath");
+ M_Print(160, 64, "Blood Bath");
}
else if (gamemode == GAME_BATTLEMECH)
{
if (!deathmatch.integer)
Cvar_SetValue("deathmatch", 1);
if (deathmatch.integer == 2)
- M_Print (160, 64, "Rambo Match");
+ M_Print(160, 64, "Rambo Match");
else
- M_Print (160, 64, "Deathmatch");
+ M_Print(160, 64, "Deathmatch");
}
else
{
if (!coop.integer && !deathmatch.integer)
Cvar_SetValue("deathmatch", 1);
if (coop.integer)
- M_Print (160, 64, "Cooperative");
+ M_Print(160, 64, "Cooperative");
else
- M_Print (160, 64, "Deathmatch");
+ M_Print(160, 64, "Deathmatch");
}
- M_Print (0, 72, " Teamplay");
+ M_Print(0, 72, " Teamplay");
if (gamemode == GAME_ROGUE)
{
char *msg;
case 6: msg = "Three Team CTF"; break;
default: msg = "Off"; break;
}
- M_Print (160, 72, msg);
+ M_Print(160, 72, msg);
}
else
{
case 2: msg = "Friendly Fire"; break;
default: msg = "No Friendly Fire"; break;
}
- M_Print (160, 72, msg);
+ M_Print(160, 72, msg);
}
- M_Print (0, 80, " Skill");
+ M_Print(0, 80, " Skill");
if (skill.integer == 0)
- M_Print (160, 80, "Easy difficulty");
+ M_Print(160, 80, "Easy difficulty");
else if (skill.integer == 1)
- M_Print (160, 80, "Normal difficulty");
+ M_Print(160, 80, "Normal difficulty");
else if (skill.integer == 2)
- M_Print (160, 80, "Hard difficulty");
+ M_Print(160, 80, "Hard difficulty");
else
- M_Print (160, 80, "Nightmare difficulty");
+ M_Print(160, 80, "Nightmare difficulty");
- M_Print (0, 88, " Frag Limit");
+ M_Print(0, 88, " Frag Limit");
if (fraglimit.integer == 0)
- M_Print (160, 88, "none");
+ M_Print(160, 88, "none");
else
- M_Print (160, 88, va("%i frags", fraglimit.integer));
+ M_Print(160, 88, va("%i frags", fraglimit.integer));
- M_Print (0, 96, " Time Limit");
+ M_Print(0, 96, " Time Limit");
if (timelimit.integer == 0)
- M_Print (160, 96, "none");
+ M_Print(160, 96, "none");
else
- M_Print (160, 96, va("%i minutes", timelimit.integer));
+ M_Print(160, 96, va("%i minutes", timelimit.integer));
}
- M_Print (0, 104, " Public server");
- M_Print (160, 104, (sv_public.integer == 0) ? "no" : "yes");
+ M_Print(0, 104, " Public server");
+ M_Print(160, 104, (sv_public.integer == 0) ? "no" : "yes");
- M_Print (0, 120, " Server name");
+ M_Print(0, 120, " Server name");
M_DrawTextBox (0, 124, 38, 1);
- M_Print (8, 132, hostname.string);
+ M_Print(8, 132, hostname.string);
g = lookupgameinfo();
if (gamemode != GAME_GOODVSBAD2)
{
- M_Print (0, 152, " Episode");
- M_Print (160, 152, g->episodes[startepisode].description);
+ M_Print(0, 152, " Episode");
+ M_Print(160, 152, g->episodes[startepisode].description);
}
- M_Print (0, 160, " Level");
- M_Print (160, 160, g->levels[g->episodes[startepisode].firstLevel + startlevel].description);
- M_Print (160, 168, g->levels[g->episodes[startepisode].firstLevel + startlevel].name);
+ M_Print(0, 160, " Level");
+ M_Print(160, 160, g->levels[g->episodes[startepisode].firstLevel + startlevel].description);
+ M_Print(160, 168, g->levels[g->episodes[startepisode].firstLevel + startlevel].name);
// line cursor
if (gameoptions_cursor == 8)
x = (320-26*8)/2;
M_DrawTextBox (x, 138, 24, 4);
x += 8;
- M_Print (x, 146, " More than 64 players?? ");
- M_Print (x, 154, " First, question your ");
- M_Print (x, 162, " sanity, then email ");
- M_Print (x, 170, " havoc@telefragged.com ");
+ M_Print(x, 146, " More than 64 players?? ");
+ M_Print(x, 154, " First, question your ");
+ M_Print(x, 162, " sanity, then email ");
+ M_Print(x, 170, " havoc@telefragged.com ");
}
else
m_serverInfoMessage = false;
menuplyr_load = true;
menuplyr_pixels = NULL;
- Cmd_AddCommand ("togglemenu", M_ToggleMenu_f);
-
Cmd_AddCommand ("menu_main", M_Menu_Main_f);
Cmd_AddCommand ("menu_singleplayer", M_Menu_SinglePlayer_f);
Cmd_AddCommand ("menu_load", M_Menu_Load_f);
{
if (FS_FileExists("hearing.dem"))
{
- Con_Printf("Nehahra movie and game detected.\n");
+ Con_Print("Nehahra movie and game detected.\n");
NehGameType = TYPE_BOTH;
}
else
{
- Con_Printf("Nehahra game detected.\n");
+ Con_Print("Nehahra game detected.\n");
NehGameType = TYPE_GAME;
}
}
{
if (FS_FileExists("hearing.dem"))
{
- Con_Printf("Nehahra movie detected.\n");
+ Con_Print("Nehahra movie detected.\n");
NehGameType = TYPE_DEMO;
}
else
{
- Con_Printf("Nehahra not found.\n");
+ Con_Print("Nehahra not found.\n");
NehGameType = TYPE_GAME; // could just complain, but...
}
}
// fall back to the normal menu
// say it
- Con_Printf("Falling back to normal menu\n");
+ Con_Print("Falling back to normal menu\n");
key_dest = key_game;
MR_SetRouting (FALSE);
}
+void Call_MR_ToggleMenu_f(void)
+{
+ if(MR_ToggleMenu_f)
+ MR_ToggleMenu_f();
+}
+
void MR_Init()
{
// set router console commands
Cvar_RegisterVariable (&forceqmenu);
Cmd_AddCommand ("menu_restart",MR_Restart);
+ Cmd_AddCommand ("togglemenu", Call_MR_ToggleMenu_f);
// use -forceqmenu to use always the normal quake menu (it sets forceqmenu to 1)
if(COM_CheckParm("-forceqmenu"))