stvoy-sp-sdk/ui/ui_video.cpp

2367 lines
73 KiB
C++
Raw Permalink Normal View History

2002-11-22 00:00:00 +00:00
#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);
}