2367 lines
No EOL
73 KiB
C++
2367 lines
No EOL
73 KiB
C++
#include "ui_local.h"
|
|
|
|
|
|
int s_enable_Names[] =
|
|
{
|
|
MNT_OFF,
|
|
MNT_ON,
|
|
MNT_NONE
|
|
};
|
|
|
|
// Precache stuff for VideoScreens
|
|
static struct
|
|
{
|
|
qhandle_t swooshTop;
|
|
qhandle_t swooshBottom;
|
|
qhandle_t swooshTopSmall;
|
|
qhandle_t swooshBottomSmall;
|
|
} videodata_cache;
|
|
|
|
// Precache stuff for VideoScreens
|
|
static struct
|
|
{
|
|
qhandle_t gamma;
|
|
qhandle_t top;
|
|
menulist_s cinematic_quality;
|
|
menulist_s anisotropicfiltering;
|
|
} videodata2;
|
|
|
|
// Precache stuff for Video Driver
|
|
#define MAX_VID_DRIVERS 128
|
|
static struct
|
|
{
|
|
menuframework_s menu;
|
|
|
|
char *drivers[MAX_VID_DRIVERS];
|
|
char extensionsString[2*MAX_STRING_CHARS];
|
|
|
|
menutext_s line1;
|
|
menutext_s line2;
|
|
menutext_s line3;
|
|
menutext_s line4;
|
|
menutext_s line5;
|
|
menutext_s line6;
|
|
menutext_s line7;
|
|
menutext_s line8;
|
|
menutext_s line9;
|
|
menutext_s line10;
|
|
menutext_s line11;
|
|
menutext_s line12;
|
|
menutext_s line13;
|
|
menutext_s line14;
|
|
menutext_s line15;
|
|
menutext_s line16;
|
|
menutext_s line17;
|
|
menutext_s line18;
|
|
menutext_s line19;
|
|
menutext_s line20;
|
|
menutext_s line21;
|
|
menutext_s line22;
|
|
menutext_s line23;
|
|
menutext_s line24;
|
|
|
|
qhandle_t corner_ll_8_16;
|
|
qhandle_t corner_ll_16_16;
|
|
qhandle_t arrow_dn;
|
|
menubitmap_s arrowdwn;
|
|
menubitmap_s arrowup;
|
|
int currentDriverLine;
|
|
int driverCnt;
|
|
|
|
int activeArrowDwn;
|
|
int activeArrowUp;
|
|
} s_videodriver;
|
|
|
|
|
|
static void* g_videolines[] =
|
|
{
|
|
&s_videodriver.line1,
|
|
&s_videodriver.line2,
|
|
&s_videodriver.line3,
|
|
&s_videodriver.line4,
|
|
&s_videodriver.line5,
|
|
&s_videodriver.line6,
|
|
&s_videodriver.line7,
|
|
&s_videodriver.line8,
|
|
&s_videodriver.line9,
|
|
&s_videodriver.line10,
|
|
&s_videodriver.line11,
|
|
&s_videodriver.line12,
|
|
&s_videodriver.line13,
|
|
&s_videodriver.line14,
|
|
&s_videodriver.line15,
|
|
&s_videodriver.line16,
|
|
&s_videodriver.line17,
|
|
&s_videodriver.line18,
|
|
&s_videodriver.line19,
|
|
&s_videodriver.line20,
|
|
&s_videodriver.line21,
|
|
&s_videodriver.line22,
|
|
&s_videodriver.line23,
|
|
&s_videodriver.line24,
|
|
NULL,
|
|
};
|
|
|
|
|
|
int video_sidebuttons[3][2] =
|
|
{
|
|
30, 250, // Video Data Button
|
|
30, 250 + 6 + (MENU_BUTTON_MED_HEIGHT * 1.5), // Video Drivers Button
|
|
30, 250 + (2 * (6 + (MENU_BUTTON_MED_HEIGHT * 1.5))), // Video Drivers Button
|
|
};
|
|
|
|
|
|
#define ID_MAINMENU 100
|
|
#define ID_CONTROLS 101
|
|
#define ID_VIDEO 102
|
|
#define ID_SOUND 103
|
|
#define ID_GAMEOPTIONS 104
|
|
#define ID_CDKEY 105
|
|
#define ID_VIDEODATA 110
|
|
#define ID_VIDEODATA2 111
|
|
#define ID_VIDEODRIVERS 112
|
|
#define ID_ARROWDWN 113
|
|
#define ID_ARROWUP 114
|
|
|
|
|
|
static menuframework_s s_video2_menu;
|
|
static menuslider_s s_video2_gamma_slider;
|
|
//static menuslider_s s_video2_intensity_slider;
|
|
static menuslider_s s_video2_screensize_slider;
|
|
|
|
|
|
static menuframework_s s_video_menu;
|
|
static menulist_s s_video_mode_option_list;
|
|
static menulist_s s_video_driver_list;
|
|
static menulist_s s_video_extension_enable_list;
|
|
static menulist_s s_video_mode_list;
|
|
static menulist_s s_video_colordepth_list;
|
|
static menulist_s s_video_fullscreen_list;
|
|
static menulist_s s_video_lighting_list;
|
|
static menulist_s s_video_geometry_list;
|
|
static menulist_s s_video_texture_quality_list;
|
|
static menulist_s s_video_tq_bits_list;
|
|
static menulist_s s_video_texture_mode_list;
|
|
static menulist_s s_video_simpleshaders_list;
|
|
static menulist_s s_video_compresstextures;
|
|
static menuaction_s s_video_apply_action;
|
|
static menubitmap_s s_video_drivers;
|
|
static menubitmap_s s_video_data;
|
|
static menubitmap_s s_video_data2;
|
|
static menuaction_s s_video_apply_action2;
|
|
|
|
void UI_VideoDriverMenu( void );
|
|
void Video_SideButtons(menuframework_s *menu,int menuType);
|
|
void VideoDriver_Lines(int increment);
|
|
|
|
|
|
typedef enum
|
|
{
|
|
VDG_LEFTNUMBERS,
|
|
|
|
VDG_SPEC_ROW1,
|
|
VDG_SPEC_ROW2,
|
|
VDG_SPEC_ROW3,
|
|
VDG_SPEC_ROW4,
|
|
|
|
VDG_COL1_NUM1,
|
|
VDG_COL1_NUM2,
|
|
VDG_COL1_NUM3,
|
|
VDG_COL1_NUM4,
|
|
VDG_COL1_NUM5,
|
|
|
|
VDG_COL2_NUM1,
|
|
VDG_COL2_NUM2,
|
|
VDG_COL2_NUM3,
|
|
VDG_COL2_NUM4,
|
|
VDG_COL2_NUM5,
|
|
|
|
VDG_COL3_NUM1,
|
|
VDG_COL3_NUM2,
|
|
VDG_COL3_NUM3,
|
|
VDG_COL3_NUM4,
|
|
VDG_COL3_NUM5,
|
|
|
|
VDG_COL4_NUM1,
|
|
VDG_COL4_NUM2,
|
|
VDG_COL4_NUM3,
|
|
VDG_COL4_NUM4,
|
|
VDG_COL4_NUM5,
|
|
|
|
VDG_COL5_NUM1,
|
|
VDG_COL5_NUM2,
|
|
VDG_COL5_NUM3,
|
|
VDG_COL5_NUM4,
|
|
VDG_COL5_NUM5,
|
|
|
|
VDG_COL6_NUM1,
|
|
VDG_COL6_NUM2,
|
|
VDG_COL6_NUM3,
|
|
VDG_COL6_NUM4,
|
|
VDG_COL6_NUM5,
|
|
|
|
VDG_COL7_NUM1,
|
|
VDG_COL7_NUM2,
|
|
VDG_COL7_NUM3,
|
|
VDG_COL7_NUM4,
|
|
VDG_COL7_NUM5,
|
|
|
|
VDG_MAX
|
|
} videodata_graphics_t;
|
|
|
|
menugraphics_s videodatamenu_graphics[VDG_MAX] =
|
|
{
|
|
// type timer x y width height file/text graphic, min max target inc style color
|
|
MG_VAR, 0.0, 0, 0, 0, 0, NULL, 0,0, NULL, 0, 0, 0, 0, 0, 0, NULL, // VDG_LEFTNUMBERS
|
|
|
|
MG_GRAPHIC, 0.0, 408, 0, 4, 4, "menu/common/circle.tga",0,0, NULL, 0, 0, 0, 0, 0, CT_LTGOLD1, NULL, // VDG_SPEC_ROW1
|
|
MG_GRAPHIC, 0.0, 408, 0, 4, 4, "menu/common/circle.tga",0,0, NULL, 0, 0, 0, 0, 0, CT_LTGOLD1, NULL, // VDG_SPEC_ROW2
|
|
MG_GRAPHIC, 0.0, 408, 0, 4, 4, "menu/common/circle.tga",0,0, NULL, 0, 0, 0, 0, 0, CT_LTGOLD1, NULL, // VDG_SPEC_ROW3
|
|
MG_GRAPHIC, 0.0, 408, 0, 4, 4, "menu/common/circle.tga",0,0, NULL, 0, 0, 0, 0, 0, CT_LTGOLD1, NULL, // VDG_SPEC_ROW4
|
|
|
|
MG_NUMBER, 0.0, 412, 55, 16, 10, NULL, 0,0, NULL, 0, 5, 0, 0, UI_TINYFONT, CT_DKGOLD1, NULL, // VDG_COL1_NUM1
|
|
MG_NUMBER, 0.0, 412, 69, 16, 10, NULL, 0,0, NULL, 0, 5, 0, 0, UI_TINYFONT, CT_DKGOLD1, NULL, // VDG_COL1_NUM2
|
|
MG_NUMBER, 0.0, 412, 83, 16, 10, NULL, 0,0, NULL, 0, 5, 0, 0, UI_TINYFONT, CT_DKGOLD1, NULL, // VDG_COL1_NUM3
|
|
MG_NUMBER, 0.0, 412, 97, 16, 10, NULL, 0,0, NULL, 0, 5, 0, 0, UI_TINYFONT, CT_DKGOLD1, NULL, // VDG_COL1_NUM4
|
|
MG_NUMBER, 0.0, 412, 111, 16, 10, NULL, 0,0, NULL, 0, 5, 0, 0, UI_TINYFONT, CT_DKGOLD1, NULL, // VDG_COL1_NUM5
|
|
|
|
MG_NUMBER, 0.0, 447, 55, 16, 10, NULL, 0,0, NULL, 0, 5, 0, 0, UI_TINYFONT, CT_DKGOLD1, NULL, // VDG_COL2_NUM1
|
|
MG_NUMBER, 0.0, 447, 69, 16, 10, NULL, 0,0, NULL, 0, 5, 0, 0, UI_TINYFONT, CT_DKGOLD1, NULL, // VDG_COL2_NUM2
|
|
MG_NUMBER, 0.0, 447, 83, 16, 10, NULL, 0,0, NULL, 0, 5, 0, 0, UI_TINYFONT, CT_DKGOLD1, NULL, // VDG_COL2_NUM3
|
|
MG_NUMBER, 0.0, 447, 97, 16, 10, NULL, 0,0, NULL, 0, 5, 0, 0, UI_TINYFONT, CT_DKGOLD1, NULL, // VDG_COL2_NUM4
|
|
MG_NUMBER, 0.0, 447, 111, 16, 10, NULL, 0,0, NULL, 0, 5, 0, 0, UI_TINYFONT, CT_DKGOLD1, NULL, // VDG_COL2_NUM5
|
|
|
|
MG_NUMBER, 0.0, 482, 55, 16, 10, NULL, 0,0, NULL, 0, 5, 0, 0, UI_TINYFONT, CT_DKGOLD1, NULL, // VDG_COL3_NUM1
|
|
MG_NUMBER, 0.0, 482, 69, 16, 10, NULL, 0,0, NULL, 0, 5, 0, 0, UI_TINYFONT, CT_DKGOLD1, NULL, // VDG_COL3_NUM2
|
|
MG_NUMBER, 0.0, 482, 83, 16, 10, NULL, 0,0, NULL, 0, 5, 0, 0, UI_TINYFONT, CT_DKGOLD1, NULL, // VDG_COL3_NUM3
|
|
MG_NUMBER, 0.0, 482, 97, 16, 10, NULL, 0,0, NULL, 0, 5, 0, 0, UI_TINYFONT, CT_DKGOLD1, NULL, // VDG_COL3_NUM4
|
|
MG_NUMBER, 0.0, 482, 111, 16, 10, NULL, 0,0, NULL, 0, 5, 0, 0, UI_TINYFONT, CT_DKGOLD1, NULL, // VDG_COL3_NUM5
|
|
|
|
MG_NUMBER, 0.0, 517, 55, 16, 10, NULL, 0,0, NULL, 0, 2, 0, 0, UI_TINYFONT, CT_DKGOLD1, NULL, // VDG_COL4_NUM1
|
|
MG_NUMBER, 0.0, 517, 69, 16, 10, NULL, 0,0, NULL, 0, 2, 0, 0, UI_TINYFONT, CT_DKGOLD1, NULL, // VDG_COL4_NUM2
|
|
MG_NUMBER, 0.0, 517, 83, 16, 10, NULL, 0,0, NULL, 0, 2, 0, 0, UI_TINYFONT, CT_DKGOLD1, NULL, // VDG_COL4_NUM3
|
|
MG_NUMBER, 0.0, 517, 97, 16, 10, NULL, 0,0, NULL, 0, 2, 0, 0, UI_TINYFONT, CT_DKGOLD1, NULL, // VDG_COL4_NUM4
|
|
MG_NUMBER, 0.0, 517, 111, 16, 10, NULL, 0,0, NULL, 0, 2, 0, 0, UI_TINYFONT, CT_DKGOLD1, NULL, // VDG_COL4_NUM5
|
|
|
|
MG_NUMBER, 0.0, 532, 55, 16, 10, NULL, 0,0, NULL, 0, 2, 0, 0, UI_TINYFONT, CT_DKGOLD1, NULL, // VDG_COL5_NUM1
|
|
MG_NUMBER, 0.0, 532, 69, 16, 10, NULL, 0,0, NULL, 0, 2, 0, 0, UI_TINYFONT, CT_DKGOLD1, NULL, // VDG_COL5_NUM2
|
|
MG_NUMBER, 0.0, 532, 83, 16, 10, NULL, 0,0, NULL, 0, 2, 0, 0, UI_TINYFONT, CT_DKGOLD1, NULL, // VDG_COL5_NUM3
|
|
MG_NUMBER, 0.0, 532, 97, 16, 10, NULL, 0,0, NULL, 0, 2, 0, 0, UI_TINYFONT, CT_DKGOLD1, NULL, // VDG_COL5_NUM4
|
|
MG_NUMBER, 0.0, 532, 111, 16, 10, NULL, 0,0, NULL, 0, 2, 0, 0, UI_TINYFONT, CT_DKGOLD1, NULL, // VDG_COL5_NUM5
|
|
|
|
MG_NUMBER, 0.0, 547, 55, 16, 10, NULL, 0,0, NULL, 0, 2, 0, 0, UI_TINYFONT, CT_DKGOLD1, NULL, // VDG_COL6_NUM1
|
|
MG_NUMBER, 0.0, 547, 69, 16, 10, NULL, 0,0, NULL, 0, 2, 0, 0, UI_TINYFONT, CT_DKGOLD1, NULL, // VDG_COL6_NUM2
|
|
MG_NUMBER, 0.0, 547, 83, 16, 10, NULL, 0,0, NULL, 0, 2, 0, 0, UI_TINYFONT, CT_DKGOLD1, NULL, // VDG_COL6_NUM3
|
|
MG_NUMBER, 0.0, 547, 97, 16, 10, NULL, 0,0, NULL, 0, 2, 0, 0, UI_TINYFONT, CT_DKGOLD1, NULL, // VDG_COL6_NUM4
|
|
MG_NUMBER, 0.0, 547, 111, 16, 10, NULL, 0,0, NULL, 0, 2, 0, 0, UI_TINYFONT, CT_DKGOLD1, NULL, // VDG_COL6_NUM5
|
|
|
|
MG_NUMBER, 0.0, 562, 55, 16, 10, NULL, 0,0, NULL, 0, 6, 0, 0, UI_TINYFONT, CT_DKGOLD1, NULL, // VDG_COL7_NUM1
|
|
MG_NUMBER, 0.0, 562, 69, 16, 10, NULL, 0,0, NULL, 0, 6, 0, 0, UI_TINYFONT, CT_DKGOLD1, NULL, // VDG_COL7_NUM2
|
|
MG_NUMBER, 0.0, 562, 83, 16, 10, NULL, 0,0, NULL, 0, 6, 0, 0, UI_TINYFONT, CT_DKGOLD1, NULL, // VDG_COL7_NUM3
|
|
MG_NUMBER, 0.0, 562, 97, 16, 10, NULL, 0,0, NULL, 0, 6, 0, 0, UI_TINYFONT, CT_DKGOLD1, NULL, // VDG_COL7_NUM4
|
|
MG_NUMBER, 0.0, 562, 111, 16, 10, NULL, 0,0, NULL, 0, 6, 0, 0, UI_TINYFONT, CT_DKGOLD1, NULL, // VDG_COL7_NUM5
|
|
};
|
|
|
|
|
|
static const char *s_drivers[] =
|
|
{
|
|
OPENGL_DRIVER_NAME,
|
|
_3DFX_DRIVER_NAME,
|
|
0
|
|
};
|
|
|
|
|
|
static void ApplyChanges( void *unused, int notification );
|
|
static void ApplyChanges2( void *unused, int notification );
|
|
|
|
/*
|
|
=======================================================================
|
|
|
|
DRIVER INFORMATION MENU
|
|
|
|
=======================================================================
|
|
*/
|
|
#define ID_RETURN 100
|
|
|
|
/*
|
|
=======================================================================
|
|
|
|
VIDEO MENU
|
|
|
|
=======================================================================
|
|
*/
|
|
typedef struct
|
|
{
|
|
int mode;
|
|
qboolean fullscreen;
|
|
int tq;
|
|
int lighting;
|
|
int colordepth;
|
|
int texturebits;
|
|
int geometry;
|
|
int filter;
|
|
int driver;
|
|
qboolean extensions;
|
|
int simpleshaders;
|
|
int compresstextures;
|
|
} InitialVideoOptions_s;
|
|
|
|
static InitialVideoOptions_s s_ivo;
|
|
|
|
|
|
static InitialVideoOptions_s s_ivo_templates[] =
|
|
{
|
|
{
|
|
2, qtrue, 3, 0, 2, 2, 2, 1, 0, qtrue, 0, 0, // JDC: this was tq 3
|
|
},
|
|
{
|
|
1, qtrue, 2, 0, 0, 0, 2, 0, 0, qtrue, 0, 0,
|
|
},
|
|
{
|
|
0, qtrue, 1, 0, 1, 0, 0, 0, 0, qtrue, 0, 0,
|
|
},
|
|
{
|
|
0, qtrue, 1, 1, 1, 0, 0, 0, 0, qtrue, 1, 0,
|
|
},
|
|
{
|
|
1, qtrue, 1, 0, 0, 0, 1, 0, 0, qtrue, 0, 0,
|
|
}
|
|
};
|
|
|
|
#define NUM_IVO_TEMPLATES ( sizeof( s_ivo_templates ) / sizeof( s_ivo_templates[0] ) )
|
|
|
|
|
|
/*
|
|
===============
|
|
GetInitialVideoVars - place values in s_ivo structure
|
|
===============
|
|
*/
|
|
static void GetInitialVideoVars( void )
|
|
{
|
|
s_ivo.colordepth = s_video_colordepth_list.curvalue;
|
|
s_ivo.driver = s_video_driver_list.curvalue;
|
|
s_ivo.mode = s_video_mode_list.curvalue;
|
|
s_ivo.fullscreen = s_video_fullscreen_list.curvalue;
|
|
s_ivo.extensions = s_video_extension_enable_list.curvalue;
|
|
s_ivo.tq = s_video_texture_quality_list.curvalue;
|
|
// s_ivo.lighting = s_video_lighting_list.curvalue;
|
|
s_ivo.geometry = s_video_geometry_list.curvalue;
|
|
s_ivo.filter = s_video_texture_mode_list.curvalue;
|
|
s_ivo.texturebits = s_video_tq_bits_list.curvalue;
|
|
s_ivo.simpleshaders = s_video_simpleshaders_list.curvalue;
|
|
s_ivo.compresstextures = s_video_compresstextures.curvalue;
|
|
|
|
}
|
|
|
|
|
|
/*
|
|
===============
|
|
CheckConfigVsTemplates
|
|
===============
|
|
*/
|
|
static void CheckConfigVsTemplates( void )
|
|
{
|
|
int i;
|
|
|
|
for ( i = 0; i < NUM_IVO_TEMPLATES; i++ )
|
|
{
|
|
if ( s_ivo_templates[i].colordepth != s_video_colordepth_list.curvalue )
|
|
continue;
|
|
if ( s_ivo_templates[i].driver != s_video_driver_list.curvalue )
|
|
continue;
|
|
if ( s_ivo_templates[i].mode != s_video_mode_list.curvalue )
|
|
continue;
|
|
if ( s_ivo_templates[i].fullscreen != s_video_fullscreen_list.curvalue )
|
|
continue;
|
|
if ( s_ivo_templates[i].tq != s_video_texture_quality_list.curvalue )
|
|
continue;
|
|
// if ( s_ivo_templates[i].lighting != s_video_lighting_list.curvalue )
|
|
// continue;
|
|
if ( s_ivo_templates[i].geometry != s_video_geometry_list.curvalue )
|
|
continue;
|
|
if ( s_ivo_templates[i].filter != s_video_texture_mode_list.curvalue )
|
|
continue;
|
|
if ( s_ivo_templates[i].simpleshaders != s_video_simpleshaders_list.curvalue )
|
|
continue;
|
|
|
|
// if ( s_ivo_templates[i].compresstextures != s_video_compresstextures.curvalue )
|
|
// continue;
|
|
|
|
// if ( s_ivo_templates[i].texturebits != s_texturebits_box.curvalue )
|
|
// continue;
|
|
s_video_mode_option_list.curvalue = i;
|
|
return;
|
|
}
|
|
s_video_mode_option_list.curvalue = 4;
|
|
|
|
}
|
|
|
|
/*
|
|
===============
|
|
UpdateMenuItemValues
|
|
===============
|
|
*/
|
|
static void UpdateMenuItemValues( void )
|
|
{
|
|
|
|
if ( s_video_driver_list.curvalue == 1 )
|
|
{
|
|
s_video_fullscreen_list.curvalue = 1;
|
|
s_video_fullscreen_list.generic.flags |= QMF_GRAYED;
|
|
s_video_colordepth_list.curvalue = 1;
|
|
}
|
|
else
|
|
{
|
|
s_video_fullscreen_list.generic.flags &= ~QMF_GRAYED;
|
|
}
|
|
|
|
if ( s_video_fullscreen_list.curvalue == 0 || s_video_driver_list.curvalue == 1 )
|
|
{
|
|
s_video_colordepth_list.curvalue = 0;
|
|
s_video_colordepth_list.generic.flags |= QMF_GRAYED;
|
|
}
|
|
else
|
|
{
|
|
s_video_colordepth_list.generic.flags &= ~QMF_GRAYED;
|
|
}
|
|
|
|
// If you change the extension enable, texture quality changes automatically
|
|
if ( s_video_extension_enable_list.curvalue == 0 )
|
|
{
|
|
if ( s_video_tq_bits_list.curvalue == 0 )
|
|
{
|
|
s_video_tq_bits_list.curvalue = 1;
|
|
}
|
|
}
|
|
|
|
s_video_apply_action.generic.flags |= QMF_GRAYED;
|
|
s_video_apply_action.generic.flags &= ~QMF_BLINK;
|
|
|
|
|
|
// FIXME : this could be handled much better
|
|
|
|
// Check and see if anything has changed from the original data
|
|
s_video_mode_list.updated = 0;
|
|
if ( s_ivo.mode != s_video_mode_list.curvalue )
|
|
{
|
|
s_video_mode_list.updated = 1;
|
|
s_video_apply_action.generic.flags &= ~QMF_GRAYED;
|
|
s_video_apply_action.generic.flags |= QMF_BLINK;
|
|
}
|
|
|
|
s_video_fullscreen_list.updated = 0;
|
|
if ( s_ivo.fullscreen != s_video_fullscreen_list.curvalue )
|
|
{
|
|
s_video_fullscreen_list.updated = 1;
|
|
s_video_apply_action.generic.flags &= ~QMF_GRAYED;
|
|
s_video_apply_action.generic.flags |= QMF_BLINK;
|
|
}
|
|
|
|
s_video_extension_enable_list.updated = 0;
|
|
if ( s_ivo.extensions != s_video_extension_enable_list.curvalue )
|
|
{
|
|
s_video_extension_enable_list.updated = 1;
|
|
s_video_apply_action.generic.flags &= ~QMF_GRAYED;
|
|
s_video_apply_action.generic.flags |= QMF_BLINK;
|
|
}
|
|
|
|
s_video_simpleshaders_list.updated = 0;
|
|
if ( s_ivo.simpleshaders != s_video_simpleshaders_list.curvalue )
|
|
{
|
|
s_video_simpleshaders_list.updated = 1;
|
|
s_video_apply_action.generic.flags &= ~QMF_GRAYED;
|
|
s_video_apply_action.generic.flags |= QMF_BLINK;
|
|
}
|
|
|
|
s_video_compresstextures.updated = 0;
|
|
if ( s_ivo.compresstextures != s_video_compresstextures.curvalue )
|
|
{
|
|
s_video_compresstextures.updated = 1;
|
|
s_video_apply_action.generic.flags &= ~QMF_GRAYED;
|
|
s_video_apply_action.generic.flags |= QMF_BLINK;
|
|
}
|
|
|
|
s_video_texture_quality_list.updated = 0;
|
|
if ( s_ivo.tq != s_video_texture_quality_list.curvalue )
|
|
{
|
|
s_video_texture_quality_list.updated = 1;
|
|
s_video_apply_action.generic.flags &= ~QMF_GRAYED;
|
|
s_video_apply_action.generic.flags |= QMF_BLINK;
|
|
}
|
|
|
|
/* s_video_lighting_list.updated = 0;
|
|
if ( s_ivo.lighting != s_video_lighting_list.curvalue )
|
|
{
|
|
s_video_lighting_list.updated = 1;
|
|
s_video_apply_action.generic.flags &= ~QMF_GRAYED;
|
|
s_video_apply_action.generic.flags |= QMF_BLINK;
|
|
}
|
|
*/
|
|
s_video_colordepth_list.updated = 0;
|
|
if ( s_ivo.colordepth != s_video_colordepth_list.curvalue )
|
|
{
|
|
s_video_colordepth_list.updated = 1;
|
|
s_video_apply_action.generic.flags &= ~QMF_GRAYED;
|
|
s_video_apply_action.generic.flags |= QMF_BLINK;
|
|
}
|
|
|
|
s_video_driver_list.updated = 0;
|
|
if ( s_ivo.driver != s_video_driver_list.curvalue )
|
|
{
|
|
s_video_driver_list.updated = 1;
|
|
s_video_apply_action.generic.flags &= ~QMF_GRAYED;
|
|
s_video_apply_action.generic.flags |= QMF_BLINK;
|
|
}
|
|
|
|
s_video_tq_bits_list.updated = 0;
|
|
if ( s_ivo.texturebits != s_video_tq_bits_list.curvalue )
|
|
{
|
|
s_video_tq_bits_list.updated = 1;
|
|
s_video_apply_action.generic.flags &= ~QMF_GRAYED;
|
|
s_video_apply_action.generic.flags |= QMF_BLINK;
|
|
}
|
|
|
|
s_video_geometry_list.updated =0;
|
|
if ( s_ivo.geometry != s_video_geometry_list.curvalue )
|
|
{
|
|
s_video_geometry_list.updated = 1;
|
|
s_video_apply_action.generic.flags &= ~QMF_GRAYED;
|
|
s_video_apply_action.generic.flags |= QMF_BLINK;
|
|
}
|
|
|
|
s_video_texture_mode_list.updated=0;
|
|
if ( s_ivo.filter != s_video_texture_mode_list.curvalue )
|
|
{
|
|
s_video_texture_mode_list.updated =1;
|
|
s_video_apply_action.generic.flags &= ~QMF_GRAYED;
|
|
s_video_apply_action.generic.flags |= QMF_BLINK;
|
|
}
|
|
|
|
CheckConfigVsTemplates();
|
|
}
|
|
|
|
|
|
/*
|
|
===============
|
|
GetVideoMenuItemValues
|
|
===============
|
|
*/
|
|
static void GetVideoMenuItemValues( void )
|
|
{
|
|
// Subtractin 2 because we don't show 320x200 and MNT_400X300
|
|
s_video_mode_list.curvalue = ui.Cvar_VariableValue( "r_mode" ) - 2;
|
|
if ( s_video_mode_list.curvalue < 0 )
|
|
{
|
|
s_video_mode_list.curvalue = 1;
|
|
}
|
|
|
|
s_video_fullscreen_list.curvalue = ui.Cvar_VariableValue("r_fullscreen");
|
|
s_video_extension_enable_list.curvalue = ui.Cvar_VariableValue("r_allowExtensions");
|
|
s_video_simpleshaders_list.curvalue = ui.Cvar_VariableValue("r_lowEndVideo");
|
|
s_video_compresstextures.curvalue = ui.Cvar_VariableValue("r_ext_compress_textures");
|
|
|
|
s_video_texture_quality_list.curvalue = 3-ui.Cvar_VariableValue( "r_picmip");
|
|
if ( s_video_texture_quality_list.curvalue < 0 )
|
|
{
|
|
s_video_texture_quality_list.curvalue = 0;
|
|
}
|
|
else if ( s_video_texture_quality_list.curvalue > 3 )
|
|
{
|
|
s_video_texture_quality_list.curvalue = 3;
|
|
}
|
|
|
|
// s_video_lighting_list.curvalue = ui.Cvar_VariableValue( "r_vertexLight" ) != 0;
|
|
switch ( ( int ) ui.Cvar_VariableValue( "r_texturebits" ) )
|
|
{
|
|
default:
|
|
case 0:
|
|
s_video_tq_bits_list.curvalue = 0;
|
|
break;
|
|
case 16:
|
|
s_video_tq_bits_list.curvalue = 1;
|
|
break;
|
|
case 32:
|
|
s_video_tq_bits_list.curvalue = 2;
|
|
break;
|
|
}
|
|
|
|
if ( !Q_stricmp( UI_Cvar_VariableString( "r_textureMode" ), "GL_LINEAR_MIPMAP_NEAREST" ) )
|
|
{
|
|
s_video_texture_mode_list.curvalue = 0;
|
|
}
|
|
else
|
|
{
|
|
s_video_texture_mode_list.curvalue = 1;
|
|
}
|
|
|
|
if ( ui.Cvar_VariableValue( "r_lodBias" ) > 0 )
|
|
{
|
|
if ( ui.Cvar_VariableValue( "r_subdivisions" ) >= 20 )
|
|
{
|
|
s_video_geometry_list.curvalue = 0; // Setting LOW
|
|
}
|
|
else
|
|
{
|
|
s_video_geometry_list.curvalue = 1; // Setting MED
|
|
}
|
|
}
|
|
else
|
|
{
|
|
s_video_geometry_list.curvalue = 2; // Setting HIGH
|
|
}
|
|
|
|
switch ( ( int ) ui.Cvar_VariableValue( "r_colorbits" ) )
|
|
{
|
|
default:
|
|
case 0:
|
|
s_video_colordepth_list.curvalue = 0;
|
|
break;
|
|
case 16:
|
|
s_video_colordepth_list.curvalue = 1;
|
|
break;
|
|
case 32:
|
|
s_video_colordepth_list.curvalue = 2;
|
|
break;
|
|
}
|
|
|
|
if ( s_video_fullscreen_list.curvalue == 0 )
|
|
{
|
|
s_video_colordepth_list.curvalue = 0;
|
|
}
|
|
if ( s_video_driver_list.curvalue == 1 )
|
|
{
|
|
s_video_colordepth_list.curvalue = 1;
|
|
}
|
|
}
|
|
|
|
/*
|
|
===============
|
|
FullscreenCallback
|
|
===============
|
|
*/
|
|
static void FullscreenCallback( void *s, int notification )
|
|
{
|
|
if (notification != QM_ACTIVATED)
|
|
return;
|
|
}
|
|
|
|
/*
|
|
===============
|
|
ModeCallback
|
|
===============
|
|
*/
|
|
static void ModeCallback( void *s, int notification )
|
|
{
|
|
if (notification != QM_ACTIVATED)
|
|
return;
|
|
|
|
// clamp 3dfx video modes
|
|
if ( s_video_driver_list.curvalue == 1 )
|
|
{
|
|
if ( s_video_mode_list.curvalue < 2 )
|
|
{
|
|
s_video_mode_list.curvalue = 2;
|
|
}
|
|
else if ( s_video_mode_list.curvalue > 6 )
|
|
{
|
|
s_video_mode_list.curvalue = 6;
|
|
}
|
|
}
|
|
}
|
|
|
|
/*
|
|
===============
|
|
GraphicsOptionsCallback
|
|
===============
|
|
*/
|
|
static void GraphicsOptionsCallback( void *s, int notification )
|
|
{
|
|
InitialVideoOptions_s *ivo;
|
|
|
|
if (notification != QM_ACTIVATED)
|
|
return;
|
|
|
|
ivo = &s_ivo_templates[s_video_mode_option_list.curvalue];
|
|
|
|
s_video_colordepth_list.curvalue = ivo->colordepth;
|
|
s_video_driver_list.curvalue = ivo->driver;
|
|
s_video_mode_list.curvalue = ivo->mode;
|
|
s_video_fullscreen_list.curvalue = ivo->fullscreen;
|
|
s_video_texture_quality_list.curvalue = ivo->tq;
|
|
// s_video_lighting_list.curvalue = ivo->lighting;
|
|
s_video_geometry_list.curvalue = ivo->geometry;
|
|
s_video_texture_mode_list.curvalue = ivo->filter;
|
|
s_video_simpleshaders_list.curvalue = ivo->simpleshaders;
|
|
s_video_compresstextures.curvalue = ivo->compresstextures;
|
|
|
|
s_video_tq_bits_list.curvalue = ivo->texturebits;
|
|
|
|
}
|
|
|
|
/*
|
|
===============
|
|
TextureDetailCallback
|
|
===============
|
|
*/
|
|
static void TextureDetailCallback( void *s, int notification )
|
|
{
|
|
}
|
|
|
|
/*
|
|
===============
|
|
TextureQualityCallback
|
|
===============
|
|
*/
|
|
static void TextureQualityCallback( void *s, int notification )
|
|
{
|
|
}
|
|
|
|
/*
|
|
===============
|
|
ExtensionsCallback
|
|
===============
|
|
*/
|
|
static void ExtensionsCallback( void *s, int notification )
|
|
{
|
|
}
|
|
|
|
/*
|
|
===============
|
|
ColorDepthCallback
|
|
===============
|
|
*/
|
|
static void ColorDepthCallback( void *s, int notification )
|
|
{
|
|
}
|
|
|
|
/*
|
|
===============
|
|
LightingCallback
|
|
===============
|
|
*/
|
|
static void LightingCallback( void * s, int notification )
|
|
{
|
|
}
|
|
|
|
/*
|
|
=================
|
|
ApplyChanges - Apply the changes from the video data screen
|
|
=================
|
|
*/
|
|
static void ApplyChanges2( void *unused, int notification )
|
|
{
|
|
if (notification != QM_ACTIVATED)
|
|
return;
|
|
|
|
ui.Cmd_ExecuteText( EXEC_APPEND, "vid_restart\n" );
|
|
}
|
|
|
|
/*
|
|
=================
|
|
ApplyChanges - Apply the changes from the video data screen
|
|
=================
|
|
*/
|
|
static void ApplyChanges( void *unused, int notification )
|
|
{
|
|
if (notification != QM_ACTIVATED)
|
|
return;
|
|
|
|
|
|
// Texture Quality
|
|
switch ( s_video_tq_bits_list.curvalue )
|
|
{
|
|
case 0:
|
|
ui.Cvar_SetValue( "r_texturebits", 0 );
|
|
break;
|
|
case 1:
|
|
ui.Cvar_SetValue( "r_texturebits", 16 );
|
|
break;
|
|
case 2:
|
|
ui.Cvar_SetValue( "r_texturebits", 32 );
|
|
break;
|
|
}
|
|
|
|
// Texture Quality
|
|
ui.Cvar_SetValue( "r_picmip", 3 - s_video_texture_quality_list.curvalue );
|
|
|
|
// Allow Extensions
|
|
ui.Cvar_SetValue( "r_allowExtensions", s_video_extension_enable_list.curvalue );
|
|
|
|
ui.Cvar_SetValue( "r_lowEndVideo", s_video_simpleshaders_list.curvalue );
|
|
|
|
ui.Cvar_SetValue( "r_ext_compress_textures", s_video_compresstextures.curvalue );
|
|
|
|
// Adding 2 because we don't show 320x200 and MNT_400X300
|
|
// Video Resolution Setting
|
|
ui.Cvar_SetValue( "r_mode", (s_video_mode_list.curvalue +2) );
|
|
|
|
// Fullscreen Setting
|
|
ui.Cvar_SetValue( "r_fullscreen", s_video_fullscreen_list.curvalue );
|
|
|
|
// Set Video Driver
|
|
ui.Cvar_Set( "r_glDriver", ( char * ) s_drivers[s_video_driver_list.curvalue] );
|
|
|
|
// Color Depth
|
|
switch ( s_video_colordepth_list.curvalue )
|
|
{
|
|
case 0:
|
|
ui.Cvar_SetValue( "r_colorbits", 0 );
|
|
ui.Cvar_SetValue( "r_depthbits", 0 );
|
|
ui.Cvar_SetValue( "r_stencilbits", 0 );
|
|
break;
|
|
case 1:
|
|
ui.Cvar_SetValue( "r_colorbits", 16 );
|
|
ui.Cvar_SetValue( "r_depthbits", 16 );
|
|
ui.Cvar_SetValue( "r_stencilbits", 0 );
|
|
break;
|
|
case 2:
|
|
ui.Cvar_SetValue( "r_colorbits", 32 );
|
|
ui.Cvar_SetValue( "r_depthbits", 24 );
|
|
break;
|
|
}
|
|
|
|
// ui.Cvar_SetValue( "r_vertexLight", s_video_lighting_list.curvalue );
|
|
|
|
// Geometric Detail
|
|
if ( s_video_geometry_list.curvalue == 2) // Setting is HIGH
|
|
{
|
|
ui.Cvar_SetValue( "r_lodBias", 0 );
|
|
ui.Cvar_SetValue( "r_subdivisions", 4 );
|
|
}
|
|
else if ( s_video_geometry_list.curvalue == 1) // Setting is MED
|
|
{
|
|
ui.Cvar_SetValue( "r_lodBias", 1 );
|
|
ui.Cvar_SetValue( "r_subdivisions", 12 );
|
|
}
|
|
else // Setting is LOW
|
|
{
|
|
ui.Cvar_SetValue( "r_lodBias", 1 );
|
|
ui.Cvar_SetValue( "r_subdivisions", 20 );
|
|
}
|
|
|
|
if ( s_video_texture_mode_list.curvalue )
|
|
{
|
|
ui.Cvar_Set( "r_textureMode", "GL_LINEAR_MIPMAP_LINEAR" );
|
|
}
|
|
else
|
|
{
|
|
ui.Cvar_Set( "r_textureMode", "GL_LINEAR_MIPMAP_NEAREST" );
|
|
}
|
|
|
|
ui.Cmd_ExecuteText( EXEC_APPEND, "vid_restart\n" );
|
|
}
|
|
|
|
/*
|
|
=================
|
|
VideoDataMenu_Blinkies
|
|
=================
|
|
*/
|
|
void VideoDataMenu_Blinkies(void)
|
|
{
|
|
int i;
|
|
|
|
// Generate new numbers for top right
|
|
if ((videodatamenu_graphics[VDG_LEFTNUMBERS].timer < uis.realtime) && (videodatamenu_graphics[VDG_LEFTNUMBERS].target==6))
|
|
{
|
|
|
|
for (i=0;i<5;++i)
|
|
{
|
|
// Get random number
|
|
videodatamenu_graphics[VDG_COL1_NUM1 + i].target = UI_RandomNumbers(videodatamenu_graphics[VDG_COL1_NUM1 + i].max);
|
|
videodatamenu_graphics[VDG_COL2_NUM1 + i].target = UI_RandomNumbers(videodatamenu_graphics[VDG_COL2_NUM1 + i].max);
|
|
videodatamenu_graphics[VDG_COL3_NUM1 + i].target = UI_RandomNumbers(videodatamenu_graphics[VDG_COL3_NUM1 + i].max);
|
|
videodatamenu_graphics[VDG_COL4_NUM1 + i].target = UI_RandomNumbers(videodatamenu_graphics[VDG_COL4_NUM1 + i].max);
|
|
videodatamenu_graphics[VDG_COL5_NUM1 + i].target = UI_RandomNumbers(videodatamenu_graphics[VDG_COL5_NUM1 + i].max);
|
|
videodatamenu_graphics[VDG_COL6_NUM1 + i].target = UI_RandomNumbers(videodatamenu_graphics[VDG_COL6_NUM1 + i].max);
|
|
videodatamenu_graphics[VDG_COL7_NUM1 + i].target = UI_RandomNumbers(videodatamenu_graphics[VDG_COL7_NUM1 + i].max);
|
|
}
|
|
|
|
videodatamenu_graphics[VDG_LEFTNUMBERS].timer = uis.realtime + 50;
|
|
videodatamenu_graphics[VDG_LEFTNUMBERS].target=1;
|
|
|
|
|
|
i = videodatamenu_graphics[VDG_SPEC_ROW1].target;
|
|
videodatamenu_graphics[i + VDG_COL1_NUM1].color = CT_DKGOLD1;
|
|
|
|
i = videodatamenu_graphics[VDG_SPEC_ROW2].target;
|
|
videodatamenu_graphics[i + VDG_COL3_NUM1].color = CT_DKGOLD1;
|
|
|
|
i = videodatamenu_graphics[VDG_SPEC_ROW3].target;
|
|
videodatamenu_graphics[i + VDG_COL5_NUM1].color = CT_DKGOLD1;
|
|
|
|
i = videodatamenu_graphics[VDG_SPEC_ROW4].target;
|
|
videodatamenu_graphics[i + VDG_COL7_NUM1].color = CT_DKGOLD1;
|
|
|
|
|
|
videodatamenu_graphics[VDG_SPEC_ROW1].target = random() * 6;
|
|
i = videodatamenu_graphics[VDG_SPEC_ROW1].target;
|
|
videodatamenu_graphics[i + VDG_COL1_NUM1].color = CT_LTGOLD1;
|
|
videodatamenu_graphics[VDG_SPEC_ROW1].y = videodatamenu_graphics[i + VDG_COL1_NUM1].y + 6;
|
|
|
|
videodatamenu_graphics[VDG_SPEC_ROW2].target = random() * 6;
|
|
i = videodatamenu_graphics[VDG_SPEC_ROW2].target;
|
|
videodatamenu_graphics[i + VDG_COL3_NUM1].color = CT_LTGOLD1;
|
|
videodatamenu_graphics[VDG_SPEC_ROW2].y = videodatamenu_graphics[i + VDG_COL3_NUM1].y + 6;
|
|
|
|
videodatamenu_graphics[VDG_SPEC_ROW3].target = random() * 6;
|
|
i = videodatamenu_graphics[VDG_SPEC_ROW3].target;
|
|
videodatamenu_graphics[i + VDG_COL5_NUM1].color = CT_LTGOLD1;
|
|
videodatamenu_graphics[VDG_SPEC_ROW3].y = videodatamenu_graphics[i + VDG_COL5_NUM1].y + 6;
|
|
|
|
videodatamenu_graphics[VDG_SPEC_ROW4].target = random() * 6;
|
|
i = videodatamenu_graphics[VDG_SPEC_ROW4].target;
|
|
videodatamenu_graphics[i + VDG_COL7_NUM1].color = CT_LTGOLD1;
|
|
videodatamenu_graphics[VDG_SPEC_ROW4].y = videodatamenu_graphics[i + VDG_COL7_NUM1].y + 6;
|
|
|
|
|
|
// Turn off all but the first row
|
|
for (i=0;i<4;++i)
|
|
{
|
|
videodatamenu_graphics[i + VDG_COL1_NUM2].type = MG_OFF;
|
|
videodatamenu_graphics[i + VDG_COL2_NUM2].type = MG_OFF;
|
|
videodatamenu_graphics[i + VDG_COL3_NUM2].type = MG_OFF;
|
|
videodatamenu_graphics[i + VDG_COL4_NUM2].type = MG_OFF;
|
|
videodatamenu_graphics[i + VDG_COL5_NUM2].type = MG_OFF;
|
|
videodatamenu_graphics[i + VDG_COL6_NUM2].type = MG_OFF;
|
|
videodatamenu_graphics[i + VDG_COL7_NUM2].type = MG_OFF;
|
|
|
|
}
|
|
}
|
|
// Activate the next row of numbers. When at the last row wait and then generate new numbers
|
|
else if ((videodatamenu_graphics[VDG_LEFTNUMBERS].timer < uis.realtime) && (videodatamenu_graphics[VDG_LEFTNUMBERS].target<6))
|
|
{
|
|
ui.S_StartLocalSound( uis.menu_datadisp1_snd, CHAN_MENU1 );
|
|
videodatamenu_graphics[VDG_LEFTNUMBERS].timer = uis.realtime + 50;
|
|
|
|
i = videodatamenu_graphics[VDG_LEFTNUMBERS].target;
|
|
videodatamenu_graphics[i + VDG_COL1_NUM1].type = MG_NUMBER;
|
|
videodatamenu_graphics[i + VDG_COL2_NUM1].type = MG_NUMBER;
|
|
videodatamenu_graphics[i + VDG_COL3_NUM1].type = MG_NUMBER;
|
|
videodatamenu_graphics[i + VDG_COL4_NUM1].type = MG_NUMBER;
|
|
videodatamenu_graphics[i + VDG_COL5_NUM1].type = MG_NUMBER;
|
|
videodatamenu_graphics[i + VDG_COL6_NUM1].type = MG_NUMBER;
|
|
videodatamenu_graphics[i + VDG_COL7_NUM1].type = MG_NUMBER;
|
|
|
|
++videodatamenu_graphics[VDG_LEFTNUMBERS].target;
|
|
|
|
if (videodatamenu_graphics[VDG_LEFTNUMBERS].target == 6)
|
|
{
|
|
videodatamenu_graphics[VDG_LEFTNUMBERS].timer = uis.realtime + 6000;
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
|
|
/*
|
|
=================
|
|
M_VideoDataMenu_Graphics
|
|
=================
|
|
*/
|
|
void M_VideoDataMenu_Graphics (void)
|
|
{
|
|
UI_MenuFrame(&s_video_menu);
|
|
|
|
UI_DrawProportionalString( 74, 66, "207",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]);
|
|
UI_DrawProportionalString( 74, 84, "44909",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]);
|
|
UI_DrawProportionalString( 74, 188, "357",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]);
|
|
UI_DrawProportionalString( 74, 206, "250624",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]);
|
|
UI_DrawProportionalString( 74, 395, "456730-1",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]);
|
|
|
|
UI_Setup_MenuButtons();
|
|
|
|
// Rest of Bottom1_Graphics
|
|
// ui.R_SetColor( colorTable[CT_LTORANGE]);
|
|
// UI_DrawHandlePic( 30, 203, 47, 69, uis.whiteShader); // Top Left column above two buttons
|
|
|
|
// UI_DrawHandlePic( 30, 344, 47, 45, uis.whiteShader); // Top Left column below two buttons
|
|
|
|
// Brackets around Video Data
|
|
ui.R_SetColor( colorTable[CT_LTPURPLE1]);
|
|
UI_DrawHandlePic(158,163, 16, 16, uis.graphicBracket1CornerLU);
|
|
UI_DrawHandlePic(158,179, 8, 233, uis.whiteShader);
|
|
UI_DrawHandlePic(158,412, 16, -16, uis.graphicBracket1CornerLU); //LD
|
|
|
|
UI_DrawHandlePic(174,163, 320, 8, uis.whiteShader); // Top line
|
|
|
|
UI_DrawHandlePic(494,163, 128, 128, videodata_cache.swooshTop); // Top swoosh
|
|
|
|
UI_DrawHandlePic(501,188, 110, 54, uis.whiteShader); // Top right column
|
|
|
|
UI_DrawHandlePic(501,348, 110, 55, uis.whiteShader); // Bottom right column
|
|
|
|
UI_DrawHandlePic(494,406, 128, 128, videodata_cache.swooshBottom); // Bottom swoosh
|
|
|
|
UI_DrawHandlePic(174,420, 320, 8, uis.whiteShader); // Bottom line
|
|
|
|
// VideoDataMenu_Blinkies();
|
|
|
|
// UI_PrintMenuGraphics(videodatamenu_graphics,VDG_MAX);
|
|
|
|
}
|
|
|
|
|
|
/*
|
|
=================
|
|
VideoData_MenuDraw
|
|
=================
|
|
*/
|
|
static void VideoData_MenuDraw (void)
|
|
{
|
|
UpdateMenuItemValues();
|
|
|
|
M_VideoDataMenu_Graphics();
|
|
|
|
Menu_Draw( &s_video_menu );
|
|
}
|
|
|
|
/*
|
|
=================
|
|
UI_VideoDataMenu_Cache
|
|
=================
|
|
*/
|
|
void UI_VideoDataMenu_Cache(void)
|
|
{
|
|
videodata_cache.swooshTop = ui.R_RegisterShaderNoMip("menu/common/swoosh_top.tga");
|
|
videodata_cache.swooshBottom= ui.R_RegisterShaderNoMip("menu/common/swoosh_bottom.tga");
|
|
videodata_cache.swooshTopSmall= ui.R_RegisterShaderNoMip("menu/common/swoosh_topsmall.tga");
|
|
videodata_cache.swooshBottomSmall= ui.R_RegisterShaderNoMip("menu/common/swoosh_bottomsmall.tga");
|
|
|
|
// Precache all menu graphics in array
|
|
UI_PrecacheMenuGraphics(videodatamenu_graphics,VDG_MAX);
|
|
}
|
|
|
|
void VideoDataAction( qboolean result )
|
|
{
|
|
if ( result ) // Yes - do it
|
|
{
|
|
UI_PopMenu();
|
|
}
|
|
}
|
|
|
|
/*
|
|
=================
|
|
VideoData_MenuKey
|
|
=================
|
|
*/
|
|
sfxHandle_t VideoData_MenuKey (int key)
|
|
{
|
|
if (s_video_apply_action.generic.flags & QMF_BLINK)
|
|
{
|
|
switch (key)
|
|
{
|
|
case K_ESCAPE:
|
|
UI_ConfirmMenu(menu_normal_text[MNT_LOOSEVIDSETTINGS],NULL,VideoDataAction);
|
|
return(menu_null_sound);
|
|
break;
|
|
}
|
|
}
|
|
|
|
return ( Menu_DefaultKey( &s_video_menu, key ) );
|
|
}
|
|
|
|
/*
|
|
=================
|
|
Video_MenuInit
|
|
=================
|
|
*/
|
|
static void VideoData_MenuInit( void )
|
|
{
|
|
int x,y,width,inc;
|
|
|
|
UI_VideoDataMenu_Cache();
|
|
|
|
// Menu Data
|
|
s_video_menu.nitems = 0;
|
|
s_video_menu.wrapAround = qtrue;
|
|
s_video_menu.opening = NULL;
|
|
s_video_menu.closing = NULL;
|
|
s_video_menu.draw = VideoData_MenuDraw;
|
|
s_video_menu.key = VideoData_MenuKey;
|
|
s_video_menu.fullscreen = qtrue;
|
|
s_video_menu.descX = MENU_DESC_X;
|
|
s_video_menu.descY = MENU_DESC_Y;
|
|
s_video_menu.listX = 230;
|
|
s_video_menu.listY = 188;
|
|
s_video_menu.titleX = MENU_TITLE_X;
|
|
s_video_menu.titleY = MENU_TITLE_Y;
|
|
s_video_menu.titleI = MNT_CONTROLSMENU_TITLE;
|
|
s_video_menu.footNoteEnum = MNT_VIDEOSETUP;
|
|
|
|
static int s_graphics_options_Names[] =
|
|
{
|
|
MNT_VIDEO_HIGH_QUALITY,
|
|
MNT_VIDEO_NORMAL,
|
|
MNT_VIDEO_FAST,
|
|
MNT_VIDEO_FASTEST,
|
|
MNT_VIDEO_CUSTOM,
|
|
MNT_NONE
|
|
};
|
|
|
|
static int s_driver_Names[] =
|
|
{
|
|
MNT_VIDEO_DRIVER_DEFAULT,
|
|
MNT_VIDEO_DRIVER_VOODOO,
|
|
MNT_NONE
|
|
};
|
|
|
|
static int s_resolutions[] =
|
|
{
|
|
// MNT_320X200,
|
|
// MNT_400X300,
|
|
MNT_512X384,
|
|
MNT_640X480,
|
|
MNT_800X600,
|
|
MNT_960X720,
|
|
MNT_1024X768,
|
|
MNT_1152X864,
|
|
MNT_1280X960,
|
|
MNT_1600X1200,
|
|
MNT_2048X1536,
|
|
MNT_856x480WIDE,
|
|
MNT_NONE
|
|
};
|
|
|
|
static int s_colordepth_Names[] =
|
|
{
|
|
MNT_DEFAULT,
|
|
MNT_16BIT,
|
|
MNT_32BIT,
|
|
MNT_NONE
|
|
};
|
|
|
|
static int s_lighting_Names[] =
|
|
{
|
|
MNT_LIGHTMAP,
|
|
MNT_VERTEX,
|
|
MNT_NONE
|
|
};
|
|
|
|
static int s_quality_Names[] =
|
|
{
|
|
MNT_LOW,
|
|
MNT_MEDIUM,
|
|
MNT_HIGH,
|
|
MNT_NONE
|
|
};
|
|
|
|
static int s_4quality_Names[] =
|
|
{
|
|
MNT_LOW,
|
|
MNT_MEDIUM,
|
|
MNT_HIGH,
|
|
MNT_VERY_HIGH,
|
|
MNT_NONE
|
|
};
|
|
|
|
static int s_tqbits_Names[] =
|
|
{
|
|
MNT_DEFAULT,
|
|
MNT_16BIT,
|
|
MNT_32BIT,
|
|
MNT_NONE
|
|
};
|
|
|
|
static int s_filter_Names[] =
|
|
{
|
|
MNT_BILINEAR,
|
|
MNT_TRILINEAR,
|
|
MNT_NONE
|
|
};
|
|
|
|
x = 170;
|
|
y = 178;
|
|
width = 145;
|
|
s_video_mode_option_list.generic.type = MTYPE_SPINCONTROL;
|
|
s_video_mode_option_list.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
|
|
s_video_mode_option_list.generic.x = x;
|
|
s_video_mode_option_list.generic.y = y;
|
|
s_video_mode_option_list.generic.callback = GraphicsOptionsCallback;
|
|
s_video_mode_option_list.textEnum = MBT_VIDEOOPTIONS;
|
|
s_video_mode_option_list.textcolor = CT_BLACK;
|
|
s_video_mode_option_list.textcolor2 = CT_WHITE;
|
|
s_video_mode_option_list.color = CT_DKPURPLE1;
|
|
s_video_mode_option_list.color2 = CT_LTPURPLE1;
|
|
s_video_mode_option_list.textX = 5;
|
|
s_video_mode_option_list.textY = 2;
|
|
s_video_mode_option_list.listnames = s_graphics_options_Names;
|
|
s_video_mode_option_list.width = width;
|
|
|
|
inc = 20;
|
|
y += inc;
|
|
s_video_driver_list.generic.type = MTYPE_SPINCONTROL;
|
|
s_video_driver_list.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
|
|
s_video_driver_list.generic.x = x;
|
|
s_video_driver_list.generic.y = y;
|
|
s_video_driver_list.textEnum = MBT_VIDEODRIVER;
|
|
s_video_driver_list.textcolor = CT_BLACK;
|
|
s_video_driver_list.textcolor2 = CT_WHITE;
|
|
s_video_driver_list.color = CT_DKPURPLE1;
|
|
s_video_driver_list.color2 = CT_LTPURPLE1;
|
|
s_video_driver_list.textX = 5;
|
|
s_video_driver_list.textY = 2;
|
|
s_video_driver_list.listnames = s_driver_Names;
|
|
s_video_driver_list.width = width;
|
|
s_video_driver_list.curvalue = (uis.glconfig.driverType == GLDRV_VOODOO);
|
|
|
|
|
|
y += inc;
|
|
s_video_extension_enable_list.generic.type = MTYPE_SPINCONTROL;
|
|
s_video_extension_enable_list.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
|
|
s_video_extension_enable_list.generic.x = x;
|
|
s_video_extension_enable_list.generic.y = y;
|
|
s_video_extension_enable_list.generic.callback = ExtensionsCallback;
|
|
s_video_extension_enable_list.textEnum = MBT_VIDEOGLEXTENTIONS;
|
|
s_video_extension_enable_list.textcolor = CT_BLACK;
|
|
s_video_extension_enable_list.textcolor2 = CT_WHITE;
|
|
s_video_extension_enable_list.color = CT_DKPURPLE1;
|
|
s_video_extension_enable_list.color2 = CT_LTPURPLE1;
|
|
s_video_extension_enable_list.textX = 5;
|
|
s_video_extension_enable_list.textY = 2;
|
|
s_video_extension_enable_list.listnames = s_enable_Names;
|
|
s_video_extension_enable_list.width = width;
|
|
|
|
y += inc;
|
|
// references/modifies "r_mode"
|
|
s_video_mode_list.generic.type = MTYPE_SPINCONTROL;
|
|
s_video_mode_list.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
|
|
s_video_mode_list.generic.x = x;
|
|
s_video_mode_list.generic.y = y;
|
|
s_video_mode_list.generic.callback = ModeCallback;
|
|
s_video_mode_list.textEnum = MBT_VIDEOMODE;
|
|
s_video_mode_list.textcolor = CT_BLACK;
|
|
s_video_mode_list.textcolor2 = CT_WHITE;
|
|
s_video_mode_list.color = CT_DKPURPLE1;
|
|
s_video_mode_list.color2 = CT_LTPURPLE1;
|
|
s_video_mode_list.textX = 5;
|
|
s_video_mode_list.textY = 2;
|
|
s_video_mode_list.listnames = s_resolutions;
|
|
s_video_mode_list.width = width;
|
|
|
|
y += inc;
|
|
s_video_colordepth_list.generic.type = MTYPE_SPINCONTROL;
|
|
s_video_colordepth_list.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
|
|
s_video_colordepth_list.generic.x = x;
|
|
s_video_colordepth_list.generic.y = y;
|
|
s_video_colordepth_list.generic.callback = ColorDepthCallback;
|
|
s_video_colordepth_list.textEnum = MBT_VIDEOCOLORDEPTH;
|
|
s_video_colordepth_list.textcolor = CT_BLACK;
|
|
s_video_colordepth_list.textcolor2 = CT_WHITE;
|
|
s_video_colordepth_list.color = CT_DKPURPLE1;
|
|
s_video_colordepth_list.color2 = CT_LTPURPLE1;
|
|
s_video_colordepth_list.textX = 5;
|
|
s_video_colordepth_list.textY = 2;
|
|
s_video_colordepth_list.listnames = s_colordepth_Names;
|
|
s_video_colordepth_list.width = width;
|
|
|
|
y += inc;
|
|
s_video_fullscreen_list.generic.type = MTYPE_SPINCONTROL;
|
|
s_video_fullscreen_list.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
|
|
s_video_fullscreen_list.generic.x = x;
|
|
s_video_fullscreen_list.generic.y = y;
|
|
s_video_fullscreen_list.generic.callback = FullscreenCallback;
|
|
s_video_fullscreen_list.textEnum = MBT_VIDEOFULLSCREEN;
|
|
s_video_fullscreen_list.textcolor = CT_BLACK;
|
|
s_video_fullscreen_list.textcolor2 = CT_WHITE;
|
|
s_video_fullscreen_list.color = CT_DKPURPLE1;
|
|
s_video_fullscreen_list.color2 = CT_LTPURPLE1;
|
|
s_video_fullscreen_list.textX = 5;
|
|
s_video_fullscreen_list.textY = 2;
|
|
s_video_fullscreen_list.listnames = s_enable_Names;
|
|
s_video_fullscreen_list.width = width;
|
|
|
|
/* y += inc;
|
|
s_video_lighting_list.generic.type = MTYPE_SPINCONTROL;
|
|
s_video_lighting_list.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
|
|
s_video_lighting_list.generic.x = x;
|
|
s_video_lighting_list.generic.y = y;
|
|
s_video_lighting_list.generic.callback = LightingCallback;
|
|
s_video_lighting_list.textEnum = MBT_VIDEOLIGHTING;
|
|
s_video_lighting_list.textcolor = CT_BLACK;
|
|
s_video_lighting_list.textcolor2 = CT_WHITE;
|
|
s_video_lighting_list.color = CT_DKPURPLE1;
|
|
s_video_lighting_list.color2 = CT_LTPURPLE1;
|
|
s_video_lighting_list.textX = 5;
|
|
s_video_lighting_list.textY = 2;
|
|
s_video_lighting_list.listnames = s_lighting_Names;
|
|
s_video_lighting_list.width = width;
|
|
*/
|
|
y += inc;
|
|
// references/modifies "r_lodBias" & "subdivisions"
|
|
s_video_geometry_list.generic.type = MTYPE_SPINCONTROL;
|
|
s_video_geometry_list.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
|
|
s_video_geometry_list.generic.x = x;
|
|
s_video_geometry_list.generic.y = y;
|
|
s_video_geometry_list.textEnum = MBT_VIDEOGEOMETRY;
|
|
s_video_geometry_list.textcolor = CT_BLACK;
|
|
s_video_geometry_list.textcolor2 = CT_WHITE;
|
|
s_video_geometry_list.color = CT_DKPURPLE1;
|
|
s_video_geometry_list.color2 = CT_LTPURPLE1;
|
|
s_video_geometry_list.textX = 5;
|
|
s_video_geometry_list.textY = 2;
|
|
s_video_geometry_list.listnames = s_quality_Names;
|
|
s_video_geometry_list.width = width;
|
|
|
|
|
|
y += inc;
|
|
s_video_texture_quality_list.generic.type = MTYPE_SPINCONTROL;
|
|
s_video_texture_quality_list.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
|
|
s_video_texture_quality_list.generic.x = x;
|
|
s_video_texture_quality_list.generic.y = y;
|
|
s_video_texture_quality_list.generic.callback = TextureDetailCallback;
|
|
s_video_texture_quality_list.textEnum = MBT_VIDEOTEXTUREDETAIL;
|
|
s_video_texture_quality_list.textcolor = CT_BLACK;
|
|
s_video_texture_quality_list.textcolor2 = CT_WHITE;
|
|
s_video_texture_quality_list.color = CT_DKPURPLE1;
|
|
s_video_texture_quality_list.color2 = CT_LTPURPLE1;
|
|
s_video_texture_quality_list.textX = 5;
|
|
s_video_texture_quality_list.textY = 2;
|
|
s_video_texture_quality_list.listnames = s_4quality_Names;
|
|
s_video_texture_quality_list.width = width;
|
|
|
|
y += inc;
|
|
// references/modifies "r_textureBits"
|
|
s_video_tq_bits_list.generic.type = MTYPE_SPINCONTROL;
|
|
s_video_tq_bits_list.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
|
|
s_video_tq_bits_list.generic.x = x;
|
|
s_video_tq_bits_list.generic.y = y;
|
|
s_video_tq_bits_list.generic.callback = TextureQualityCallback;
|
|
s_video_tq_bits_list.textEnum = MBT_VIDEOTEXTUREBITS;
|
|
s_video_tq_bits_list.textcolor = CT_BLACK;
|
|
s_video_tq_bits_list.textcolor2 = CT_WHITE;
|
|
s_video_tq_bits_list.color = CT_DKPURPLE1;
|
|
s_video_tq_bits_list.color2 = CT_LTPURPLE1;
|
|
s_video_tq_bits_list.textX = 5;
|
|
s_video_tq_bits_list.textY = 2;
|
|
s_video_tq_bits_list.listnames = s_tqbits_Names;
|
|
s_video_tq_bits_list.width = width;
|
|
|
|
y += inc;
|
|
// references/modifies "r_textureMode"
|
|
s_video_texture_mode_list.generic.type = MTYPE_SPINCONTROL;
|
|
s_video_texture_mode_list.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
|
|
s_video_texture_mode_list.generic.x = x;
|
|
s_video_texture_mode_list.generic.y = y;
|
|
s_video_texture_mode_list.textEnum = MBT_VIDEOTEXTUREFILTER;
|
|
s_video_texture_mode_list.textcolor = CT_BLACK;
|
|
s_video_texture_mode_list.textcolor2 = CT_WHITE;
|
|
s_video_texture_mode_list.color = CT_DKPURPLE1;
|
|
s_video_texture_mode_list.color2 = CT_LTPURPLE1;
|
|
s_video_texture_mode_list.textX = 5;
|
|
s_video_texture_mode_list.textY = 2;
|
|
s_video_texture_mode_list.listnames = s_filter_Names;
|
|
s_video_texture_mode_list.width = width;
|
|
|
|
y += inc;
|
|
// references/modifies "r_textureMode"
|
|
s_video_simpleshaders_list.generic.type = MTYPE_SPINCONTROL;
|
|
s_video_simpleshaders_list.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
|
|
s_video_simpleshaders_list.generic.x = x;
|
|
s_video_simpleshaders_list.generic.y = y;
|
|
s_video_simpleshaders_list.textEnum = MBT_SIMPLESHADERS;
|
|
s_video_simpleshaders_list.textcolor = CT_BLACK;
|
|
s_video_simpleshaders_list.textcolor2 = CT_WHITE;
|
|
s_video_simpleshaders_list.color = CT_DKPURPLE1;
|
|
s_video_simpleshaders_list.color2 = CT_LTPURPLE1;
|
|
s_video_simpleshaders_list.textX = 5;
|
|
s_video_simpleshaders_list.textY = 2;
|
|
s_video_simpleshaders_list.listnames = s_enable_Names;
|
|
s_video_simpleshaders_list.width = width;
|
|
|
|
y += inc;
|
|
// references/modifies "r_ext_compress_textures"
|
|
s_video_compresstextures.generic.type = MTYPE_SPINCONTROL;
|
|
s_video_compresstextures.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
|
|
s_video_compresstextures.generic.x = x;
|
|
s_video_compresstextures.generic.y = y;
|
|
s_video_compresstextures.textEnum = MBT_COMPRESSEDTEXTURES;
|
|
s_video_compresstextures.textcolor = CT_BLACK;
|
|
s_video_compresstextures.textcolor2 = CT_WHITE;
|
|
s_video_compresstextures.color = CT_DKPURPLE1;
|
|
s_video_compresstextures.color2 = CT_LTPURPLE1;
|
|
s_video_compresstextures.textX = 5;
|
|
s_video_compresstextures.textY = 2;
|
|
s_video_compresstextures.listnames = s_enable_Names;
|
|
s_video_compresstextures.width = width;
|
|
|
|
s_video_apply_action.generic.type = MTYPE_ACTION;
|
|
s_video_apply_action.generic.flags = QMF_HIGHLIGHT_IF_FOCUS|QMF_GRAYED;
|
|
s_video_apply_action.generic.x = 501;
|
|
s_video_apply_action.generic.y = 245;
|
|
s_video_apply_action.generic.callback = ApplyChanges;
|
|
s_video_apply_action.textEnum = MBT_VIDEOAPPLYCHANGES;
|
|
s_video_apply_action.textcolor = CT_BLACK;
|
|
s_video_apply_action.textcolor2 = CT_WHITE;
|
|
s_video_apply_action.textcolor3 = CT_LTGREY;
|
|
s_video_apply_action.color = CT_DKPURPLE1;
|
|
s_video_apply_action.color2 = CT_LTPURPLE1;
|
|
s_video_apply_action.color3 = CT_DKGREY;
|
|
s_video_apply_action.textX = 5;
|
|
s_video_apply_action.textY = 80;
|
|
s_video_apply_action.width = 110;
|
|
s_video_apply_action.height = 100;
|
|
|
|
SetupMenu_TopButtons(&s_video_menu,MENU_VIDEODATA,&s_video_apply_action);
|
|
|
|
Menu_AddItem( &s_video_menu, ( void * )&s_video_mode_option_list);
|
|
Menu_AddItem( &s_video_menu, ( void * )&s_video_driver_list);
|
|
Menu_AddItem( &s_video_menu, ( void * )&s_video_extension_enable_list);
|
|
Menu_AddItem( &s_video_menu, ( void * )&s_video_mode_list);
|
|
Menu_AddItem( &s_video_menu, ( void * )&s_video_colordepth_list);
|
|
Menu_AddItem( &s_video_menu, ( void * )&s_video_fullscreen_list);
|
|
// Menu_AddItem( &s_video_menu, ( void * )&s_video_lighting_list);
|
|
Menu_AddItem( &s_video_menu, ( void * )&s_video_geometry_list);
|
|
Menu_AddItem( &s_video_menu, ( void * )&s_video_texture_quality_list);
|
|
Menu_AddItem( &s_video_menu, ( void * )&s_video_tq_bits_list);
|
|
Menu_AddItem( &s_video_menu, ( void * )&s_video_texture_mode_list);
|
|
Menu_AddItem( &s_video_menu, ( void * )&s_video_simpleshaders_list);
|
|
Menu_AddItem( &s_video_menu, ( void * )&s_video_compresstextures);
|
|
Menu_AddItem( &s_video_menu, ( void * )&s_video_apply_action);
|
|
|
|
Video_SideButtons(&s_video_menu,ID_VIDEODATA);
|
|
|
|
// Force numbers to change
|
|
videodatamenu_graphics[VDG_LEFTNUMBERS].timer = 0; // To get numbers right away
|
|
videodatamenu_graphics[VDG_LEFTNUMBERS].target=6;
|
|
videodatamenu_graphics[VDG_SPEC_ROW1].target = 0;
|
|
videodatamenu_graphics[VDG_SPEC_ROW2].target = 0;
|
|
videodatamenu_graphics[VDG_SPEC_ROW3].target = 0;
|
|
videodatamenu_graphics[VDG_SPEC_ROW4].target = 0;
|
|
}
|
|
|
|
/*
|
|
=================
|
|
UI_VideoDataMenu
|
|
=================
|
|
*/
|
|
void UI_VideoDataMenu( void )
|
|
{
|
|
ui.Key_SetCatcher( KEYCATCH_UI );
|
|
|
|
// if (!s_video_menu.initialized)
|
|
// {
|
|
VideoData_MenuInit();
|
|
// }
|
|
|
|
GetVideoMenuItemValues(); // Get current video settings
|
|
GetInitialVideoVars(); // Save video settings in s_vio structure
|
|
|
|
if ((uis.glconfig.driverType == GLDRV_ICD) &&
|
|
(uis.glconfig.hardwareType == GLHW_3DFX_2D3D))
|
|
{
|
|
s_video_driver_list.generic.flags |= QMF_GRAYED;
|
|
}
|
|
|
|
UI_PushMenu( &s_video_menu );
|
|
}
|
|
|
|
/*
|
|
=================
|
|
GammaCallback2
|
|
=================
|
|
*/
|
|
void GammaCallback2( void *s, int notification )
|
|
{
|
|
menuslider_s *slider = ( menuslider_s * ) s;
|
|
|
|
if (notification != QM_ACTIVATED)
|
|
return;
|
|
|
|
s_video_apply_action2.generic.flags &= ~QMF_GRAYED;
|
|
s_video_apply_action2.generic.flags |= QMF_BLINK;
|
|
|
|
|
|
GammaCallback(s,notification );
|
|
|
|
}
|
|
|
|
|
|
/*
|
|
=================
|
|
M_Video2Menu_Graphics
|
|
=================
|
|
*/
|
|
void M_Video2Menu_Graphics (void)
|
|
{
|
|
int y;
|
|
|
|
UI_MenuFrame(&s_video2_menu);
|
|
|
|
UI_DrawProportionalString( 74, 66, "925",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]);
|
|
UI_DrawProportionalString( 74, 84, "88PK",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]);
|
|
UI_DrawProportionalString( 74, 188, "8125",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]);
|
|
UI_DrawProportionalString( 74, 206, "358677",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]);
|
|
UI_DrawProportionalString( 74, 395, "3-679",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]);
|
|
|
|
UI_Setup_MenuButtons();
|
|
|
|
y = 191;
|
|
if (uis.glconfig.deviceSupportsGamma)
|
|
{
|
|
ui.R_SetColor( colorTable[CT_DKGREY]);
|
|
UI_DrawHandlePic( 178, y, 68, 68, uis.whiteShader); //
|
|
ui.R_SetColor( colorTable[CT_WHITE]);
|
|
UI_DrawHandlePic( 180, y+2, 64, 64, videodata2.gamma); // Starfleet graphic
|
|
|
|
UI_DrawProportionalString( 256, y + 5, menu_normal_text[MNT_GAMMA_LINE1],UI_SMALLFONT, colorTable[CT_LTGOLD1]);
|
|
UI_DrawProportionalString( 256, y + 25, menu_normal_text[MNT_GAMMA_LINE2],UI_SMALLFONT, colorTable[CT_LTGOLD1]);
|
|
UI_DrawProportionalString( 256, y + 45, menu_normal_text[MNT_GAMMA_LINE3],UI_SMALLFONT,colorTable[CT_LTGOLD1]);
|
|
}
|
|
else
|
|
{
|
|
UI_DrawProportionalString( 178, y + 5, menu_normal_text[MNT_GAMMA2_LINE1],UI_SMALLFONT, colorTable[CT_LTGOLD1]);
|
|
UI_DrawProportionalString( 178, y + 25,menu_normal_text[MNT_GAMMA2_LINE2],UI_SMALLFONT, colorTable[CT_LTGOLD1]);
|
|
}
|
|
|
|
// Brackets around Video Data
|
|
ui.R_SetColor( colorTable[CT_LTPURPLE1]);
|
|
UI_DrawHandlePic(158,163, 16, 16, uis.graphicBracket1CornerLU);
|
|
UI_DrawHandlePic(158,179, 8, 233, uis.whiteShader);
|
|
UI_DrawHandlePic(158,412, 16, -16, uis.graphicBracket1CornerLU); //LD
|
|
|
|
UI_DrawHandlePic(174,163, 408, 8, uis.whiteShader); // Top line
|
|
|
|
UI_DrawHandlePic(579,163, 32, 16, videodata2.top); // Corner, UR
|
|
UI_DrawHandlePic(581,179, 30, 121, uis.whiteShader); // Top right column
|
|
UI_DrawHandlePic(581,303, 30, 109, uis.whiteShader); // Bottom right column
|
|
UI_DrawHandlePic(579,412, 32, -16, videodata2.top); // Corner, LR
|
|
|
|
UI_DrawHandlePic(174,420, 408, 8, uis.whiteShader); // Bottom line
|
|
|
|
}
|
|
|
|
/*
|
|
=================
|
|
Video2_MenuDraw
|
|
=================
|
|
*/
|
|
static void Video2_MenuDraw (void)
|
|
{
|
|
|
|
M_Video2Menu_Graphics();
|
|
|
|
Menu_Draw( &s_video2_menu );
|
|
}
|
|
|
|
|
|
/*
|
|
=================
|
|
UI_Video2Menu_Cache
|
|
=================
|
|
*/
|
|
void UI_Video2Menu_Cache(void)
|
|
{
|
|
videodata2.gamma = ui.R_RegisterShaderNoMip("menu/special/gamma_test.tga");
|
|
videodata2.top = ui.R_RegisterShaderNoMip("menu/common/corner_ur_8_30.tga");
|
|
|
|
ui.R_RegisterShaderNoMip("menu/common/monbar_2.tga");
|
|
}
|
|
|
|
/*
|
|
=================
|
|
Video2_MenuInit
|
|
=================
|
|
*/
|
|
static void Video2_MenuInit( void )
|
|
{
|
|
int x,y;
|
|
|
|
UI_Video2Menu_Cache();
|
|
|
|
static int s_quality_Names[] =
|
|
{
|
|
MNT_HIGH,
|
|
MNT_LOW,
|
|
MNT_NONE
|
|
};
|
|
|
|
// Menu Data
|
|
s_video2_menu.nitems = 0;
|
|
s_video2_menu.wrapAround = qtrue;
|
|
s_video2_menu.opening = NULL;
|
|
s_video2_menu.closing = NULL;
|
|
s_video2_menu.draw = Video2_MenuDraw;
|
|
s_video2_menu.fullscreen = qtrue;
|
|
s_video2_menu.descX = MENU_DESC_X;
|
|
s_video2_menu.descY = MENU_DESC_Y;
|
|
s_video2_menu.listX = 230;
|
|
s_video2_menu.listY = 188;
|
|
s_video2_menu.titleX = MENU_TITLE_X;
|
|
s_video2_menu.titleY = MENU_TITLE_Y;
|
|
s_video2_menu.titleI = MNT_CONTROLSMENU_TITLE;
|
|
s_video2_menu.footNoteEnum = MNT_VIDEOSETUP;
|
|
|
|
SetupMenu_TopButtons(&s_video2_menu,MENU_VIDEO,NULL);
|
|
|
|
Video_SideButtons(&s_video2_menu,ID_VIDEODATA2);
|
|
|
|
x = 180;
|
|
y = 269;
|
|
s_video2_gamma_slider.generic.type = MTYPE_SLIDER;
|
|
s_video2_gamma_slider.generic.x = x + 162;
|
|
s_video2_gamma_slider.generic.y = y;
|
|
s_video2_gamma_slider.generic.flags = QMF_SMALLFONT;
|
|
s_video2_gamma_slider.generic.callback = GammaCallback2;
|
|
s_video2_gamma_slider.minvalue = 5;
|
|
s_video2_gamma_slider.maxvalue = 30;
|
|
s_video2_gamma_slider.color = CT_DKPURPLE1;
|
|
s_video2_gamma_slider.color2 = CT_LTPURPLE1;
|
|
s_video2_gamma_slider.generic.name = "menu/common/monbar_2.tga";
|
|
s_video2_gamma_slider.width = 256;
|
|
s_video2_gamma_slider.height = 32;
|
|
s_video2_gamma_slider.focusWidth = 145;
|
|
s_video2_gamma_slider.focusHeight = 18;
|
|
s_video2_gamma_slider.picName = GRAPHIC_SQUARE;
|
|
s_video2_gamma_slider.picX = x;
|
|
s_video2_gamma_slider.picY = y;
|
|
s_video2_gamma_slider.picWidth = MENU_BUTTON_MED_WIDTH + 21;
|
|
s_video2_gamma_slider.picHeight = MENU_BUTTON_MED_HEIGHT;
|
|
s_video2_gamma_slider.textX = MENU_BUTTON_TEXT_X;
|
|
s_video2_gamma_slider.textY = MENU_BUTTON_TEXT_Y;
|
|
s_video2_gamma_slider.textEnum = MBT_BRIGHTNESS;
|
|
s_video2_gamma_slider.textcolor = CT_BLACK;
|
|
s_video2_gamma_slider.textcolor2 = CT_WHITE;
|
|
s_video2_gamma_slider.thumbName = GRAPHIC_BUTTONSLIDER;
|
|
s_video2_gamma_slider.thumbHeight = 32;
|
|
s_video2_gamma_slider.thumbWidth = 16;
|
|
s_video2_gamma_slider.thumbGraphicWidth = 9;
|
|
s_video2_gamma_slider.thumbColor = CT_DKBLUE1;
|
|
s_video2_gamma_slider.thumbColor2 = CT_LTBLUE1;
|
|
|
|
s_video_apply_action2.generic.type = MTYPE_ACTION;
|
|
s_video_apply_action2.generic.flags = QMF_HIGHLIGHT_IF_FOCUS|QMF_GRAYED;
|
|
s_video_apply_action2.generic.x = 490;
|
|
s_video_apply_action2.generic.y = 191;
|
|
s_video_apply_action2.generic.callback = ApplyChanges2;
|
|
s_video_apply_action2.textEnum = MBT_ACCEPT;
|
|
s_video_apply_action2.textcolor = CT_BLACK;
|
|
s_video_apply_action2.textcolor2 = CT_WHITE;
|
|
s_video_apply_action2.textcolor3 = CT_LTGREY;
|
|
s_video_apply_action2.color = CT_DKPURPLE1;
|
|
s_video_apply_action2.color2 = CT_LTPURPLE1;
|
|
s_video_apply_action2.color3 = CT_DKGREY;
|
|
s_video_apply_action2.textX = 5;
|
|
s_video_apply_action2.textY = 30;
|
|
s_video_apply_action2.width = 82;
|
|
s_video_apply_action2.height = 70;
|
|
|
|
|
|
y = 330;
|
|
s_video2_screensize_slider.generic.type = MTYPE_SLIDER;
|
|
s_video2_screensize_slider.generic.x = x + 162;
|
|
s_video2_screensize_slider.generic.y = y;
|
|
s_video2_screensize_slider.generic.flags = QMF_SMALLFONT;
|
|
s_video2_screensize_slider.generic.callback = ScreensizeCallback;
|
|
s_video2_screensize_slider.minvalue = 30;
|
|
s_video2_screensize_slider.maxvalue = 100;
|
|
s_video2_screensize_slider.color = CT_DKPURPLE1;
|
|
s_video2_screensize_slider.color2 = CT_LTPURPLE1;
|
|
s_video2_screensize_slider.generic.name = "menu/common/monbar_2.tga";
|
|
s_video2_screensize_slider.width = 256;
|
|
s_video2_screensize_slider.height = 32;
|
|
s_video2_screensize_slider.focusWidth = 145;
|
|
s_video2_screensize_slider.focusHeight = 18;
|
|
s_video2_screensize_slider.picName = GRAPHIC_SQUARE;
|
|
s_video2_screensize_slider.picX = x;
|
|
s_video2_screensize_slider.picY = y;
|
|
s_video2_screensize_slider.picWidth = MENU_BUTTON_MED_WIDTH + 21;
|
|
s_video2_screensize_slider.picHeight = MENU_BUTTON_MED_HEIGHT;
|
|
s_video2_screensize_slider.textX = MENU_BUTTON_TEXT_X;
|
|
s_video2_screensize_slider.textY = MENU_BUTTON_TEXT_Y;
|
|
s_video2_screensize_slider.textEnum = MBT_SCREENSIZE;
|
|
s_video2_screensize_slider.textcolor = CT_BLACK;
|
|
s_video2_screensize_slider.textcolor2 = CT_WHITE;
|
|
s_video2_screensize_slider.thumbName = GRAPHIC_BUTTONSLIDER;
|
|
s_video2_screensize_slider.thumbHeight = 32;
|
|
s_video2_screensize_slider.thumbWidth = 16;
|
|
s_video2_screensize_slider.thumbGraphicWidth = 9;
|
|
s_video2_screensize_slider.thumbColor = CT_DKBLUE1;
|
|
s_video2_screensize_slider.thumbColor2 = CT_LTBLUE1;
|
|
|
|
y = 366;
|
|
videodata2.cinematic_quality.generic.type = MTYPE_SPINCONTROL;
|
|
videodata2.cinematic_quality.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
|
|
videodata2.cinematic_quality.generic.x = x;
|
|
videodata2.cinematic_quality.generic.y = y;
|
|
videodata2.cinematic_quality.generic.name = GRAPHIC_BUTTONRIGHT;
|
|
videodata2.cinematic_quality.generic.callback = VideoUsingLoResCallback;
|
|
videodata2.cinematic_quality.color = CT_DKPURPLE1;
|
|
videodata2.cinematic_quality.color2 = CT_LTPURPLE1;
|
|
videodata2.cinematic_quality.textX = MENU_BUTTON_TEXT_X;
|
|
videodata2.cinematic_quality.textY = MENU_BUTTON_TEXT_Y;
|
|
videodata2.cinematic_quality.textEnum = MBT_CINEMATIC_QUALITY;
|
|
videodata2.cinematic_quality.textcolor = CT_BLACK;
|
|
videodata2.cinematic_quality.textcolor2 = CT_WHITE;
|
|
videodata2.cinematic_quality.listnames = s_quality_Names;
|
|
|
|
y += 24;
|
|
videodata2.anisotropicfiltering.generic.type = MTYPE_SPINCONTROL;
|
|
videodata2.anisotropicfiltering.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
|
|
videodata2.anisotropicfiltering.generic.x = x;
|
|
videodata2.anisotropicfiltering.generic.y = y;
|
|
videodata2.anisotropicfiltering.generic.name = GRAPHIC_BUTTONRIGHT;
|
|
videodata2.anisotropicfiltering.generic.callback = AnisotropicFilteringCallback;
|
|
videodata2.anisotropicfiltering.color = CT_DKPURPLE1;
|
|
videodata2.anisotropicfiltering.color2 = CT_LTPURPLE1;
|
|
videodata2.anisotropicfiltering.textX = MENU_BUTTON_TEXT_X;
|
|
videodata2.anisotropicfiltering.textY = MENU_BUTTON_TEXT_Y;
|
|
videodata2.anisotropicfiltering.textEnum = MBT_ANISOTROPICFILTERING;
|
|
videodata2.anisotropicfiltering.textcolor = CT_BLACK;
|
|
videodata2.anisotropicfiltering.textcolor2 = CT_WHITE;
|
|
videodata2.anisotropicfiltering.listnames = s_enable_Names;
|
|
|
|
Menu_AddItem( &s_video2_menu, ( void * )&s_video2_gamma_slider);
|
|
if (!uis.glconfig.deviceSupportsGamma)
|
|
{
|
|
Menu_AddItem( &s_video2_menu, ( void * )&s_video_apply_action2);
|
|
}
|
|
Menu_AddItem( &s_video2_menu, ( void * )&s_video2_screensize_slider);
|
|
Menu_AddItem( &s_video2_menu, ( void * )&videodata2.cinematic_quality);
|
|
Menu_AddItem( &s_video2_menu, ( void * )&videodata2.anisotropicfiltering);
|
|
}
|
|
|
|
/*
|
|
=================
|
|
UI_Video2SettingsGetCvars
|
|
=================
|
|
*/
|
|
static void UI_Video2SettingsGetCvars()
|
|
{
|
|
|
|
s_video2_gamma_slider.curvalue = ui.Cvar_VariableValue( "r_gamma" ) * 10.0f;
|
|
|
|
videodata2.cinematic_quality.curvalue = ui.Cvar_VariableValue( "cl_VideoUsingLoRes" );
|
|
|
|
videodata2.anisotropicfiltering.curvalue = ui.Cvar_VariableValue( "r_ext_texture_filter_anisotropic" );
|
|
|
|
s_video2_screensize_slider.curvalue = ui.Cvar_VariableValue( "cg_viewsize" );
|
|
}
|
|
|
|
/*
|
|
=================
|
|
UI_Video2SettingsMenu
|
|
=================
|
|
*/
|
|
void UI_Video2SettingsMenu( void )
|
|
{
|
|
ui.Key_SetCatcher( KEYCATCH_UI );
|
|
|
|
// if (!s_video2_menu.initialized)
|
|
// {
|
|
Video2_MenuInit();
|
|
// }
|
|
|
|
UI_Video2SettingsGetCvars();
|
|
|
|
UI_PushMenu( &s_video2_menu );
|
|
}
|
|
|
|
|
|
/*
|
|
=================
|
|
Video_MenuEvent
|
|
=================
|
|
*/
|
|
static void Video_MenuEvent (void* ptr, int event)
|
|
{
|
|
menuframework_s* m;
|
|
|
|
if (event != QM_ACTIVATED)
|
|
return;
|
|
|
|
m = ((menucommon_s*)ptr)->parent;
|
|
|
|
switch (((menucommon_s*)ptr)->id)
|
|
{
|
|
case ID_ARROWDWN:
|
|
VideoDriver_Lines(1);
|
|
break;
|
|
|
|
case ID_ARROWUP:
|
|
VideoDriver_Lines(-1);
|
|
break;
|
|
|
|
case ID_VIDEO: // You're already in video menus, doofus
|
|
break;
|
|
|
|
case ID_VIDEODRIVERS:
|
|
if (m != &s_videodriver.menu) // Not already in menu?
|
|
{
|
|
UI_PopMenu(); // Get rid of whatever is ontop
|
|
UI_VideoDriverMenu(); // Move to the Controls Menu
|
|
}
|
|
break;
|
|
|
|
case ID_VIDEODATA:
|
|
if (m != &s_video_menu) // Not already in menu?
|
|
{
|
|
UI_PopMenu(); // Get rid of whatever is ontop
|
|
UI_VideoDataMenu(); // Move to the Controls Menu
|
|
}
|
|
break;
|
|
|
|
case ID_VIDEODATA2:
|
|
if (m != &s_video2_menu) // Not already in menu?
|
|
{
|
|
UI_PopMenu(); // Get rid of whatever is ontop
|
|
UI_Video2SettingsMenu(); // Move to the Controls Menu
|
|
}
|
|
break;
|
|
|
|
case ID_CONTROLS:
|
|
UI_PopMenu(); // Get rid of whatever is ontop
|
|
UI_SetupWeaponsMenu(); // Move to the Controls Menu
|
|
break;
|
|
|
|
case ID_SOUND:
|
|
UI_PopMenu(); // Get rid of whatever is ontop
|
|
UI_SoundMenu(); // Move to the Sound Menu
|
|
break;
|
|
|
|
case ID_GAMEOPTIONS:
|
|
UI_PopMenu(); // Get rid of whatever is ontop
|
|
UI_GameOptionsMenu(); // Move to the Game Options Menu
|
|
break;
|
|
|
|
case ID_CDKEY:
|
|
UI_PopMenu(); // Get rid of whatever is ontop
|
|
UI_CDKeyMenu(); // Move to the CD Key Menu
|
|
break;
|
|
|
|
case ID_MAINMENU:
|
|
UI_PopMenu();
|
|
|
|
}
|
|
}
|
|
|
|
/*
|
|
=================
|
|
VideoDriver_Lines
|
|
=================
|
|
*/
|
|
void VideoDriver_Lines(int increment)
|
|
{
|
|
int i,i2;
|
|
|
|
s_videodriver.currentDriverLine += increment;
|
|
|
|
i=0;
|
|
i2 = 0;
|
|
|
|
i = (s_videodriver.currentDriverLine * 2);
|
|
if (i<0)
|
|
{
|
|
s_videodriver.currentDriverLine = 0;
|
|
return;
|
|
}
|
|
|
|
if (i>s_videodriver.driverCnt)
|
|
{
|
|
s_videodriver.currentDriverLine = (s_videodriver.driverCnt/2);
|
|
return;
|
|
}
|
|
else if (i==s_videodriver.driverCnt)
|
|
{
|
|
s_videodriver.currentDriverLine = (s_videodriver.driverCnt/2) - 1;
|
|
return;
|
|
}
|
|
|
|
if (!s_videodriver.drivers[i + 22])
|
|
{
|
|
s_videodriver.currentDriverLine -= increment;
|
|
s_videodriver.activeArrowDwn = qfalse;
|
|
return;
|
|
}
|
|
|
|
for (; i < MAX_VID_DRIVERS; i++)
|
|
{
|
|
if (s_videodriver.drivers[i])
|
|
{
|
|
if (i2<24)
|
|
{
|
|
((menutext_s *)g_videolines[i2])->string = s_videodriver.drivers[i];
|
|
i2++;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (i2<24)
|
|
{
|
|
((menutext_s *)g_videolines[i2])->string = NULL;
|
|
i2++;
|
|
}
|
|
else
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
// Set up arrows
|
|
|
|
if (increment > 0)
|
|
{
|
|
s_videodriver.activeArrowUp = qtrue;
|
|
}
|
|
|
|
if (s_videodriver.currentDriverLine < 1)
|
|
{
|
|
s_videodriver.activeArrowUp = qfalse;
|
|
}
|
|
|
|
if (i2>= 24)
|
|
{
|
|
s_videodriver.activeArrowDwn = qtrue;
|
|
}
|
|
|
|
i = (s_videodriver.currentDriverLine * 2);
|
|
if (!s_videodriver.drivers[i + 24])
|
|
{
|
|
s_videodriver.activeArrowDwn = qfalse;
|
|
return;
|
|
}
|
|
|
|
}
|
|
|
|
/*
|
|
=================
|
|
VideoDriver_LineSetup
|
|
=================
|
|
*/
|
|
void VideoDriver_LineSetup(void)
|
|
{
|
|
char *bufhold;
|
|
char *eptr;
|
|
int i;
|
|
|
|
strcpy( s_videodriver.extensionsString, uis.glconfig.extensions_string );
|
|
eptr = s_videodriver.extensionsString;
|
|
i=0;
|
|
|
|
s_videodriver.driverCnt = 0;
|
|
|
|
while ( i < MAX_VID_DRIVERS && *eptr )
|
|
{
|
|
while ( *eptr )
|
|
{
|
|
bufhold = eptr;
|
|
|
|
while(*bufhold != ' ')
|
|
{
|
|
++bufhold;
|
|
}
|
|
*bufhold = NULL;
|
|
|
|
s_videodriver.drivers[i] = eptr;
|
|
|
|
if (i<24)
|
|
{
|
|
((menutext_s *)g_videolines[i])->string = eptr;
|
|
}
|
|
|
|
bufhold++;
|
|
eptr = bufhold;
|
|
s_videodriver.driverCnt++;
|
|
i++;
|
|
}
|
|
}
|
|
|
|
// Set down arrows
|
|
if (i> 24)
|
|
{
|
|
s_videodriver.activeArrowDwn = qtrue;
|
|
}
|
|
|
|
s_videodriver.currentDriverLine = 0;
|
|
|
|
}
|
|
|
|
/*
|
|
=================
|
|
VideoDriver_MenuKey
|
|
=================
|
|
*/
|
|
sfxHandle_t VideoDriver_MenuKey (int key)
|
|
{
|
|
return ( Menu_DefaultKey( &s_videodriver.menu, key ) );
|
|
}
|
|
|
|
|
|
/*
|
|
=================
|
|
M_VideoDriverMenu_Graphics
|
|
=================
|
|
*/
|
|
void M_VideoDriverMenu_Graphics (void)
|
|
{
|
|
float labelColor[] = { 0, 1.0, 0, 1.0 };
|
|
float textColor[] = { 1, 1, 1, 1 };
|
|
int i = 14;
|
|
int x,y,x2,x3;
|
|
|
|
UI_MenuFrame(&s_videodriver.menu);
|
|
|
|
UI_DrawProportionalString( 74, 66, "207",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]);
|
|
UI_DrawProportionalString( 74, 84, "44909",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]);
|
|
UI_DrawProportionalString( 74, 188, "357",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]);
|
|
UI_DrawProportionalString( 74, 206, "250624",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]);
|
|
UI_DrawProportionalString( 74, 395, "456730-1",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]);
|
|
|
|
UI_Setup_MenuButtons();
|
|
|
|
// ui.R_SetColor( colorTable[CT_DKPURPLE1]);
|
|
// UI_DrawHandlePic( 30, 203, 47, 69, uis.whiteShader); // Top Left column above two buttons
|
|
// UI_DrawHandlePic( 30, 344, 47, 45, uis.whiteShader); // Top Left column below two buttons
|
|
|
|
// Top Frame
|
|
UI_DrawHandlePic( 178, 136, 32, -32, s_videodriver.corner_ll_8_16); // UL
|
|
UI_DrawHandlePic( 178, 221, 32, 32, s_videodriver.corner_ll_8_16); // LL
|
|
UI_DrawHandlePic( 556, 136, -32, -32, s_videodriver.corner_ll_8_16); // UR
|
|
UI_DrawHandlePic( 556, 221, -32, 32, s_videodriver.corner_ll_8_16); // LR
|
|
UI_DrawHandlePic(194,157, 378, 8, uis.whiteShader); // Top line
|
|
UI_DrawHandlePic(178,165, 16, 60, uis.whiteShader); // Left side
|
|
UI_DrawHandlePic(572,165, 16, 60, uis.whiteShader); // Right side
|
|
UI_DrawHandlePic(194,224, 378, 8, uis.whiteShader); // Bottom line
|
|
|
|
|
|
// Lower Frame
|
|
UI_DrawHandlePic( 178, 226, 32, -32, s_videodriver.corner_ll_16_16); // UL
|
|
UI_DrawHandlePic( 178, 414, 32, 32, s_videodriver.corner_ll_16_16); // LL
|
|
UI_DrawHandlePic( 556, 226, -32, -32, s_videodriver.corner_ll_16_16); // UR
|
|
UI_DrawHandlePic( 556, 414, -32, 32, s_videodriver.corner_ll_16_16); // LR
|
|
|
|
UI_DrawHandlePic( 194, 237, 378, 16, uis.whiteShader); // Top line
|
|
UI_DrawHandlePic( 178, 252, 16, 168, uis.whiteShader); // Left side
|
|
|
|
UI_DrawHandlePic( 572, 261, 16, 15, uis.whiteShader); // Right side
|
|
UI_DrawHandlePic( 572, 279, 16, 114, uis.whiteShader); // Right side
|
|
UI_DrawHandlePic( 572, 396, 16, 15, uis.whiteShader); // Right side
|
|
|
|
UI_DrawHandlePic( 194, 419, 378, 16, uis.whiteShader); // Bottom line
|
|
|
|
ui.R_SetColor( colorTable[CT_LTGOLD1]);
|
|
if (s_videodriver.activeArrowUp)
|
|
{
|
|
UI_DrawHandlePic( 382, 237, 32, -14, s_videodriver.arrow_dn);
|
|
}
|
|
|
|
if (s_videodriver.activeArrowDwn)
|
|
{
|
|
UI_DrawHandlePic( 382, 422, 32, 14, s_videodriver.arrow_dn);
|
|
}
|
|
|
|
x = 204;
|
|
x2 = 259;
|
|
x3 = x2 + 150;
|
|
y = 168;
|
|
UI_DrawProportionalString( x, y, menu_normal_text[MNT_VENDOR], UI_LEFT|UI_TINYFONT, labelColor );
|
|
UI_DrawProportionalString( x2, y, uis.glconfig.vendor_string, UI_LEFT|UI_TINYFONT, textColor );
|
|
y += 14;
|
|
UI_DrawProportionalString( x, y, menu_normal_text[MNT_VERSION], UI_LEFT|UI_TINYFONT, labelColor );
|
|
UI_DrawProportionalString( x2, y, uis.glconfig.version_string, UI_LEFT|UI_TINYFONT, textColor );
|
|
y += 14;
|
|
UI_DrawProportionalString( x, y, menu_normal_text[MNT_RENDERER], UI_LEFT|UI_TINYFONT, labelColor );
|
|
UI_DrawProportionalString( x2, y, uis.glconfig.renderer_string, UI_LEFT|UI_TINYFONT, textColor );
|
|
y += 14;
|
|
UI_DrawProportionalString( x, y, menu_normal_text[MNT_PIXELFORMAT], UI_LEFT|UI_TINYFONT, labelColor );
|
|
UI_DrawProportionalString( x2, y, va("color(%d-bits) Z(%d-bit) stencil(%d-bits)", uis.glconfig.colorBits, uis.glconfig.depthBits, uis.glconfig.stencilBits), UI_LEFT|UI_TINYFONT, textColor );
|
|
|
|
}
|
|
|
|
/*
|
|
=================
|
|
VideoDriver_MenuDraw
|
|
=================
|
|
*/
|
|
static void VideoDriver_MenuDraw (void)
|
|
{
|
|
|
|
M_VideoDriverMenu_Graphics();
|
|
|
|
Menu_Draw( &s_videodriver.menu );
|
|
}
|
|
|
|
/*
|
|
=================
|
|
UI_VideoDriverMenu_Cache
|
|
=================
|
|
*/
|
|
void UI_VideoDriverMenu_Cache(void)
|
|
{
|
|
s_videodriver.corner_ll_16_16 = ui.R_RegisterShaderNoMip("menu/common/corner_ll_16_16.tga");
|
|
s_videodriver.corner_ll_8_16 = ui.R_RegisterShaderNoMip("menu/common/corner_ll_8_16.tga");
|
|
s_videodriver.arrow_dn = ui.R_RegisterShaderNoMip("menu/common/arrow_dn_16.tga");
|
|
ui.R_RegisterShaderNoMip("menu/common/arrow_up_16.tga");
|
|
|
|
}
|
|
|
|
/*
|
|
=================
|
|
Video_MenuInit
|
|
=================
|
|
*/
|
|
static void VideoDriver_MenuInit( void )
|
|
{
|
|
int i,x,y,x2;
|
|
|
|
UI_VideoDriverMenu_Cache();
|
|
|
|
s_videodriver.menu.nitems = 0;
|
|
s_videodriver.menu.wrapAround = qtrue;
|
|
s_videodriver.menu.opening = NULL;
|
|
s_videodriver.menu.closing = NULL;
|
|
s_videodriver.menu.draw = VideoDriver_MenuDraw;
|
|
s_videodriver.menu.key = VideoDriver_MenuKey;
|
|
s_videodriver.menu.fullscreen = qtrue;
|
|
s_videodriver.menu.descX = MENU_DESC_X;
|
|
s_videodriver.menu.descY = MENU_DESC_Y;
|
|
s_videodriver.menu.listX = 230;
|
|
s_videodriver.menu.listY = 188;
|
|
s_videodriver.menu.titleX = MENU_TITLE_X;
|
|
s_videodriver.menu.titleY = MENU_TITLE_Y;
|
|
s_videodriver.menu.titleI = MNT_CONTROLSMENU_TITLE;
|
|
s_videodriver.menu.footNoteEnum = MNT_VIDEODRIVERS;
|
|
|
|
SetupMenu_TopButtons(&s_videodriver.menu,MENU_VIDEO,NULL);
|
|
|
|
Video_SideButtons(&s_videodriver.menu,ID_VIDEODRIVERS);
|
|
|
|
s_videodriver.arrowup.generic.type = MTYPE_BITMAP;
|
|
s_videodriver.arrowup.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
|
|
s_videodriver.arrowup.generic.x = 572;
|
|
s_videodriver.arrowup.generic.y = 262;
|
|
s_videodriver.arrowup.generic.name = "menu/common/arrow_up_16.tga";
|
|
s_videodriver.arrowup.generic.id = ID_ARROWUP;
|
|
s_videodriver.arrowup.generic.callback = Video_MenuEvent;
|
|
s_videodriver.arrowup.width = 16;
|
|
s_videodriver.arrowup.height = 16;
|
|
s_videodriver.arrowup.color = CT_DKBLUE1;
|
|
s_videodriver.arrowup.color2 = CT_LTBLUE1;
|
|
s_videodriver.arrowup.textX = 0;
|
|
s_videodriver.arrowup.textY = 0;
|
|
s_videodriver.arrowup.textEnum = MBT_NONE;
|
|
s_videodriver.arrowup.textcolor = CT_BLACK;
|
|
s_videodriver.arrowup.textcolor2 = CT_WHITE;
|
|
Menu_AddItem( &s_videodriver.menu,( void * ) &s_videodriver.arrowup);
|
|
|
|
s_videodriver.arrowdwn.generic.type = MTYPE_BITMAP;
|
|
s_videodriver.arrowdwn.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
|
|
s_videodriver.arrowdwn.generic.x = 572;
|
|
s_videodriver.arrowdwn.generic.y = 397;
|
|
s_videodriver.arrowdwn.generic.name = "menu/common/arrow_dn_16.tga";
|
|
s_videodriver.arrowdwn.generic.id = ID_ARROWDWN;
|
|
s_videodriver.arrowdwn.generic.callback = Video_MenuEvent;
|
|
s_videodriver.arrowdwn.width = 16;
|
|
s_videodriver.arrowdwn.height = 16;
|
|
s_videodriver.arrowdwn.color = CT_DKBLUE1;
|
|
s_videodriver.arrowdwn.color2 = CT_LTBLUE1;
|
|
s_videodriver.arrowdwn.textX = 0;
|
|
s_videodriver.arrowdwn.textY = 0;
|
|
s_videodriver.arrowdwn.textEnum = MBT_NONE;
|
|
s_videodriver.arrowdwn.textcolor = CT_BLACK;
|
|
s_videodriver.arrowdwn.textcolor2 = CT_WHITE;
|
|
Menu_AddItem( &s_videodriver.menu, ( void * ) &s_videodriver.arrowdwn);
|
|
|
|
s_videodriver.activeArrowDwn = qfalse;
|
|
s_videodriver.activeArrowUp = qfalse;
|
|
|
|
x = 204;
|
|
x2 = 404;
|
|
y = 260;
|
|
|
|
for (i=0;i<24;i++)
|
|
{
|
|
((menutext_s *)g_videolines[i])->generic.type = MTYPE_TEXT;
|
|
((menutext_s *)g_videolines[i])->generic.flags = QMF_LEFT_JUSTIFY | QMF_INACTIVE;
|
|
((menutext_s *)g_videolines[i])->generic.y = y;
|
|
if ((i % 2 ) == 0)
|
|
{
|
|
((menutext_s *)g_videolines[i])->generic.x = x;
|
|
}
|
|
else
|
|
{
|
|
((menutext_s *)g_videolines[i])->generic.x = x2;
|
|
y +=13;
|
|
}
|
|
|
|
|
|
((menutext_s *)g_videolines[i])->buttontextEnum = MBT_NONE;
|
|
((menutext_s *)g_videolines[i])->style = UI_TINYFONT | UI_LEFT;
|
|
((menutext_s *)g_videolines[i])->color = CT_LTPURPLE1;
|
|
Menu_AddItem( &s_videodriver.menu, ( void * )g_videolines[i]);
|
|
|
|
}
|
|
|
|
// Print extensions
|
|
VideoDriver_LineSetup();
|
|
}
|
|
|
|
|
|
/*
|
|
=================
|
|
UI_VideoDriverMenu
|
|
=================
|
|
*/
|
|
void UI_VideoDriverMenu( void )
|
|
{
|
|
ui.Key_SetCatcher( KEYCATCH_UI );
|
|
|
|
// if (!s_videodriver_menu.initialized)
|
|
// {
|
|
VideoDriver_MenuInit();
|
|
// }
|
|
|
|
UI_PushMenu( &s_videodriver.menu );
|
|
}
|
|
|
|
|
|
static void *holdControlPtr;
|
|
static int holdControlEvent;
|
|
|
|
void VideoSideButtonsAction( qboolean result )
|
|
{
|
|
if ( result ) // Yes - do it
|
|
{
|
|
Video_MenuEvent(holdControlPtr, holdControlEvent);
|
|
}
|
|
}
|
|
|
|
/*
|
|
=================
|
|
VideoSideButtons_MenuEvent
|
|
=================
|
|
*/
|
|
static void VideoSideButtons_MenuEvent (void* ptr, int event)
|
|
{
|
|
|
|
if (event != QM_ACTIVATED)
|
|
return;
|
|
|
|
holdControlPtr = ptr;
|
|
holdControlEvent = event;
|
|
|
|
if (s_video_apply_action.generic.flags & QMF_BLINK) // Video apply changes button is flashing
|
|
{
|
|
UI_ConfirmMenu(menu_normal_text[MNT_LOOSEVIDSETTINGS],NULL,VideoSideButtonsAction);
|
|
}
|
|
else // Go ahead, act normal
|
|
{
|
|
Video_MenuEvent (holdControlPtr, holdControlEvent);
|
|
}
|
|
}
|
|
/*
|
|
=================
|
|
Video_SideButtons
|
|
=================
|
|
*/
|
|
void Video_SideButtons(menuframework_s *menu,int menuType)
|
|
{
|
|
|
|
// Button Data
|
|
s_video_data.generic.type = MTYPE_BITMAP;
|
|
s_video_data.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
|
|
s_video_data.generic.x = video_sidebuttons[0][0];
|
|
s_video_data.generic.y = video_sidebuttons[0][1];
|
|
s_video_data.generic.name = GRAPHIC_SQUARE;
|
|
s_video_data.generic.id = ID_VIDEODATA;
|
|
if (menuType == ID_VIDEODATA)
|
|
{
|
|
s_video_data.generic.callback = VideoSideButtons_MenuEvent;
|
|
}
|
|
else
|
|
{
|
|
s_video_data.generic.callback = Video_MenuEvent;
|
|
}
|
|
s_video_data.width = MENU_BUTTON_MED_WIDTH - 10;
|
|
s_video_data.height = MENU_BUTTON_MED_HEIGHT;
|
|
s_video_data.color = CT_DKPURPLE1;
|
|
s_video_data.color2 = CT_LTPURPLE1;
|
|
s_video_data.textX = 5;
|
|
s_video_data.textY = 2;
|
|
s_video_data.textEnum = MBT_VIDEODATA;
|
|
if (menuType == ID_VIDEODATA)
|
|
{
|
|
s_video_data.textcolor = CT_WHITE;
|
|
s_video_data.textcolor2 = CT_WHITE;
|
|
s_video_data.generic.flags = QMF_GRAYED;
|
|
}
|
|
else
|
|
{
|
|
s_video_data.textcolor = CT_BLACK;
|
|
s_video_data.textcolor2 = CT_WHITE;
|
|
}
|
|
|
|
s_video_data2.generic.type = MTYPE_BITMAP;
|
|
s_video_data2.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
|
|
s_video_data2.generic.x = video_sidebuttons[1][0];
|
|
s_video_data2.generic.y = video_sidebuttons[1][1];
|
|
s_video_data2.generic.name = GRAPHIC_SQUARE;
|
|
s_video_data2.generic.id = ID_VIDEODATA2;
|
|
s_video_data2.generic.callback = Video_MenuEvent;
|
|
if (menuType == ID_VIDEODATA)
|
|
{
|
|
s_video_data2.generic.callback = VideoSideButtons_MenuEvent;
|
|
}
|
|
else
|
|
{
|
|
s_video_data2.generic.callback = Video_MenuEvent;
|
|
}
|
|
s_video_data2.width = MENU_BUTTON_MED_WIDTH - 10;
|
|
s_video_data2.height = MENU_BUTTON_MED_HEIGHT;
|
|
s_video_data2.color = CT_DKPURPLE1;
|
|
s_video_data2.color2 = CT_LTPURPLE1;
|
|
s_video_data2.textX = 5;
|
|
s_video_data2.textY = 2;
|
|
s_video_data2.textEnum = MBT_VIDEODATA2;
|
|
s_video_data2.textcolor = CT_WHITE;
|
|
s_video_data2.textcolor2 = CT_WHITE;
|
|
if (menuType == ID_VIDEODATA2)
|
|
{
|
|
s_video_data2.textcolor = CT_WHITE;
|
|
s_video_data2.textcolor2 = CT_WHITE;
|
|
s_video_data2.generic.flags = QMF_GRAYED;
|
|
}
|
|
else
|
|
{
|
|
s_video_data2.textcolor = CT_BLACK;
|
|
s_video_data2.textcolor2 = CT_WHITE;
|
|
}
|
|
|
|
s_video_drivers.generic.type = MTYPE_BITMAP;
|
|
s_video_drivers.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
|
|
s_video_drivers.generic.x = video_sidebuttons[2][0];
|
|
s_video_drivers.generic.y = video_sidebuttons[2][1];
|
|
s_video_drivers.generic.name = GRAPHIC_SQUARE;
|
|
s_video_drivers.generic.id = ID_VIDEODRIVERS;
|
|
if (menuType == ID_VIDEODATA)
|
|
{
|
|
s_video_drivers.generic.callback = VideoSideButtons_MenuEvent;
|
|
}
|
|
else
|
|
{
|
|
s_video_drivers.generic.callback = Video_MenuEvent;
|
|
}
|
|
s_video_drivers.width = MENU_BUTTON_MED_WIDTH - 10;
|
|
s_video_drivers.height = MENU_BUTTON_MED_HEIGHT;
|
|
s_video_drivers.color = CT_DKPURPLE1;
|
|
s_video_drivers.color2 = CT_LTPURPLE1;
|
|
s_video_drivers.textX = 5;
|
|
s_video_drivers.textY = 2;
|
|
s_video_drivers.textEnum = MBT_VIDEODRIVERS;
|
|
if (menuType == ID_VIDEODRIVERS)
|
|
{
|
|
s_video_drivers.textcolor = CT_WHITE;
|
|
s_video_drivers.textcolor2 = CT_WHITE;
|
|
s_video_drivers.generic.flags = QMF_GRAYED;
|
|
}
|
|
else
|
|
{
|
|
s_video_drivers.textcolor = CT_BLACK;
|
|
s_video_drivers.textcolor2 = CT_WHITE;
|
|
}
|
|
|
|
Menu_AddItem( menu, ( void * )&s_video_data);
|
|
Menu_AddItem( menu, ( void * )&s_video_data2);
|
|
Menu_AddItem( menu, ( void * )&s_video_drivers);
|
|
|
|
} |