mirror of
https://github.com/blendogames/thirtyflightsofloving.git
synced 2024-11-14 16:40:57 +00:00
86b480711c
Updated extractfuncs.exe from latest source. Use new cvar modified functions to force vid_restart from vid_ref. Renamed qglDrawRangeElementsEXT to qglDrawRangeElements in qgl_win.c (missed in last commit).
557 lines
20 KiB
C
557 lines
20 KiB
C
/*
|
|
===========================================================================
|
|
Copyright (C) 1997-2001 Id Software, Inc.
|
|
|
|
This file is part of Quake 2 source code.
|
|
|
|
Quake 2 source code is free software; you can redistribute it
|
|
and/or modify it under the terms of the GNU General Public License as
|
|
published by the Free Software Foundation; either version 2 of the License,
|
|
or (at your option) any later version.
|
|
|
|
Quake 2 source code is distributed in the hope that it will be
|
|
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with Quake 2 source code; if not, write to the Free Software
|
|
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
===========================================================================
|
|
*/
|
|
|
|
// menu_video.c -- the video options menu
|
|
|
|
#include "../client/client.h"
|
|
#include "ui_local.h"
|
|
|
|
void Menu_Video_Init (void);
|
|
|
|
/*
|
|
=======================================================================
|
|
|
|
VIDEO MENU
|
|
|
|
=======================================================================
|
|
*/
|
|
|
|
static menuframework_s s_video_menu;
|
|
static menulist_s s_mode_list;
|
|
static menuseparator_s s_customwidth_title;
|
|
static menuseparator_s s_customheight_title;
|
|
static menufield_s s_customwidth_field;
|
|
static menufield_s s_customheight_field;
|
|
static menulist_s s_fs_box;
|
|
static menuslider_s s_brightness_slider;
|
|
static menulist_s s_texqual_box;
|
|
static menulist_s s_texfilter_box;
|
|
static menulist_s s_aniso_box;
|
|
static menulist_s s_npot_mipmap_box;
|
|
static menulist_s s_sgis_mipmap_box;
|
|
//static menulist_s s_texcompress_box;
|
|
static menulist_s s_vsync_box;
|
|
static menulist_s s_refresh_box; // Knightmare- refresh rate option
|
|
static menulist_s s_adjust_fov_box;
|
|
static menulist_s s_async_box;
|
|
|
|
static menuaction_s s_advanced_action;
|
|
static menuaction_s s_defaults_action;
|
|
static menuaction_s s_apply_action;
|
|
static menuaction_s s_backmain_action;
|
|
|
|
//=======================================================================
|
|
|
|
static void M_ShowCustomFields (void)
|
|
{
|
|
qboolean customHidden = (strcmp(ui_video_modes[s_mode_list.curValue], "-1") != 0);
|
|
|
|
s_customwidth_title.generic.flags = customHidden ? QMF_HIDDEN : 0;
|
|
s_customwidth_field.generic.flags = customHidden ? (QMF_NUMBERSONLY|QMF_HIDDEN) : QMF_NUMBERSONLY;
|
|
s_customheight_title.generic.flags = customHidden ? QMF_HIDDEN : 0;
|
|
s_customheight_field.generic.flags = customHidden ? (QMF_NUMBERSONLY|QMF_HIDDEN) : QMF_NUMBERSONLY;
|
|
}
|
|
|
|
static void VidModeCallback (void *unused)
|
|
{
|
|
M_ShowCustomFields ();
|
|
}
|
|
|
|
static void BrightnessCallback (void *s)
|
|
{
|
|
UI_MenuSlider_SaveValue (&s_brightness_slider, "vid_gamma");
|
|
}
|
|
|
|
static void AnisoCallback (void *s)
|
|
{
|
|
UI_MenuSpinControl_SaveValue (&s_aniso_box, "r_anisotropic");
|
|
}
|
|
|
|
static void VsyncCallback (void *unused)
|
|
{
|
|
UI_MenuSpinControl_SaveValue (&s_vsync_box, "r_swapinterval");
|
|
}
|
|
|
|
static void AdjustFOVCallback (void *unused)
|
|
{
|
|
UI_MenuSpinControl_SaveValue (&s_adjust_fov_box, "cl_widescreen_fov");
|
|
}
|
|
|
|
static void AsyncCallback (void *unused)
|
|
{
|
|
UI_MenuSpinControl_SaveValue (&s_async_box, "cl_async");
|
|
}
|
|
|
|
static void M_AdvancedOptions (void *s)
|
|
{
|
|
Menu_Video_Advanced_f ();
|
|
}
|
|
|
|
//=======================================================================
|
|
|
|
static void M_PrepareVideoRefresh (void)
|
|
{
|
|
// set the right mode for refresh
|
|
Cvar_Set( "vid_ref", "gl" );
|
|
Cvar_Set( "gl_driver", "opengl32" );
|
|
|
|
// tell them they're modified so they refresh
|
|
Cvar_SetModified ("vid_ref", true);
|
|
}
|
|
|
|
static void M_ResetVideoDefaults (void *unused)
|
|
{
|
|
Cvar_SetToDefault ("r_mode");
|
|
Cvar_SetToDefault ("vid_fullscreen");
|
|
Cvar_SetToDefault ("vid_gamma");
|
|
Cvar_SetToDefault ("r_texturemode");
|
|
Cvar_SetToDefault ("r_anisotropic");
|
|
Cvar_SetToDefault ("r_picmip");
|
|
Cvar_SetToDefault ("r_nonpoweroftwo_mipmaps");
|
|
Cvar_SetToDefault ("r_sgis_generatemipmap");
|
|
Cvar_SetToDefault ("r_ext_texture_compression");
|
|
Cvar_SetToDefault ("r_swapinterval");
|
|
Cvar_SetToDefault ("r_displayrefresh");
|
|
Cvar_SetToDefault ("cl_widescreen_fov");
|
|
Cvar_SetToDefault ("cl_async");
|
|
|
|
Cvar_SetToDefault ("r_modulate");
|
|
Cvar_SetToDefault ("r_intensity");
|
|
Cvar_SetToDefault ("r_rgbscale");
|
|
Cvar_SetToDefault ("r_trans_lighting");
|
|
Cvar_SetToDefault ("r_warp_lighting");
|
|
Cvar_SetToDefault ("r_lightcutoff");
|
|
Cvar_SetToDefault ("r_glass_envmaps");
|
|
Cvar_SetToDefault ("r_solidalpha");
|
|
Cvar_SetToDefault ("r_pixel_shader_warp");
|
|
Cvar_SetToDefault ("r_waterwave");
|
|
Cvar_SetToDefault ("r_caustics");
|
|
Cvar_SetToDefault ("r_particle_overdraw");
|
|
Cvar_SetToDefault ("r_bloom");
|
|
Cvar_SetToDefault ("r_model_shading");
|
|
Cvar_SetToDefault ("r_shadows");
|
|
Cvar_SetToDefault ("r_stencilTwoSide");
|
|
Cvar_SetToDefault ("r_shelltype");
|
|
Cvar_SetToDefault ("r_celshading");
|
|
Cvar_SetToDefault ("r_celshading_width");
|
|
Cvar_SetToDefault ("r_screenshot_format");
|
|
Cvar_SetToDefault ("r_screenshot_jpeg_quality");
|
|
Cvar_SetToDefault ("r_saveshotsize");
|
|
Cvar_SetToDefault ("r_font_upscale");
|
|
|
|
Menu_Video_Init();
|
|
}
|
|
|
|
static void M_ApplyVideoChanges (void *unused)
|
|
{
|
|
int customW, customH;
|
|
char *customStr;
|
|
|
|
UI_MenuSpinControl_SaveValue (&s_mode_list, "r_mode");
|
|
if (strcmp(ui_video_modes[s_mode_list.curValue], "-1") == 0) // use custom mode fields
|
|
{
|
|
customW = atoi(s_customwidth_field.buffer);
|
|
customH = atoi(s_customheight_field.buffer);
|
|
Cvar_SetInteger ("r_customwidth", ClampCvar( 640, 99999, customW ));
|
|
Cvar_SetInteger ("r_customheight", ClampCvar( 480, 99999, customH ));
|
|
|
|
// update fields in case values were clamped
|
|
customStr = Cvar_VariableString("r_customwidth");
|
|
Q_strncpyz (s_customwidth_field.buffer, sizeof(s_customwidth_field.buffer), customStr);
|
|
s_customwidth_field.cursor = (int)strlen(customStr);
|
|
|
|
customStr = Cvar_VariableString("r_customheight");
|
|
Q_strncpyz (s_customheight_field.buffer, sizeof(s_customwidth_field.buffer), customStr);
|
|
s_customheight_field.cursor = (int)strlen(customStr);
|
|
}
|
|
|
|
UI_MenuSpinControl_SaveValue (&s_fs_box, "vid_fullscreen");
|
|
UI_MenuSlider_SaveValue (&s_brightness_slider, "vid_gamma");
|
|
UI_MenuSpinControl_SaveValue (&s_texfilter_box, "r_texturemode");
|
|
UI_MenuSpinControl_SaveValue (&s_aniso_box, "r_anisotropic");
|
|
UI_MenuSpinControl_SaveValue (&s_texqual_box, "r_picmip");
|
|
UI_MenuSpinControl_SaveValue (&s_npot_mipmap_box, "r_nonpoweroftwo_mipmaps");
|
|
UI_MenuSpinControl_SaveValue (&s_sgis_mipmap_box, "r_sgis_generatemipmap");
|
|
// UI_MenuSpinControl_SaveValue (&s_texcompress_box, "r_ext_texture_compression");
|
|
UI_MenuSpinControl_SaveValue (&s_vsync_box, "r_swapinterval");
|
|
UI_MenuSpinControl_SaveValue (&s_refresh_box, "r_displayrefresh");
|
|
UI_MenuSpinControl_SaveValue (&s_adjust_fov_box, "cl_widescreen_fov");
|
|
UI_MenuSpinControl_SaveValue (&s_async_box, "cl_async");
|
|
|
|
M_PrepareVideoRefresh ();
|
|
|
|
// UI_ForceMenuOff();
|
|
}
|
|
|
|
//=======================================================================
|
|
|
|
void Menu_Video_Init (void)
|
|
{
|
|
static const char *yesno_names[] =
|
|
{
|
|
"no",
|
|
"yes",
|
|
0
|
|
};
|
|
static const char *fullscreen_names[] =
|
|
{
|
|
"windowed",
|
|
"fullscreen",
|
|
"borderless",
|
|
0
|
|
};
|
|
static const char *refreshrate_names[] =
|
|
{
|
|
"[default]",
|
|
"[60Hz ]",
|
|
"[70Hz ]",
|
|
"[72Hz ]",
|
|
"[75Hz ]",
|
|
"[85Hz ]",
|
|
"[100Hz ]",
|
|
"[110Hz ]",
|
|
"[120Hz ]",
|
|
"[144Hz ]",
|
|
"[150Hz ]",
|
|
"[160Hz ]",
|
|
"[165Hz ]",
|
|
"[180Hz ]",
|
|
"[240Hz ]",
|
|
0
|
|
};
|
|
static const char *refreshrate_values[] =
|
|
{
|
|
"0",
|
|
"60",
|
|
"70",
|
|
"72",
|
|
"75",
|
|
"85",
|
|
"100",
|
|
"110",
|
|
"120",
|
|
"144",
|
|
"150",
|
|
"160",
|
|
"165",
|
|
"180",
|
|
"240",
|
|
0
|
|
};
|
|
static const char *texfilter_names[] =
|
|
{
|
|
"bilinear",
|
|
"trilinear",
|
|
0
|
|
};
|
|
static const char *texfilter_values[] =
|
|
{
|
|
"GL_LINEAR_MIPMAP_NEAREST",
|
|
"GL_LINEAR_MIPMAP_LINEAR",
|
|
0
|
|
};
|
|
static const char *lmh_names[] =
|
|
{
|
|
"lowest",
|
|
"low",
|
|
"medium",
|
|
"high",
|
|
"highest",
|
|
0
|
|
};
|
|
static const char *lmh_values[] =
|
|
{
|
|
"4",
|
|
"3",
|
|
"2",
|
|
"1",
|
|
"0",
|
|
0
|
|
};
|
|
int y = 0;
|
|
char *customStr;
|
|
|
|
if ( !con_font_size )
|
|
con_font_size = Cvar_Get ("con_font_size", "8", CVAR_ARCHIVE);
|
|
|
|
s_video_menu.x = SCREEN_WIDTH*0.5;
|
|
// s_video_menu.x = viddef.width * 0.50;
|
|
s_video_menu.y = SCREEN_HEIGHT*0.5 - 80;
|
|
s_video_menu.nitems = 0;
|
|
|
|
s_mode_list.generic.type = MTYPE_SPINCONTROL;
|
|
s_mode_list.generic.textSize = MENU_FONT_SIZE;
|
|
s_mode_list.generic.name = "video mode";
|
|
s_mode_list.generic.x = 0;
|
|
s_mode_list.generic.y = y;
|
|
s_mode_list.itemNames = ui_resolution_names;
|
|
s_mode_list.itemValues = ui_video_modes;
|
|
s_mode_list.generic.callback = VidModeCallback;
|
|
s_mode_list.generic.statusbar = "changes screen resolution";
|
|
UI_MenuSpinControl_SetValue (&s_mode_list, "r_mode", 0, 0, false);
|
|
|
|
s_customwidth_title.generic.type = MTYPE_SEPARATOR;
|
|
s_customwidth_title.generic.textSize = MENU_FONT_SIZE;
|
|
s_customwidth_title.generic.flags = 0;
|
|
s_customwidth_title.generic.name = "custom width";
|
|
s_customwidth_title.generic.x = -2*MENU_FONT_SIZE;
|
|
s_customwidth_title.generic.y = y += 1.5*MENU_LINE_SIZE;
|
|
|
|
s_customwidth_field.generic.type = MTYPE_FIELD;
|
|
s_customwidth_field.generic.textSize = MENU_FONT_SIZE;
|
|
s_customwidth_field.generic.flags = QMF_NUMBERSONLY;
|
|
// s_customwidth_field.generic.name = "custom width";
|
|
s_customwidth_field.generic.callback = 0;
|
|
s_customwidth_field.generic.x = -14*MENU_FONT_SIZE;
|
|
s_customwidth_field.generic.y = y + 1.5*MENU_LINE_SIZE;
|
|
s_customwidth_field.length = 5;
|
|
s_customwidth_field.visible_length = 6;
|
|
customStr = Cvar_VariableString("r_customwidth");
|
|
Q_strncpyz (s_customwidth_field.buffer, sizeof(s_customwidth_field.buffer), customStr);
|
|
s_customwidth_field.cursor = (int)strlen( customStr );
|
|
|
|
s_customheight_title.generic.type = MTYPE_SEPARATOR;
|
|
s_customheight_title.generic.textSize = MENU_FONT_SIZE;
|
|
s_customheight_title.generic.flags = 0;
|
|
s_customheight_title.generic.name = "custom height";
|
|
s_customheight_title.generic.x = 14.5*MENU_FONT_SIZE;
|
|
s_customheight_title.generic.y = y;
|
|
|
|
s_customheight_field.generic.type = MTYPE_FIELD;
|
|
s_customheight_field.generic.textSize = MENU_FONT_SIZE;
|
|
s_customheight_field.generic.flags = QMF_NUMBERSONLY;
|
|
// s_customheight_field.generic.name = "custom height";
|
|
s_customheight_field.generic.callback = 0;
|
|
s_customheight_field.generic.x = 2*MENU_FONT_SIZE;
|
|
s_customheight_field.generic.y = y + 1.5*MENU_LINE_SIZE;
|
|
s_customheight_field.length = 5;
|
|
s_customheight_field.visible_length = 6;
|
|
customStr = Cvar_VariableString("r_customheight");
|
|
Q_strncpyz (s_customheight_field.buffer, sizeof(s_customheight_field.buffer), customStr);
|
|
s_customheight_field.cursor = (int)strlen( customStr );
|
|
|
|
s_fs_box.generic.type = MTYPE_SPINCONTROL;
|
|
s_fs_box.generic.textSize = MENU_FONT_SIZE;
|
|
s_fs_box.generic.x = 0;
|
|
s_fs_box.generic.y = y += 3.5*MENU_LINE_SIZE;
|
|
s_fs_box.generic.name = "display type"; // "fullscreen"
|
|
s_fs_box.itemNames = fullscreen_names;
|
|
// s_fs_box.generic.statusbar = "changes bettween fullscreen and windowed display";
|
|
s_fs_box.generic.statusbar = "changes bettween fullscreen, borderless window, and windowed display";
|
|
UI_MenuSpinControl_SetValue (&s_fs_box, "vid_fullscreen", 0, 2, true);
|
|
|
|
s_brightness_slider.generic.type = MTYPE_SLIDER;
|
|
s_brightness_slider.generic.textSize = MENU_FONT_SIZE;
|
|
s_brightness_slider.generic.x = 0;
|
|
s_brightness_slider.generic.y = y += MENU_LINE_SIZE;
|
|
s_brightness_slider.generic.name = "brightness";
|
|
s_brightness_slider.generic.callback = BrightnessCallback;
|
|
s_brightness_slider.maxPos = 20;
|
|
s_brightness_slider.baseValue = 1.3f;
|
|
s_brightness_slider.increment = -0.05f;
|
|
s_brightness_slider.displayAsPercent = false;
|
|
s_brightness_slider.generic.statusbar = "changes display brightness";
|
|
UI_MenuSlider_SetValue (&s_brightness_slider, "vid_gamma", 0.3f, 1.3f, true);
|
|
|
|
s_texfilter_box.generic.type = MTYPE_SPINCONTROL;
|
|
s_texfilter_box.generic.textSize = MENU_FONT_SIZE;
|
|
s_texfilter_box.generic.x = 0;
|
|
s_texfilter_box.generic.y = y += 2*MENU_LINE_SIZE;
|
|
s_texfilter_box.generic.name = "texture filter";
|
|
s_texfilter_box.itemNames = texfilter_names;
|
|
s_texfilter_box.itemValues = texfilter_values;
|
|
s_texfilter_box.generic.statusbar = "changes texture filtering mode";
|
|
UI_MenuSpinControl_SetValue (&s_texfilter_box, "r_texturemode", 0, 0, false);
|
|
|
|
s_aniso_box.generic.type = MTYPE_SPINCONTROL;
|
|
s_aniso_box.generic.textSize = MENU_FONT_SIZE;
|
|
s_aniso_box.generic.x = 0;
|
|
s_aniso_box.generic.y = y += MENU_LINE_SIZE;
|
|
s_aniso_box.generic.name = "anisotropic filter";
|
|
s_aniso_box.itemNames = ui_aniso_names;
|
|
s_aniso_box.itemValues = ui_aniso_values;
|
|
s_aniso_box.generic.callback = AnisoCallback;
|
|
s_aniso_box.generic.statusbar = "changes level of anisotropic mipmap filtering";
|
|
UI_MenuSpinControl_SetValue (&s_aniso_box, "r_anisotropic", 0, 0, false);
|
|
|
|
s_texqual_box.generic.type = MTYPE_SPINCONTROL;
|
|
s_texqual_box.generic.textSize = MENU_FONT_SIZE;
|
|
s_texqual_box.generic.x = 0;
|
|
s_texqual_box.generic.y = y += MENU_LINE_SIZE;
|
|
s_texqual_box.generic.name = "texture quality";
|
|
s_texqual_box.itemNames = lmh_names;
|
|
s_texqual_box.itemValues = lmh_values;
|
|
s_texqual_box.generic.statusbar = "changes maximum texture size (highest = no limit)";
|
|
UI_MenuSpinControl_SetValue (&s_texqual_box, "r_picmip", 0, 0, false);
|
|
|
|
s_npot_mipmap_box.generic.type = MTYPE_SPINCONTROL;
|
|
s_npot_mipmap_box.generic.textSize = MENU_FONT_SIZE;
|
|
s_npot_mipmap_box.generic.x = 0;
|
|
s_npot_mipmap_box.generic.y = y += MENU_LINE_SIZE;
|
|
s_npot_mipmap_box.generic.name = "non-power-of-2 mipmaps";
|
|
s_npot_mipmap_box.itemNames = yesno_names;
|
|
s_npot_mipmap_box.generic.statusbar = "enables non-power-of-2 mipmapped textures (requires driver support)";
|
|
UI_MenuSpinControl_SetValue (&s_npot_mipmap_box, "r_nonpoweroftwo_mipmaps", 0, 1, true);
|
|
|
|
s_sgis_mipmap_box.generic.type = MTYPE_SPINCONTROL;
|
|
s_sgis_mipmap_box.generic.textSize = MENU_FONT_SIZE;
|
|
s_sgis_mipmap_box.generic.x = 0;
|
|
s_sgis_mipmap_box.generic.y = y += MENU_LINE_SIZE;
|
|
s_sgis_mipmap_box.generic.name = "SGIS mipmaps";
|
|
s_sgis_mipmap_box.itemNames = yesno_names;
|
|
s_sgis_mipmap_box.generic.statusbar = "enables driver-based mipmap generation";
|
|
UI_MenuSpinControl_SetValue (&s_sgis_mipmap_box, "r_sgis_generatemipmap", 0, 1, true);
|
|
/*
|
|
s_texcompress_box.generic.type = MTYPE_SPINCONTROL;
|
|
s_texcompress_box.generic.textSize = MENU_FONT_SIZE;
|
|
s_texcompress_box.generic.x = 0;
|
|
s_texcompress_box.generic.y = y += MENU_LINE_SIZE;
|
|
s_texcompress_box.generic.name = "texture compression";
|
|
s_texcompress_box.itemNames = yesno_names;
|
|
s_texcompress_box.generic.statusbar = "reduces quality, increases performance (leave off unless needed)";
|
|
UI_MenuSpinControl_SetValue (&s_texcompress_box, "r_ext_texture_compression", 0, 1, true);
|
|
*/
|
|
s_vsync_box.generic.type = MTYPE_SPINCONTROL;
|
|
s_vsync_box.generic.textSize = MENU_FONT_SIZE;
|
|
s_vsync_box.generic.x = 0;
|
|
s_vsync_box.generic.y = y += 2*MENU_LINE_SIZE;
|
|
s_vsync_box.generic.name = "video sync";
|
|
s_vsync_box.generic.callback = VsyncCallback;
|
|
s_vsync_box.itemNames = yesno_names;
|
|
s_vsync_box.generic.statusbar = "sync framerate with monitor refresh";
|
|
UI_MenuSpinControl_SetValue (&s_vsync_box, "r_swapinterval", 0, 1, true);
|
|
|
|
// Knightmare- refresh rate option
|
|
s_refresh_box.generic.type = MTYPE_SPINCONTROL;
|
|
s_refresh_box.generic.textSize = MENU_FONT_SIZE;
|
|
s_refresh_box.generic.x = 0;
|
|
s_refresh_box.generic.y = y += MENU_LINE_SIZE;
|
|
s_refresh_box.generic.name = "refresh rate";
|
|
s_refresh_box.itemNames = refreshrate_names;
|
|
s_refresh_box.itemValues = refreshrate_values;
|
|
s_refresh_box.generic.statusbar = "sets refresh rate for fullscreen modes";
|
|
UI_MenuSpinControl_SetValue (&s_refresh_box, "r_displayrefresh", 0, 0, false);
|
|
|
|
s_adjust_fov_box.generic.type = MTYPE_SPINCONTROL;
|
|
s_adjust_fov_box.generic.textSize = MENU_FONT_SIZE;
|
|
s_adjust_fov_box.generic.x = 0;
|
|
s_adjust_fov_box.generic.y = y += MENU_LINE_SIZE;
|
|
s_adjust_fov_box.generic.name = "fov autoscaling";
|
|
s_adjust_fov_box.generic.callback = AdjustFOVCallback;
|
|
s_adjust_fov_box.itemNames = yesno_names;
|
|
s_adjust_fov_box.generic.statusbar = "automatic scaling of fov for widescreen modes";
|
|
UI_MenuSpinControl_SetValue (&s_adjust_fov_box, "cl_widescreen_fov", 0, 1, true);
|
|
|
|
s_async_box.generic.type = MTYPE_SPINCONTROL;
|
|
s_async_box.generic.textSize = MENU_FONT_SIZE;
|
|
s_async_box.generic.x = 0;
|
|
s_async_box.generic.y = y += MENU_LINE_SIZE;
|
|
s_async_box.generic.name = "async refresh";
|
|
s_async_box.generic.callback = AsyncCallback;
|
|
s_async_box.itemNames = yesno_names;
|
|
s_async_box.generic.statusbar = "decouples network framerate from render framerate";
|
|
UI_MenuSpinControl_SetValue (&s_async_box, "cl_async", 0, 1, true);
|
|
|
|
s_advanced_action.generic.type = MTYPE_ACTION;
|
|
s_advanced_action.generic.textSize = MENU_FONT_SIZE;
|
|
s_advanced_action.generic.name = "Advanced Options";
|
|
s_advanced_action.generic.x = 0;
|
|
s_advanced_action.generic.y = y += 3*MENU_LINE_SIZE;
|
|
s_advanced_action.generic.callback = M_AdvancedOptions;
|
|
|
|
s_defaults_action.generic.type = MTYPE_ACTION;
|
|
s_defaults_action.generic.textSize = MENU_FONT_SIZE;
|
|
s_defaults_action.generic.name = "Reset to Defaults";
|
|
s_defaults_action.generic.x = 0;
|
|
s_defaults_action.generic.y = y += 3*MENU_LINE_SIZE;
|
|
s_defaults_action.generic.callback = M_ResetVideoDefaults;
|
|
s_defaults_action.generic.statusbar = "resets all video settings to internal defaults";
|
|
|
|
// changed cancel to apply changes, thanx to MrG
|
|
s_apply_action.generic.type = MTYPE_ACTION;
|
|
s_apply_action.generic.textSize = MENU_FONT_SIZE;
|
|
s_apply_action.generic.name = "Apply Changes";
|
|
s_apply_action.generic.x = 0;
|
|
s_apply_action.generic.y = y += 2*MENU_LINE_SIZE;
|
|
s_apply_action.generic.callback = M_ApplyVideoChanges;
|
|
|
|
s_backmain_action.generic.type = MTYPE_ACTION;
|
|
s_backmain_action.generic.textSize = MENU_FONT_SIZE;
|
|
s_backmain_action.generic.name = "Back to Main";
|
|
s_backmain_action.generic.x = 0;
|
|
s_backmain_action.generic.y = y += 2*MENU_LINE_SIZE;
|
|
s_backmain_action.generic.callback = UI_BackMenu;
|
|
|
|
UI_AddMenuItem (&s_video_menu, (void *) &s_mode_list);
|
|
|
|
UI_AddMenuItem (&s_video_menu, (void *) &s_customwidth_title);
|
|
UI_AddMenuItem (&s_video_menu, (void *) &s_customwidth_field);
|
|
UI_AddMenuItem (&s_video_menu, (void *) &s_customheight_title);
|
|
UI_AddMenuItem (&s_video_menu, (void *) &s_customheight_field);
|
|
|
|
UI_AddMenuItem (&s_video_menu, (void *) &s_fs_box);
|
|
UI_AddMenuItem (&s_video_menu, (void *) &s_brightness_slider);
|
|
UI_AddMenuItem (&s_video_menu, (void *) &s_texfilter_box);
|
|
UI_AddMenuItem (&s_video_menu, (void *) &s_aniso_box);
|
|
UI_AddMenuItem (&s_video_menu, (void *) &s_texqual_box);
|
|
UI_AddMenuItem (&s_video_menu, (void *) &s_npot_mipmap_box);
|
|
UI_AddMenuItem (&s_video_menu, (void *) &s_sgis_mipmap_box);
|
|
// UI_AddMenuItem (&s_video_menu, (void *) &s_texcompress_box);
|
|
UI_AddMenuItem (&s_video_menu, (void *) &s_vsync_box);
|
|
UI_AddMenuItem (&s_video_menu, (void *) &s_refresh_box);
|
|
UI_AddMenuItem (&s_video_menu, (void *) &s_adjust_fov_box);
|
|
UI_AddMenuItem (&s_video_menu, (void *) &s_async_box);
|
|
|
|
UI_AddMenuItem (&s_video_menu, (void *) &s_advanced_action);
|
|
UI_AddMenuItem (&s_video_menu, (void *) &s_defaults_action);
|
|
UI_AddMenuItem (&s_video_menu, (void *) &s_apply_action);
|
|
UI_AddMenuItem (&s_video_menu, (void *) &s_backmain_action);
|
|
|
|
// UI_CenterMenu (&s_video_menu);
|
|
// s_video_menu.x -= MENU_FONT_SIZE;
|
|
}
|
|
|
|
void Menu_Video_Draw (void)
|
|
{
|
|
//int w, h;
|
|
|
|
// draw the banner
|
|
UI_DrawBanner ("m_banner_video");
|
|
|
|
// move cursor to a reasonable starting position
|
|
UI_AdjustMenuCursor (&s_video_menu, 1);
|
|
|
|
// draw the menu
|
|
UI_DrawMenu (&s_video_menu);
|
|
}
|
|
|
|
const char *Menu_Video_Key (int key)
|
|
{
|
|
return UI_DefaultMenuKey (&s_video_menu, key);
|
|
}
|
|
|
|
void Menu_Video_f (void)
|
|
{
|
|
Menu_Video_Init ();
|
|
UI_PushMenu (Menu_Video_Draw, Menu_Video_Key);
|
|
M_ShowCustomFields ();
|
|
}
|