Merge branch 'master' into multiview

This commit is contained in:
Simon 2022-03-29 23:05:01 +01:00
commit 3f5226aa85
21 changed files with 1654 additions and 520 deletions

View file

@ -442,8 +442,11 @@ ifeq ($(PLATFORM),android)
-fno-builtin-cos -fno-builtin-sin -fPIC -DARCH_STRING=\\\"$(ARCH)\\\" -fno-builtin-cos -fno-builtin-sin -fPIC -DARCH_STRING=\\\"$(ARCH)\\\"
CLIENT_CFLAGS += $(SDL_CFLAGS) -DSDL_DISABLE_IMMINTRIN_H -fno-builtin-cos -fno-builtin-sin CLIENT_CFLAGS += $(SDL_CFLAGS) -DSDL_DISABLE_IMMINTRIN_H -fno-builtin-cos -fno-builtin-sin
# Flag -ffast-math replacement: https://pspdfkit.com/blog/2021/understanding-fast-math/
# Flags -ffp-contract=fast -fno-trapping-math are unused because they are causing lightmap issues
OPTIMIZEFASTMATH = -ffinite-math-only -fno-math-errno -fassociative-math -freciprocal-math -fno-signed-zeros
OPTIMIZEVM = -O3 -funroll-loops -fomit-frame-pointer OPTIMIZEVM = -O3 -funroll-loops -fomit-frame-pointer
OPTIMIZE = $(OPTIMIZEVM) OPTIMIZE = $(OPTIMIZEVM) $(OPTIMIZEFASTMATH)
HAVE_VM_COMPILED = false HAVE_VM_COMPILED = false

View file

@ -2,8 +2,8 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.drbeef.ioq3quest" package="com.drbeef.ioq3quest"
android:installLocation="preferExternal" android:installLocation="preferExternal"
android:versionCode="39" android:versionCode="40"
android:versionName="0.26.2"> android:versionName="0.28.0">
<uses-feature android:name="android.hardware.vr.headtracking" android:version="1" android:required="true" /> <uses-feature android:name="android.hardware.vr.headtracking" android:version="1" android:required="true" />
<uses-feature android:glEsVersion="0x00030001" /> <uses-feature android:glEsVersion="0x00030001" />
<!-- <uses-feature android:name="oculus.software.overlay_keyboard" android:required="false"/>--> <!-- <uses-feature android:name="oculus.software.overlay_keyboard" android:required="false"/>-->

View file

@ -933,9 +933,6 @@ void UI_MouseEvent( int dx, int dy )
else if (uis.cursory > SCREEN_HEIGHT+16) else if (uis.cursory > SCREEN_HEIGHT+16)
uis.cursory = SCREEN_HEIGHT+16; uis.cursory = SCREEN_HEIGHT+16;
vr->menuCursorX = &uis.cursorx;
vr->menuCursorY = &uis.cursory;
// region test the active menu items // region test the active menu items
for (i=0; i<uis.activemenu->nitems; i++) for (i=0; i<uis.activemenu->nitems; i++)
{ {

View file

@ -50,13 +50,17 @@ Q_EXPORT intptr_t vmMain( int command, int arg0, int arg1, int arg2, int arg3, i
case UI_INIT: { case UI_INIT: {
int ptr[2] = {arg1, arg2}; int ptr[2] = {arg1, arg2};
vr = (vr_clientinfo_t *) (*(long *) (ptr)); vr = (vr_clientinfo_t *) (*(long *) (ptr));
UI_Init(); UI_Init();
vr->menuCursorX = &uis.cursorx;
vr->menuCursorY = &uis.cursory;
} }
return 0; return 0;
case UI_SHUTDOWN: case UI_SHUTDOWN: {
vr->menuCursorX = NULL;
vr->menuCursorY = NULL;
UI_Shutdown(); UI_Shutdown();
}
return 0; return 0;
case UI_KEY_EVENT: case UI_KEY_EVENT:

View file

@ -378,6 +378,8 @@ static void PlayerModel_DrawPlayer( void *self )
} }
UI_DrawPlayer( b->generic.x, b->generic.y, b->width, b->height, &s_playermodel.playerinfo, uis.realtime/2 ); UI_DrawPlayer( b->generic.x, b->generic.y, b->width, b->height, &s_playermodel.playerinfo, uis.realtime/2 );
UI_DrawString( 320, 460, "To change player name use the companion app.", UI_CENTER|UI_SMALLFONT, text_color_normal );
} }
/* /*
@ -606,7 +608,7 @@ static void PlayerModel_MenuInit( void )
s_playermodel.playername.generic.type = MTYPE_PTEXT; s_playermodel.playername.generic.type = MTYPE_PTEXT;
s_playermodel.playername.generic.flags = QMF_CENTER_JUSTIFY|QMF_INACTIVE; s_playermodel.playername.generic.flags = QMF_CENTER_JUSTIFY|QMF_INACTIVE;
s_playermodel.playername.generic.x = 320; s_playermodel.playername.generic.x = 320;
s_playermodel.playername.generic.y = 440; s_playermodel.playername.generic.y = 430;
s_playermodel.playername.string = playername; s_playermodel.playername.string = playername;
s_playermodel.playername.style = UI_CENTER; s_playermodel.playername.style = UI_CENTER;
s_playermodel.playername.color = text_color_normal; s_playermodel.playername.color = text_color_normal;

View file

@ -108,7 +108,7 @@ PlayerSettings_DrawName
*/ */
static void PlayerSettings_DrawName( void *self ) { static void PlayerSettings_DrawName( void *self ) {
menufield_s *f; menufield_s *f;
qboolean focus; //qboolean focus;
int style; int style;
char *txt; char *txt;
char c; char c;
@ -120,14 +120,14 @@ static void PlayerSettings_DrawName( void *self ) {
f = (menufield_s*)self; f = (menufield_s*)self;
basex = f->generic.x; basex = f->generic.x;
y = f->generic.y; y = f->generic.y;
focus = (f->generic.parent->cursor == f->generic.menuPosition); //focus = (f->generic.parent->cursor == f->generic.menuPosition);
style = UI_LEFT|UI_SMALLFONT; style = UI_LEFT|UI_SMALLFONT;
color = text_color_normal; color = text_color_normal;
if( focus ) { //if( focus ) {
style |= UI_PULSE; // style |= UI_PULSE;
color = text_color_highlight; // color = text_color_highlight;
} //}
UI_DrawProportionalString( basex, y, "Name", style, color ); UI_DrawProportionalString( basex, y, "Name", style, color );
@ -138,7 +138,8 @@ static void PlayerSettings_DrawName( void *self ) {
color = g_color_table[ColorIndex(COLOR_WHITE)]; color = g_color_table[ColorIndex(COLOR_WHITE)];
x = basex; x = basex;
while ( (c = *txt) != 0 ) { while ( (c = *txt) != 0 ) {
if ( !focus && Q_IsColorString( txt ) ) { //if ( !focus && Q_IsColorString( txt ) ) {
if ( Q_IsColorString( txt ) ) {
n = ColorIndex( *(txt+1) ); n = ColorIndex( *(txt+1) );
if( n == 0 ) { if( n == 0 ) {
n = 7; n = 7;
@ -153,23 +154,24 @@ static void PlayerSettings_DrawName( void *self ) {
} }
// draw cursor if we have focus // draw cursor if we have focus
if( focus ) { //if( focus ) {
if ( trap_Key_GetOverstrikeMode() ) { // if ( trap_Key_GetOverstrikeMode() ) {
c = 11; // c = 11;
} else { // } else {
c = 10; // c = 10;
} // }
//
style &= ~UI_PULSE; // style &= ~UI_PULSE;
style |= UI_BLINK; // style |= UI_BLINK;
//
UI_DrawChar( basex + f->field.cursor * SMALLCHAR_WIDTH, y, c, style, color_white ); // UI_DrawChar( basex + f->field.cursor * SMALLCHAR_WIDTH, y, c, style, color_white );
} //}
// draw at bottom also using proportional font // draw at bottom also using proportional font
Q_strncpyz( name, f->field.buffer, sizeof(name) ); Q_strncpyz( name, f->field.buffer, sizeof(name) );
Q_CleanStr( name ); Q_CleanStr( name );
UI_DrawProportionalString( 320, 440, name, UI_CENTER|UI_BIGFONT, text_color_normal ); UI_DrawProportionalString( 320, 430, name, UI_CENTER|UI_BIGFONT, text_color_normal );
UI_DrawString( 320, 460, "To change player name use the companion app.", UI_CENTER|UI_SMALLFONT, text_color_normal );
} }
@ -397,8 +399,10 @@ static void PlayerSettings_MenuInit( void ) {
s_playersettings.framer.height = 334; s_playersettings.framer.height = 334;
y = 112; y = 112;
s_playersettings.name.generic.type = MTYPE_FIELD; //s_playersettings.name.generic.type = MTYPE_FIELD;
s_playersettings.name.generic.flags = QMF_NODEFAULTINIT; //s_playersettings.name.generic.flags = QMF_NODEFAULTINIT;
s_playersettings.name.generic.type = MTYPE_BTEXT;
s_playersettings.name.generic.flags = QMF_INACTIVE;
s_playersettings.name.generic.ownerdraw = PlayerSettings_DrawName; s_playersettings.name.generic.ownerdraw = PlayerSettings_DrawName;
s_playersettings.name.field.widthInChars = MAX_NAMELENGTH; s_playersettings.name.field.widthInChars = MAX_NAMELENGTH;
s_playersettings.name.field.maxchars = MAX_NAMELENGTH; s_playersettings.name.field.maxchars = MAX_NAMELENGTH;

View file

@ -126,14 +126,7 @@ static void Preferences_SetMenuItems( void ) {
s_preferences.drawhud.curvalue = trap_Cvar_VariableValue( "cg_drawStatus" ) != 0; s_preferences.drawhud.curvalue = trap_Cvar_VariableValue( "cg_drawStatus" ) != 0;
// s_preferences.allowdownload.curvalue = trap_Cvar_VariableValue( "cl_allowDownload" ) != 0; // s_preferences.allowdownload.curvalue = trap_Cvar_VariableValue( "cl_allowDownload" ) != 0;
s_preferences.holster2d.curvalue = trap_Cvar_VariableValue( "cg_weaponSelectorSimple2DIcons" ) != 0; s_preferences.holster2d.curvalue = trap_Cvar_VariableValue( "cg_weaponSelectorSimple2DIcons" ) != 0;
//GORE s_preferences.gore.curvalue = trap_Cvar_VariableValue( "vr_goreLevel" );
{
int level = trap_Cvar_VariableValue( "com_blood" ) +
trap_Cvar_VariableValue( "cg_gibs" ) +
trap_Cvar_VariableValue( "cg_megagibs" );
s_preferences.gore.curvalue = level % NUM_GORE;
}
s_preferences.showinhand.curvalue = trap_Cvar_VariableValue( "vr_showItemInHand" ) != 0; s_preferences.showinhand.curvalue = trap_Cvar_VariableValue( "vr_showItemInHand" ) != 0;
s_preferences.selectorwithhud.curvalue = trap_Cvar_VariableValue( "vr_weaponSelectorWithHud" ) != 0; s_preferences.selectorwithhud.curvalue = trap_Cvar_VariableValue( "vr_weaponSelectorWithHud" ) != 0;
} }

View file

@ -251,8 +251,10 @@ GRAPHICS OPTIONS MENU
#define ID_REFRESHRATE 111 #define ID_REFRESHRATE 111
#define ID_DYNAMICLIGHTS 112 #define ID_DYNAMICLIGHTS 112
#define ID_SYNCEVERYFRAME 113 #define ID_SYNCEVERYFRAME 113
#define ID_SHADOWS 114
#define NUM_REFRESHRATE 4 #define NUM_REFRESHRATE 4
#define NUM_SHADOWS 2
typedef struct { typedef struct {
menuframework_s menu; menuframework_s menu;
@ -282,6 +284,7 @@ typedef struct {
menulist_s refreshrate; menulist_s refreshrate;
menuradiobutton_s dynamiclights; menuradiobutton_s dynamiclights;
menuradiobutton_s synceveryframe; menuradiobutton_s synceveryframe;
menulist_s shadows;
menubitmap_s apply; menubitmap_s apply;
menubitmap_s back; menubitmap_s back;
@ -302,6 +305,7 @@ typedef struct
int refreshrate; int refreshrate;
qboolean dynamiclights; qboolean dynamiclights;
qboolean synceveryframe; qboolean synceveryframe;
int shadows;
} InitialVideoOptions_s; } InitialVideoOptions_s;
static InitialVideoOptions_s s_ivo; static InitialVideoOptions_s s_ivo;
@ -379,99 +383,99 @@ static qboolean resolutionsDetected = qfalse;
GraphicsOptions_FindBuiltinResolution GraphicsOptions_FindBuiltinResolution
================= =================
*/ */
static int GraphicsOptions_FindBuiltinResolution( int mode ) // static int GraphicsOptions_FindBuiltinResolution( int mode )
{ // {
int i; // int i;
//
if( !resolutionsDetected ) // if( !resolutionsDetected )
return mode; // return mode;
//
if( mode < 0 ) // if( mode < 0 )
return -1; // return -1;
//
for( i = 0; builtinResolutions[ i ]; i++ ) // for( i = 0; builtinResolutions[ i ]; i++ )
{ // {
if( !Q_stricmp( builtinResolutions[ i ], detectedResolutions[ mode ] ) ) // if( !Q_stricmp( builtinResolutions[ i ], detectedResolutions[ mode ] ) )
return i; // return i;
} // }
//
return -1; // return -1;
} // }
/* /*
================= =================
GraphicsOptions_FindDetectedResolution GraphicsOptions_FindDetectedResolution
================= =================
*/ */
static int GraphicsOptions_FindDetectedResolution( int mode ) // static int GraphicsOptions_FindDetectedResolution( int mode )
{ // {
int i; // int i;
//
if( !resolutionsDetected ) // if( !resolutionsDetected )
return mode; // return mode;
//
if( mode < 0 ) // if( mode < 0 )
return -1; // return -1;
//
for( i = 0; detectedResolutions[ i ]; i++ ) // for( i = 0; detectedResolutions[ i ]; i++ )
{ // {
if( !Q_stricmp( builtinResolutions[ mode ], detectedResolutions[ i ] ) ) // if( !Q_stricmp( builtinResolutions[ mode ], detectedResolutions[ i ] ) )
return i; // return i;
} // }
//
return -1; // return -1;
} // }
/* /*
================= =================
GraphicsOptions_GetAspectRatios GraphicsOptions_GetAspectRatios
================= =================
*/ */
static void GraphicsOptions_GetAspectRatios( void ) // static void GraphicsOptions_GetAspectRatios( void )
{ // {
int i, r; // int i, r;
//
// build ratio list from resolutions // // build ratio list from resolutions
for( r = 0; resolutions[r]; r++ ) // for( r = 0; resolutions[r]; r++ )
{ // {
int w, h; // int w, h;
char *x; // char *x;
char str[ sizeof(ratioBuf[0]) ]; // char str[ sizeof(ratioBuf[0]) ];
//
// calculate resolution's aspect ratio // // calculate resolution's aspect ratio
x = strchr( resolutions[r], 'x' ) + 1; // x = strchr( resolutions[r], 'x' ) + 1;
Q_strncpyz( str, resolutions[r], x-resolutions[r] ); // Q_strncpyz( str, resolutions[r], x-resolutions[r] );
w = atoi( str ); // w = atoi( str );
h = atoi( x ); // h = atoi( x );
Com_sprintf( str, sizeof(str), "%.2f:1", (float)w / (float)h ); // Com_sprintf( str, sizeof(str), "%.2f:1", (float)w / (float)h );
//
// rename common ratios ("1.33:1" -> "4:3") // // rename common ratios ("1.33:1" -> "4:3")
for( i = 0; knownRatios[i][0]; i++ ) { // for( i = 0; knownRatios[i][0]; i++ ) {
if( !Q_stricmp( str, knownRatios[i][0] ) ) { // if( !Q_stricmp( str, knownRatios[i][0] ) ) {
Q_strncpyz( str, knownRatios[i][1], sizeof( str ) ); // Q_strncpyz( str, knownRatios[i][1], sizeof( str ) );
break; // break;
} // }
} // }
//
// add ratio to list if it is new // // add ratio to list if it is new
// establish res/ratio relationship // // establish res/ratio relationship
for( i = 0; ratioBuf[i][0]; i++ ) // for( i = 0; ratioBuf[i][0]; i++ )
{ // {
if( !Q_stricmp( str, ratioBuf[i] ) ) // if( !Q_stricmp( str, ratioBuf[i] ) )
break; // break;
} // }
if( !ratioBuf[i][0] ) // if( !ratioBuf[i][0] )
{ // {
Q_strncpyz( ratioBuf[i], str, sizeof(ratioBuf[i]) ); // Q_strncpyz( ratioBuf[i], str, sizeof(ratioBuf[i]) );
ratioToRes[i] = r; // ratioToRes[i] = r;
} // }
//
ratios[r] = ratioBuf[r]; // ratios[r] = ratioBuf[r];
resToRatio[r] = i; // resToRatio[r] = i;
} // }
//
ratios[r] = NULL; // ratios[r] = NULL;
} // }
/* /*
================= =================
@ -481,10 +485,10 @@ GraphicsOptions_GetInitialVideo
static void GraphicsOptions_GetInitialVideo( void ) static void GraphicsOptions_GetInitialVideo( void )
{ {
s_ivo.colordepth = s_graphicsoptions.colordepth.curvalue; s_ivo.colordepth = s_graphicsoptions.colordepth.curvalue;
s_ivo.driver = s_graphicsoptions.driver.curvalue; // s_ivo.driver = s_graphicsoptions.driver.curvalue;
s_ivo.mode = s_graphicsoptions.mode.curvalue; // s_ivo.mode = s_graphicsoptions.mode.curvalue;
s_ivo.fullscreen = s_graphicsoptions.fs.curvalue; // s_ivo.fullscreen = s_graphicsoptions.fs.curvalue;
s_ivo.extensions = s_graphicsoptions.allow_extensions.curvalue; // s_ivo.extensions = s_graphicsoptions.allow_extensions.curvalue;
s_ivo.tq = s_graphicsoptions.tq.curvalue; s_ivo.tq = s_graphicsoptions.tq.curvalue;
s_ivo.lighting = s_graphicsoptions.lighting.curvalue; s_ivo.lighting = s_graphicsoptions.lighting.curvalue;
s_ivo.geometry = s_graphicsoptions.geometry.curvalue; s_ivo.geometry = s_graphicsoptions.geometry.curvalue;
@ -493,6 +497,7 @@ static void GraphicsOptions_GetInitialVideo( void )
s_ivo.refreshrate = s_graphicsoptions.refreshrate.curvalue; s_ivo.refreshrate = s_graphicsoptions.refreshrate.curvalue;
s_ivo.dynamiclights = s_graphicsoptions.dynamiclights.curvalue; s_ivo.dynamiclights = s_graphicsoptions.dynamiclights.curvalue;
s_ivo.synceveryframe = s_graphicsoptions.synceveryframe.curvalue; s_ivo.synceveryframe = s_graphicsoptions.synceveryframe.curvalue;
s_ivo.shadows = s_graphicsoptions.refreshrate.curvalue;
} }
/* /*
@ -500,81 +505,81 @@ static void GraphicsOptions_GetInitialVideo( void )
GraphicsOptions_GetResolutions GraphicsOptions_GetResolutions
================= =================
*/ */
static void GraphicsOptions_GetResolutions( void ) // static void GraphicsOptions_GetResolutions( void )
{ // {
trap_Cvar_VariableStringBuffer("r_availableModes", resbuf, sizeof(resbuf)); // trap_Cvar_VariableStringBuffer("r_availableModes", resbuf, sizeof(resbuf));
if(*resbuf) // if(*resbuf)
{ // {
char* s = resbuf; // char* s = resbuf;
unsigned int i = 0; // unsigned int i = 0;
while( s && i < ARRAY_LEN(detectedResolutions)-1 ) // while( s && i < ARRAY_LEN(detectedResolutions)-1 )
{ // {
detectedResolutions[i++] = s; // detectedResolutions[i++] = s;
s = strchr(s, ' '); // s = strchr(s, ' ');
if( s ) // if( s )
*s++ = '\0'; // *s++ = '\0';
} // }
detectedResolutions[ i ] = NULL; // detectedResolutions[ i ] = NULL;
//
// add custom resolution if not in mode list // // add custom resolution if not in mode list
if ( i < ARRAY_LEN(detectedResolutions)-1 ) // if ( i < ARRAY_LEN(detectedResolutions)-1 )
{ // {
Com_sprintf( currentResolution, sizeof ( currentResolution ), "%dx%d", uis.glconfig.vidWidth, uis.glconfig.vidHeight ); // Com_sprintf( currentResolution, sizeof ( currentResolution ), "%dx%d", uis.glconfig.vidWidth, uis.glconfig.vidHeight );
//
for( i = 0; detectedResolutions[ i ]; i++ ) // for( i = 0; detectedResolutions[ i ]; i++ )
{ // {
if ( strcmp( detectedResolutions[ i ], currentResolution ) == 0 ) // if ( strcmp( detectedResolutions[ i ], currentResolution ) == 0 )
break; // break;
} // }
//
if ( detectedResolutions[ i ] == NULL ) // if ( detectedResolutions[ i ] == NULL )
{ // {
detectedResolutions[ i++ ] = currentResolution; // detectedResolutions[ i++ ] = currentResolution;
detectedResolutions[ i ] = NULL; // detectedResolutions[ i ] = NULL;
} // }
} // }
//
resolutions = detectedResolutions; // resolutions = detectedResolutions;
resolutionsDetected = qtrue; // resolutionsDetected = qtrue;
} // }
} // }
/* /*
================= =================
GraphicsOptions_CheckConfig GraphicsOptions_CheckConfig
================= =================
*/ */
static void GraphicsOptions_CheckConfig( void ) // static void GraphicsOptions_CheckConfig( void )
{ // {
int i; // int i;
//
for ( i = 0; i < NUM_IVO_TEMPLATES-1; i++ ) // for ( i = 0; i < NUM_IVO_TEMPLATES-1; i++ )
{ // {
if ( s_ivo_templates[i].colordepth != s_graphicsoptions.colordepth.curvalue ) // if ( s_ivo_templates[i].colordepth != s_graphicsoptions.colordepth.curvalue )
continue; // continue;
if ( s_ivo_templates[i].driver != s_graphicsoptions.driver.curvalue ) // if ( s_ivo_templates[i].driver != s_graphicsoptions.driver.curvalue )
continue; // continue;
if ( GraphicsOptions_FindDetectedResolution(s_ivo_templates[i].mode) != s_graphicsoptions.mode.curvalue ) // if ( GraphicsOptions_FindDetectedResolution(s_ivo_templates[i].mode) != s_graphicsoptions.mode.curvalue )
continue; // continue;
if ( s_ivo_templates[i].fullscreen != s_graphicsoptions.fs.curvalue ) // if ( s_ivo_templates[i].fullscreen != s_graphicsoptions.fs.curvalue )
continue; // continue;
if ( s_ivo_templates[i].tq != s_graphicsoptions.tq.curvalue ) // if ( s_ivo_templates[i].tq != s_graphicsoptions.tq.curvalue )
continue; // continue;
if ( s_ivo_templates[i].lighting != s_graphicsoptions.lighting.curvalue ) // if ( s_ivo_templates[i].lighting != s_graphicsoptions.lighting.curvalue )
continue; // continue;
if ( s_ivo_templates[i].geometry != s_graphicsoptions.geometry.curvalue ) // if ( s_ivo_templates[i].geometry != s_graphicsoptions.geometry.curvalue )
continue; // continue;
if ( s_ivo_templates[i].filter != s_graphicsoptions.filter.curvalue ) // if ( s_ivo_templates[i].filter != s_graphicsoptions.filter.curvalue )
continue; // continue;
// if ( s_ivo_templates[i].texturebits != s_graphicsoptions.texturebits.curvalue ) // if ( s_ivo_templates[i].texturebits != s_graphicsoptions.texturebits.curvalue )
// continue; // continue;
s_graphicsoptions.list.curvalue = i; // s_graphicsoptions.list.curvalue = i;
return; // return;
} // }
//
// return 'Custom' ivo template // // return 'Custom' ivo template
s_graphicsoptions.list.curvalue = NUM_IVO_TEMPLATES - 1; // s_graphicsoptions.list.curvalue = NUM_IVO_TEMPLATES - 1;
} // }
/* /*
================= =================
@ -583,49 +588,49 @@ GraphicsOptions_UpdateMenuItems
*/ */
static void GraphicsOptions_UpdateMenuItems( void ) static void GraphicsOptions_UpdateMenuItems( void )
{ {
if ( s_graphicsoptions.driver.curvalue == 1 ) // if ( s_graphicsoptions.driver.curvalue == 1 )
{ // {
s_graphicsoptions.fs.curvalue = 1; // s_graphicsoptions.fs.curvalue = 1;
s_graphicsoptions.fs.generic.flags |= QMF_GRAYED; // s_graphicsoptions.fs.generic.flags |= QMF_GRAYED;
s_graphicsoptions.colordepth.curvalue = 1; // s_graphicsoptions.colordepth.curvalue = 1;
} // }
else // else
{ // {
s_graphicsoptions.fs.generic.flags &= ~QMF_GRAYED; // s_graphicsoptions.fs.generic.flags &= ~QMF_GRAYED;
} // }
if ( s_graphicsoptions.fs.curvalue == 0 || s_graphicsoptions.driver.curvalue == 1 ) // if ( s_graphicsoptions.fs.curvalue == 0 || s_graphicsoptions.driver.curvalue == 1 )
{ // {
s_graphicsoptions.colordepth.curvalue = 0; // s_graphicsoptions.colordepth.curvalue = 0;
s_graphicsoptions.colordepth.generic.flags |= QMF_GRAYED; // s_graphicsoptions.colordepth.generic.flags |= QMF_GRAYED;
} // }
else // else
{ // {
s_graphicsoptions.colordepth.generic.flags &= ~QMF_GRAYED; // s_graphicsoptions.colordepth.generic.flags &= ~QMF_GRAYED;
} // }
if ( s_graphicsoptions.allow_extensions.curvalue == 0 ) // if ( s_graphicsoptions.allow_extensions.curvalue == 0 )
{ // {
if ( s_graphicsoptions.texturebits.curvalue == 0 ) // if ( s_graphicsoptions.texturebits.curvalue == 0 )
{ // {
s_graphicsoptions.texturebits.curvalue = 1; // s_graphicsoptions.texturebits.curvalue = 1;
} // }
} // }
s_graphicsoptions.apply.generic.flags |= QMF_HIDDEN|QMF_INACTIVE; s_graphicsoptions.apply.generic.flags |= QMF_HIDDEN|QMF_INACTIVE;
if ( s_ivo.mode != s_graphicsoptions.mode.curvalue ) // if ( s_ivo.mode != s_graphicsoptions.mode.curvalue )
{ // {
s_graphicsoptions.apply.generic.flags &= ~(QMF_HIDDEN|QMF_INACTIVE); // s_graphicsoptions.apply.generic.flags &= ~(QMF_HIDDEN|QMF_INACTIVE);
} // }
if ( s_ivo.fullscreen != s_graphicsoptions.fs.curvalue ) // if ( s_ivo.fullscreen != s_graphicsoptions.fs.curvalue )
{ // {
s_graphicsoptions.apply.generic.flags &= ~(QMF_HIDDEN|QMF_INACTIVE); // s_graphicsoptions.apply.generic.flags &= ~(QMF_HIDDEN|QMF_INACTIVE);
} // }
if ( s_ivo.extensions != s_graphicsoptions.allow_extensions.curvalue ) // if ( s_ivo.extensions != s_graphicsoptions.allow_extensions.curvalue )
{ // {
s_graphicsoptions.apply.generic.flags &= ~(QMF_HIDDEN|QMF_INACTIVE); // s_graphicsoptions.apply.generic.flags &= ~(QMF_HIDDEN|QMF_INACTIVE);
} // }
if ( s_ivo.tq != s_graphicsoptions.tq.curvalue ) if ( s_ivo.tq != s_graphicsoptions.tq.curvalue )
{ {
s_graphicsoptions.apply.generic.flags &= ~(QMF_HIDDEN|QMF_INACTIVE); s_graphicsoptions.apply.generic.flags &= ~(QMF_HIDDEN|QMF_INACTIVE);
@ -638,10 +643,10 @@ static void GraphicsOptions_UpdateMenuItems( void )
{ {
s_graphicsoptions.apply.generic.flags &= ~(QMF_HIDDEN|QMF_INACTIVE); s_graphicsoptions.apply.generic.flags &= ~(QMF_HIDDEN|QMF_INACTIVE);
} }
if ( s_ivo.driver != s_graphicsoptions.driver.curvalue ) // if ( s_ivo.driver != s_graphicsoptions.driver.curvalue )
{ // {
s_graphicsoptions.apply.generic.flags &= ~(QMF_HIDDEN|QMF_INACTIVE); // s_graphicsoptions.apply.generic.flags &= ~(QMF_HIDDEN|QMF_INACTIVE);
} // }
if ( s_ivo.texturebits != s_graphicsoptions.texturebits.curvalue ) if ( s_ivo.texturebits != s_graphicsoptions.texturebits.curvalue )
{ {
s_graphicsoptions.apply.generic.flags &= ~(QMF_HIDDEN|QMF_INACTIVE); s_graphicsoptions.apply.generic.flags &= ~(QMF_HIDDEN|QMF_INACTIVE);
@ -655,7 +660,7 @@ static void GraphicsOptions_UpdateMenuItems( void )
s_graphicsoptions.apply.generic.flags &= ~(QMF_HIDDEN|QMF_INACTIVE); s_graphicsoptions.apply.generic.flags &= ~(QMF_HIDDEN|QMF_INACTIVE);
} }
GraphicsOptions_CheckConfig(); // GraphicsOptions_CheckConfig();
} }
/* /*
@ -681,34 +686,36 @@ static void GraphicsOptions_ApplyChanges( void *unused, int notification )
break; break;
} }
trap_Cvar_SetValue( "r_picmip", 3 - s_graphicsoptions.tq.curvalue ); trap_Cvar_SetValue( "r_picmip", 3 - s_graphicsoptions.tq.curvalue );
trap_Cvar_SetValue( "r_allowExtensions", s_graphicsoptions.allow_extensions.curvalue );
if( resolutionsDetected ) // trap_Cvar_SetValue( "r_allowExtensions", s_graphicsoptions.allow_extensions.curvalue );
{
// search for builtin mode that matches the detected mode
int mode;
if ( s_graphicsoptions.mode.curvalue == -1
|| s_graphicsoptions.mode.curvalue >= ARRAY_LEN( detectedResolutions ) )
s_graphicsoptions.mode.curvalue = 0;
mode = GraphicsOptions_FindBuiltinResolution( s_graphicsoptions.mode.curvalue ); // if( resolutionsDetected )
if( mode == -1 ) // {
{ // // search for builtin mode that matches the detected mode
char w[ 16 ], h[ 16 ]; // int mode;
Q_strncpyz( w, detectedResolutions[ s_graphicsoptions.mode.curvalue ], sizeof( w ) ); // if ( s_graphicsoptions.mode.curvalue == -1
*strchr( w, 'x' ) = 0; // || s_graphicsoptions.mode.curvalue >= ARRAY_LEN( detectedResolutions ) )
Q_strncpyz( h, // s_graphicsoptions.mode.curvalue = 0;
strchr( detectedResolutions[ s_graphicsoptions.mode.curvalue ], 'x' ) + 1, sizeof( h ) ); //
trap_Cvar_Set( "r_customwidth", w ); // mode = GraphicsOptions_FindBuiltinResolution( s_graphicsoptions.mode.curvalue );
trap_Cvar_Set( "r_customheight", h ); // if( mode == -1 )
} // {
// char w[ 16 ], h[ 16 ];
// Q_strncpyz( w, detectedResolutions[ s_graphicsoptions.mode.curvalue ], sizeof( w ) );
// *strchr( w, 'x' ) = 0;
// Q_strncpyz( h,
// strchr( detectedResolutions[ s_graphicsoptions.mode.curvalue ], 'x' ) + 1, sizeof( h ) );
// trap_Cvar_Set( "r_customwidth", w );
// trap_Cvar_Set( "r_customheight", h );
// }
//
// trap_Cvar_SetValue( "r_mode", mode );
// }
// else
// trap_Cvar_SetValue( "r_mode", s_graphicsoptions.mode.curvalue );
trap_Cvar_SetValue( "r_mode", mode ); // trap_Cvar_SetValue( "r_fullscreen", s_graphicsoptions.fs.curvalue );
}
else
trap_Cvar_SetValue( "r_mode", s_graphicsoptions.mode.curvalue );
trap_Cvar_SetValue( "r_fullscreen", s_graphicsoptions.fs.curvalue );
switch ( s_graphicsoptions.colordepth.curvalue ) switch ( s_graphicsoptions.colordepth.curvalue )
{ {
case 0: case 0:
@ -727,11 +734,12 @@ static void GraphicsOptions_ApplyChanges( void *unused, int notification )
trap_Cvar_SetValue( "r_stencilbits", 8 ); trap_Cvar_SetValue( "r_stencilbits", 8 );
break; break;
} }
trap_Cvar_SetValue( "r_vertexLight", s_graphicsoptions.lighting.curvalue ); trap_Cvar_SetValue( "r_vertexLight", s_graphicsoptions.lighting.curvalue );
if ( s_graphicsoptions.geometry.curvalue == 2 ) if ( s_graphicsoptions.geometry.curvalue == 2 )
{ {
trap_Cvar_SetValue( "r_lodBias", 0 ); trap_Cvar_SetValue( "r_lodBias", -1 );
trap_Cvar_SetValue( "r_subdivisions", 4 ); trap_Cvar_SetValue( "r_subdivisions", 4 );
} }
else if ( s_graphicsoptions.geometry.curvalue == 1 ) else if ( s_graphicsoptions.geometry.curvalue == 1 )
@ -741,8 +749,8 @@ static void GraphicsOptions_ApplyChanges( void *unused, int notification )
} }
else else
{ {
trap_Cvar_SetValue( "r_lodBias", 1 ); trap_Cvar_SetValue( "r_lodBias", 2 );
trap_Cvar_SetValue( "r_subdivisions", 20 ); trap_Cvar_SetValue( "r_subdivisions", 80 );
} }
if ( s_graphicsoptions.filter.curvalue ) if ( s_graphicsoptions.filter.curvalue )
@ -816,21 +824,35 @@ static void GraphicsOptions_Event( void* ptr, int event ) {
trap_Cvar_SetValue( "r_finish", s_graphicsoptions.synceveryframe.curvalue ); trap_Cvar_SetValue( "r_finish", s_graphicsoptions.synceveryframe.curvalue );
break; break;
case ID_LIST: case ID_SHADOWS: {
ivo = &s_ivo_templates[s_graphicsoptions.list.curvalue]; int shadows;
switch (s_graphicsoptions.shadows.curvalue) {
s_graphicsoptions.mode.curvalue = GraphicsOptions_FindDetectedResolution(ivo->mode); case 0:
s_graphicsoptions.ratio.curvalue = shadows = 1;
resToRatio[ s_graphicsoptions.mode.curvalue ];
s_graphicsoptions.tq.curvalue = ivo->tq;
s_graphicsoptions.lighting.curvalue = ivo->lighting;
s_graphicsoptions.colordepth.curvalue = ivo->colordepth;
s_graphicsoptions.texturebits.curvalue = ivo->texturebits;
s_graphicsoptions.geometry.curvalue = ivo->geometry;
s_graphicsoptions.filter.curvalue = ivo->filter;
s_graphicsoptions.fs.curvalue = ivo->fullscreen;
s_graphicsoptions.refreshrate.curvalue = ivo->refreshrate;
break; break;
default:
shadows = 3;
break;
}
trap_Cvar_SetValue("cg_shadows", shadows);
}
break;
// case ID_LIST:
// ivo = &s_ivo_templates[s_graphicsoptions.list.curvalue];
//
// s_graphicsoptions.mode.curvalue = GraphicsOptions_FindDetectedResolution(ivo->mode);
// s_graphicsoptions.ratio.curvalue =
// resToRatio[ s_graphicsoptions.mode.curvalue ];
// s_graphicsoptions.tq.curvalue = ivo->tq;
// s_graphicsoptions.lighting.curvalue = ivo->lighting;
// s_graphicsoptions.colordepth.curvalue = ivo->colordepth;
// s_graphicsoptions.texturebits.curvalue = ivo->texturebits;
// s_graphicsoptions.geometry.curvalue = ivo->geometry;
// s_graphicsoptions.filter.curvalue = ivo->filter;
// s_graphicsoptions.fs.curvalue = ivo->fullscreen;
// s_graphicsoptions.refreshrate.curvalue = ivo->refreshrate;
// break;
case ID_DRIVERINFO: case ID_DRIVERINFO:
UI_DriverInfo_Menu(); UI_DriverInfo_Menu();
@ -894,40 +916,40 @@ GraphicsOptions_SetMenuItems
*/ */
static void GraphicsOptions_SetMenuItems( void ) static void GraphicsOptions_SetMenuItems( void )
{ {
s_graphicsoptions.mode.curvalue = // s_graphicsoptions.mode.curvalue =
GraphicsOptions_FindDetectedResolution( trap_Cvar_VariableValue( "r_mode" ) ); // GraphicsOptions_FindDetectedResolution( trap_Cvar_VariableValue( "r_mode" ) );
//
if ( s_graphicsoptions.mode.curvalue < 0 ) // if ( s_graphicsoptions.mode.curvalue < 0 )
{ // {
if( resolutionsDetected ) // if( resolutionsDetected )
{ // {
int i; // int i;
char buf[MAX_STRING_CHARS]; // char buf[MAX_STRING_CHARS];
trap_Cvar_VariableStringBuffer("r_customwidth", buf, sizeof(buf)-2); // trap_Cvar_VariableStringBuffer("r_customwidth", buf, sizeof(buf)-2);
buf[strlen(buf)+1] = 0; // buf[strlen(buf)+1] = 0;
buf[strlen(buf)] = 'x'; // buf[strlen(buf)] = 'x';
trap_Cvar_VariableStringBuffer("r_customheight", buf+strlen(buf), sizeof(buf)-strlen(buf)); // trap_Cvar_VariableStringBuffer("r_customheight", buf+strlen(buf), sizeof(buf)-strlen(buf));
//
for(i = 0; detectedResolutions[i]; ++i) // for(i = 0; detectedResolutions[i]; ++i)
{ // {
if(!Q_stricmp(buf, detectedResolutions[i])) // if(!Q_stricmp(buf, detectedResolutions[i]))
{ // {
s_graphicsoptions.mode.curvalue = i; // s_graphicsoptions.mode.curvalue = i;
break; // break;
} // }
} // }
if ( s_graphicsoptions.mode.curvalue < 0 ) // if ( s_graphicsoptions.mode.curvalue < 0 )
s_graphicsoptions.mode.curvalue = 0; // s_graphicsoptions.mode.curvalue = 0;
} // }
else // else
{ // {
s_graphicsoptions.mode.curvalue = 3; // s_graphicsoptions.mode.curvalue = 3;
} // }
} // }
s_graphicsoptions.ratio.curvalue = // s_graphicsoptions.ratio.curvalue =
resToRatio[ s_graphicsoptions.mode.curvalue ]; // resToRatio[ s_graphicsoptions.mode.curvalue ];
s_graphicsoptions.fs.curvalue = trap_Cvar_VariableValue("r_fullscreen"); // s_graphicsoptions.fs.curvalue = trap_Cvar_VariableValue("r_fullscreen");
s_graphicsoptions.allow_extensions.curvalue = trap_Cvar_VariableValue("r_allowExtensions"); // s_graphicsoptions.allow_extensions.curvalue = trap_Cvar_VariableValue("r_allowExtensions");
s_graphicsoptions.tq.curvalue = 3-trap_Cvar_VariableValue( "r_picmip"); s_graphicsoptions.tq.curvalue = 3-trap_Cvar_VariableValue( "r_picmip");
if ( s_graphicsoptions.tq.curvalue < 0 ) if ( s_graphicsoptions.tq.curvalue < 0 )
{ {
@ -962,20 +984,13 @@ static void GraphicsOptions_SetMenuItems( void )
s_graphicsoptions.filter.curvalue = 1; s_graphicsoptions.filter.curvalue = 1;
} }
if ( trap_Cvar_VariableValue( "r_lodBias" ) > 0 ) int lodbias = trap_Cvar_VariableValue( "r_lodBias" );
{ if (lodbias == -1) {
if ( trap_Cvar_VariableValue( "r_subdivisions" ) >= 20 )
{
s_graphicsoptions.geometry.curvalue = 0;
}
else
{
s_graphicsoptions.geometry.curvalue = 1;
}
}
else
{
s_graphicsoptions.geometry.curvalue = 2; s_graphicsoptions.geometry.curvalue = 2;
} else if (lodbias == 1) {
s_graphicsoptions.geometry.curvalue = 1;
} else {
s_graphicsoptions.geometry.curvalue = 0;
} }
switch ( ( int ) trap_Cvar_VariableValue( "r_colorbits" ) ) switch ( ( int ) trap_Cvar_VariableValue( "r_colorbits" ) )
@ -992,14 +1007,14 @@ static void GraphicsOptions_SetMenuItems( void )
break; break;
} }
if ( s_graphicsoptions.fs.curvalue == 0 ) // if ( s_graphicsoptions.fs.curvalue == 0 )
{ // {
s_graphicsoptions.colordepth.curvalue = 0; // s_graphicsoptions.colordepth.curvalue = 0;
} //}
if ( s_graphicsoptions.driver.curvalue == 1 ) //if ( s_graphicsoptions.driver.curvalue == 1 )
{ //{
s_graphicsoptions.colordepth.curvalue = 1; // s_graphicsoptions.colordepth.curvalue = 1;
} // }
switch ( (int) trap_Cvar_VariableValue( "vr_refreshrate" ) ) switch ( (int) trap_Cvar_VariableValue( "vr_refreshrate" ) )
{ {
@ -1016,6 +1031,17 @@ static void GraphicsOptions_SetMenuItems( void )
s_graphicsoptions.refreshrate.curvalue = 3; s_graphicsoptions.refreshrate.curvalue = 3;
break; break;
} }
switch ( (int) trap_Cvar_VariableValue( "cg_shadows" ) )
{
case 1:
s_graphicsoptions.shadows.curvalue = 0;
break;
default:
s_graphicsoptions.shadows.curvalue = 1;
break;
}
s_graphicsoptions.dynamiclights.curvalue = trap_Cvar_VariableValue( "r_dynamiclight" ) != 0; s_graphicsoptions.dynamiclights.curvalue = trap_Cvar_VariableValue( "r_dynamiclight" ) != 0;
s_graphicsoptions.synceveryframe.curvalue = trap_Cvar_VariableValue( "r_finish" ) != 0; s_graphicsoptions.synceveryframe.curvalue = trap_Cvar_VariableValue( "r_finish" ) != 0;
} }
@ -1087,7 +1113,8 @@ void GraphicsOptions_MenuInit( void )
"On", "On",
NULL NULL
}; };
*/ static const char *s_refreshrate[] = */
static const char *s_refreshrate[] =
{ {
"60", "60",
"72 (Recommended)", "72 (Recommended)",
@ -1095,14 +1122,20 @@ void GraphicsOptions_MenuInit( void )
"90", "90",
NULL NULL
}; };
static const char *s_shadows[] =
{
"Low",
"High",
NULL
};
int y; int y;
// zero set all our globals // zero set all our globals
memset( &s_graphicsoptions, 0 ,sizeof(graphicsoptions_t) ); memset( &s_graphicsoptions, 0 ,sizeof(graphicsoptions_t) );
GraphicsOptions_GetResolutions(); //GraphicsOptions_GetResolutions();
GraphicsOptions_GetAspectRatios(); //GraphicsOptions_GetAspectRatios();
GraphicsOptions_Cache(); GraphicsOptions_Cache();
@ -1173,16 +1206,16 @@ void GraphicsOptions_MenuInit( void )
s_graphicsoptions.network.style = UI_RIGHT; s_graphicsoptions.network.style = UI_RIGHT;
s_graphicsoptions.network.color = color_red; s_graphicsoptions.network.color = color_red;
y = 272 - 7 * (BIGCHAR_HEIGHT + 2); y = 254 - 6 * (BIGCHAR_HEIGHT + 2);
s_graphicsoptions.list.generic.type = MTYPE_SPINCONTROL; // s_graphicsoptions.list.generic.type = MTYPE_SPINCONTROL;
s_graphicsoptions.list.generic.name = "Graphics Settings:"; // s_graphicsoptions.list.generic.name = "Graphics Settings:";
s_graphicsoptions.list.generic.flags = QMF_PULSEIFFOCUS|QMF_SMALLFONT; // s_graphicsoptions.list.generic.flags = QMF_PULSEIFFOCUS|QMF_SMALLFONT;
s_graphicsoptions.list.generic.x = 400; // s_graphicsoptions.list.generic.x = 400;
s_graphicsoptions.list.generic.y = y; // s_graphicsoptions.list.generic.y = y;
s_graphicsoptions.list.generic.callback = GraphicsOptions_Event; // s_graphicsoptions.list.generic.callback = GraphicsOptions_Event;
s_graphicsoptions.list.generic.id = ID_LIST; // s_graphicsoptions.list.generic.id = ID_LIST;
s_graphicsoptions.list.itemnames = s_graphics_options_names; // s_graphicsoptions.list.itemnames = s_graphics_options_names;
y += 2 * ( BIGCHAR_HEIGHT + 2 ); // y += 2 * ( BIGCHAR_HEIGHT + 2 );
// s_graphicsoptions.driver.generic.type = MTYPE_SPINCONTROL; // s_graphicsoptions.driver.generic.type = MTYPE_SPINCONTROL;
// s_graphicsoptions.driver.generic.name = "GL Driver:"; // s_graphicsoptions.driver.generic.name = "GL Driver:";
@ -1282,6 +1315,18 @@ void GraphicsOptions_MenuInit( void )
s_graphicsoptions.dynamiclights.generic.id = ID_DYNAMICLIGHTS; s_graphicsoptions.dynamiclights.generic.id = ID_DYNAMICLIGHTS;
y += BIGCHAR_HEIGHT+2; y += BIGCHAR_HEIGHT+2;
// references "cg_shadows"
s_graphicsoptions.shadows.generic.type = MTYPE_SPINCONTROL;
s_graphicsoptions.shadows.generic.name = "Shadow Detail:";
s_graphicsoptions.shadows.generic.flags = QMF_PULSEIFFOCUS|QMF_SMALLFONT;
s_graphicsoptions.shadows.generic.x = 400;
s_graphicsoptions.shadows.generic.y = y;
s_graphicsoptions.shadows.itemnames = s_shadows;
s_graphicsoptions.shadows.generic.callback = GraphicsOptions_Event;
s_graphicsoptions.shadows.generic.id = ID_SHADOWS;
s_graphicsoptions.shadows.numitems = NUM_SHADOWS;
y += BIGCHAR_HEIGHT+2;
// references/modifies "r_lodBias" & "subdivisions" // references/modifies "r_lodBias" & "subdivisions"
s_graphicsoptions.geometry.generic.type = MTYPE_SPINCONTROL; s_graphicsoptions.geometry.generic.type = MTYPE_SPINCONTROL;
s_graphicsoptions.geometry.generic.name = "Geometric Detail:"; s_graphicsoptions.geometry.generic.name = "Geometric Detail:";
@ -1360,7 +1405,7 @@ void GraphicsOptions_MenuInit( void )
Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.sound ); Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.sound );
Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.network ); Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.network );
Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.list ); // Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.list );
// Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.driver ); // Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.driver );
// Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.allow_extensions ); // Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.allow_extensions );
// Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.ratio ); // Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.ratio );
@ -1371,6 +1416,7 @@ void GraphicsOptions_MenuInit( void )
// Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.fs ); // Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.fs );
Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.lighting ); Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.lighting );
Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.dynamiclights ); Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.dynamiclights );
Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.shadows );
Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.geometry ); Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.geometry );
Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.tq ); Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.tq );
Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.texturebits ); Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.texturebits );

View file

@ -164,6 +164,19 @@ R_ComputeLOD
================= =================
*/ */
int R_ComputeLOD( trRefEntity_t *ent ) { int R_ComputeLOD( trRefEntity_t *ent ) {
//HACK: force specific LOD (for VR it fits better)
if (1)
{
//high -> 0, medium -> 2, low -> 4
int lod = r_lodbias->integer + r_lodbias->integer;
if (lod >= tr.currentModel->numLods)
lod = tr.currentModel->numLods - 1;
if (lod < 0)
lod = 0;
return lod;
}
float radius; float radius;
float flod, lodscale; float flod, lodscale;
float projectedRadius; float projectedRadius;

View file

@ -1107,7 +1107,7 @@ Responsible for doing a swapbuffers
void GLimp_EndFrame( void ) void GLimp_EndFrame( void )
{ {
#if 0 #if 0
// don't flip if drawing to front buffer //swap window is implemented in VR API, no need to do it here
if ( Q_stricmp( r_drawBuffer->string, "GL_FRONT" ) != 0 ) if ( Q_stricmp( r_drawBuffer->string, "GL_FRONT" ) != 0 )
{ {
SDL_GL_SwapWindow( SDL_window ); SDL_GL_SwapWindow( SDL_window );

View file

@ -166,11 +166,16 @@ Q_EXPORT intptr_t vmMain( int command, int arg0, int arg1, int arg2, int arg3, i
int ptr[2] = {arg1, arg2}; int ptr[2] = {arg1, arg2};
vr = (vr_clientinfo_t *) (*(long *) (ptr)); vr = (vr_clientinfo_t *) (*(long *) (ptr));
_UI_Init(arg0); _UI_Init(arg0);
vr->menuCursorX = &uiInfo.uiDC.cursorx;
vr->menuCursorY = &uiInfo.uiDC.cursory;
} }
return 0; return 0;
case UI_SHUTDOWN: case UI_SHUTDOWN: {
vr->menuCursorX = NULL;
vr->menuCursorY = NULL;
_UI_Shutdown(); _UI_Shutdown();
}
return 0; return 0;
case UI_KEY_EVENT: case UI_KEY_EVENT:
@ -3070,14 +3075,14 @@ static void UI_Update(const char *name) {
} }
} else if (Q_stricmp(name, "r_lodbias") == 0) { } else if (Q_stricmp(name, "r_lodbias") == 0) {
switch (val) { switch (val) {
case 0: case -1:
trap_Cvar_SetValue( "r_subdivisions", 4 ); trap_Cvar_SetValue( "r_subdivisions", 4 );
break; break;
case 1: case 1:
trap_Cvar_SetValue( "r_subdivisions", 12 ); trap_Cvar_SetValue( "r_subdivisions", 12 );
break; break;
case 2: case 2:
trap_Cvar_SetValue( "r_subdivisions", 20 ); trap_Cvar_SetValue( "r_subdivisions", 80 );
break; break;
} }
} else if (Q_stricmp(name, "ui_glCustom") == 0) { } else if (Q_stricmp(name, "ui_glCustom") == 0) {
@ -3161,6 +3166,98 @@ static void UI_Update(const char *name) {
} else { } else {
trap_Cvar_SetValue( "m_pitch", -0.022f ); trap_Cvar_SetValue( "m_pitch", -0.022f );
} }
} else if (Q_stricmp(name, "vr_controlSchema") == 0) {
qboolean uturn = trap_Cvar_VariableValue( "vr_uturn" ) != 0;
switch (val)
{
case 0: // Default schema
trap_Cvar_Set("vr_button_map_RTHUMBLEFT", "turnleft"); // turn left
trap_Cvar_Set("vr_button_map_RTHUMBRIGHT", "turnright"); // turn right
trap_Cvar_Set("vr_button_map_RTHUMBFORWARD", "weapnext"); // next weapon
if (uturn) {
trap_Cvar_Set("vr_button_map_RTHUMBBACK", "uturn"); // u-turn
} else {
trap_Cvar_Set("vr_button_map_RTHUMBBACK", "weapprev"); // previous weapon
}
trap_Cvar_Set("vr_button_map_PRIMARYGRIP", "+weapon_select"); // weapon selector
trap_Cvar_Set("vr_button_map_PRIMARYTHUMBSTICK", ""); // unmapped
trap_Cvar_Set("vr_button_map_RTHUMBFORWARD_ALT", ""); // unmapped
trap_Cvar_Set("vr_button_map_RTHUMBFORWARDRIGHT", ""); // unmapped
trap_Cvar_Set("vr_button_map_RTHUMBFORWARDRIGHT_ALT", ""); // unmapped
trap_Cvar_Set("vr_button_map_RTHUMBRIGHT_ALT", ""); // unmapped
trap_Cvar_Set("vr_button_map_RTHUMBBACKRIGHT", ""); // unmapped
trap_Cvar_Set("vr_button_map_RTHUMBBACKRIGHT_ALT", ""); // unmapped
trap_Cvar_Set("vr_button_map_RTHUMBBACK_ALT", ""); // unmapped
trap_Cvar_Set("vr_button_map_RTHUMBBACKLEFT", ""); // unmapped
trap_Cvar_Set("vr_button_map_RTHUMBBACKLEFT_ALT", ""); // unmapped
trap_Cvar_Set("vr_button_map_RTHUMBLEFT_ALT", ""); // unmapped
trap_Cvar_Set("vr_button_map_RTHUMBFORWARDLEFT", ""); // unmapped
trap_Cvar_Set("vr_button_map_RTHUMBFORWARDLEFT_ALT", ""); // unmapped
break;
default: // Now we have only two schemas
// All directions as weapon select (useful for HMD wheel)
trap_Cvar_Set("vr_button_map_RTHUMBFORWARD", "+weapon_select");
trap_Cvar_Set("vr_button_map_RTHUMBFORWARDRIGHT", "+weapon_select");
trap_Cvar_Set("vr_button_map_RTHUMBRIGHT", "+weapon_select");
trap_Cvar_Set("vr_button_map_RTHUMBBACKRIGHT", "+weapon_select");
trap_Cvar_Set("vr_button_map_RTHUMBBACK", "+weapon_select");
trap_Cvar_Set("vr_button_map_RTHUMBBACKLEFT", "+weapon_select");
trap_Cvar_Set("vr_button_map_RTHUMBLEFT", "+weapon_select");
trap_Cvar_Set("vr_button_map_RTHUMBFORWARDLEFT", "+weapon_select");
trap_Cvar_Set("vr_button_map_PRIMARYTHUMBSTICK", "+weapon_select");
trap_Cvar_Set("vr_button_map_PRIMARYGRIP", "+alt"); // switch to alt layout
trap_Cvar_Set("vr_button_map_RTHUMBLEFT_ALT", "turnleft"); // turn left
trap_Cvar_Set("vr_button_map_RTHUMBRIGHT_ALT", "turnright"); // turn right
trap_Cvar_Set("vr_button_map_RTHUMBFORWARD_ALT", "weapnext");
if (uturn) {
trap_Cvar_Set("vr_button_map_RTHUMBBACK_ALT", "uturn");
} else {
trap_Cvar_Set("vr_button_map_RTHUMBBACK_ALT", "weapprev");
}
trap_Cvar_Set("vr_button_map_RTHUMBFORWARDRIGHT_ALT", "blank"); // unmapped
trap_Cvar_Set("vr_button_map_RTHUMBBACKRIGHT_ALT", "blank"); // unmapped
trap_Cvar_Set("vr_button_map_RTHUMBBACKLEFT_ALT", "blank"); // unmapped
trap_Cvar_Set("vr_button_map_RTHUMBFORWARDLEFT_ALT", "blank"); // unmapped
break;
}
} else if (Q_stricmp(name, "vr_uturn") == 0) {
int controlSchema = (int)trap_Cvar_VariableValue( "vr_controlSchema" ) % 2;
if (val) {
if (controlSchema == 0) {
trap_Cvar_Set("vr_button_map_RTHUMBBACK", "uturn");
} else {
trap_Cvar_Set("vr_button_map_RTHUMBBACK_ALT", "uturn");
}
} else {
if (controlSchema == 0) {
trap_Cvar_Set("vr_button_map_RTHUMBBACK", "");
} else {
trap_Cvar_Set("vr_button_map_RTHUMBBACK_ALT", "");
}
}
} else if (Q_stricmp(name, "vr_goreLevel") == 0) {
switch (val) {
case 0:
trap_Cvar_SetValue( "com_blood", 0);
trap_Cvar_SetValue( "cg_gibs", 0);
trap_Cvar_SetValue( "cg_megagibs", 0);
break;
case 1:
trap_Cvar_SetValue( "com_blood", 1);
trap_Cvar_SetValue( "cg_gibs", 0);
trap_Cvar_SetValue( "cg_megagibs", 0);
break;
case 2:
trap_Cvar_SetValue( "com_blood", 1);
trap_Cvar_SetValue( "cg_gibs", 1);
trap_Cvar_SetValue( "cg_megagibs", 0);
break;
case 3:
trap_Cvar_SetValue( "com_blood", 1);
trap_Cvar_SetValue( "cg_gibs", 1);
trap_Cvar_SetValue( "cg_megagibs", 1);
break;
}
} }
} }
@ -5272,9 +5369,6 @@ void _UI_MouseEvent( int dx, int dy )
else if (uiInfo.uiDC.cursory > SCREEN_HEIGHT+16) else if (uiInfo.uiDC.cursory > SCREEN_HEIGHT+16)
uiInfo.uiDC.cursory = SCREEN_HEIGHT+16; uiInfo.uiDC.cursory = SCREEN_HEIGHT+16;
vr->menuCursorX = &uiInfo.uiDC.cursorx;
vr->menuCursorY = &uiInfo.uiDC.cursory;
if (Menu_Count() > 0) { if (Menu_Count() > 0) {
//menuDef_t *menu = Menu_GetFocused(); //menuDef_t *menu = Menu_GetFocused();
//Menu_HandleMouseMove(menu, uiInfo.uiDC.cursorx, uiInfo.uiDC.cursory); //Menu_HandleMouseMove(menu, uiInfo.uiDC.cursorx, uiInfo.uiDC.cursory);

View file

@ -40,6 +40,7 @@ cvar_t *vr_hapticIntensity = NULL;
cvar_t *vr_comfortVignette = NULL; cvar_t *vr_comfortVignette = NULL;
cvar_t *vr_weaponSelectorMode = NULL; cvar_t *vr_weaponSelectorMode = NULL;
cvar_t *vr_weaponSelectorWithHud = NULL; cvar_t *vr_weaponSelectorWithHud = NULL;
cvar_t *vr_goreLevel = NULL;
engine_t* VR_Init( ovrJava java ) engine_t* VR_Init( ovrJava java )
{ {
@ -82,6 +83,7 @@ void VR_InitCvars( void )
vr_comfortVignette = Cvar_Get ("vr_comfortVignette", "0.0", CVAR_ARCHIVE); vr_comfortVignette = Cvar_Get ("vr_comfortVignette", "0.0", CVAR_ARCHIVE);
vr_weaponSelectorMode = Cvar_Get ("vr_weaponSelectorMode", "0", CVAR_ARCHIVE); vr_weaponSelectorMode = Cvar_Get ("vr_weaponSelectorMode", "0", CVAR_ARCHIVE);
vr_weaponSelectorWithHud = Cvar_Get ("vr_weaponSelectorWithHud", "0", CVAR_ARCHIVE); vr_weaponSelectorWithHud = Cvar_Get ("vr_weaponSelectorWithHud", "0", CVAR_ARCHIVE);
vr_goreLevel = Cvar_Get ("vr_goreLevel", "2", CVAR_ARCHIVE);
// Values are: scale,right,up,forward,pitch,yaw,roll // Values are: scale,right,up,forward,pitch,yaw,roll
// VALUES PROVIDED BY SkillFur - Thank-you! // VALUES PROVIDED BY SkillFur - Thank-you!

View file

@ -42,7 +42,7 @@ itemDef {
type ITEM_TYPE_YESNO type ITEM_TYPE_YESNO
text "Autoswitch Weapons:" text "Autoswitch Weapons:"
cvar "cg_autoswitch" cvar "cg_autoswitch"
rect 99 125 256 20 rect 99 75 256 20
textalign ITEM_ALIGN_RIGHT textalign ITEM_ALIGN_RIGHT
textalignx 128 textalignx 128
textaligny 20 textaligny 20
@ -57,7 +57,7 @@ itemDef {
type ITEM_TYPE_YESNO type ITEM_TYPE_YESNO
text "Railgun Scope:" text "Railgun Scope:"
cvar "vr_weaponScope" cvar "vr_weaponScope"
rect 99 150 256 20 rect 99 100 256 20
textalign ITEM_ALIGN_RIGHT textalign ITEM_ALIGN_RIGHT
textalignx 128 textalignx 128
textaligny 20 textaligny 20
@ -72,7 +72,7 @@ itemDef {
type ITEM_TYPE_YESNO type ITEM_TYPE_YESNO
text "Two-Handed Weapons:" text "Two-Handed Weapons:"
cvar "vr_twoHandedWeapons" cvar "vr_twoHandedWeapons"
rect 99 175 256 20 rect 99 125 256 20
textalign ITEM_ALIGN_RIGHT textalign ITEM_ALIGN_RIGHT
textalignx 128 textalignx 128
textaligny 20 textaligny 20
@ -88,7 +88,7 @@ itemDef {
text "Direction Mode:" text "Direction Mode:"
cvar "vr_directionMode" cvar "vr_directionMode"
cvarFloatList { "HMD (Default)" 0 "Off-hand Controller" 1 } cvarFloatList { "HMD (Default)" 0 "Off-hand Controller" 1 }
rect 99 200 256 20 rect 99 150 256 20
textalign ITEM_ALIGN_RIGHT textalign ITEM_ALIGN_RIGHT
textalignx 128 textalignx 128
textaligny 20 textaligny 20
@ -97,6 +97,22 @@ itemDef {
visible 1 visible 1
} }
itemDef {
name controls3
group grpControls3
type ITEM_TYPE_YESNO
text "Quick U-Turn:"
cvar "vr_uturn"
rect 99 175 256 20
textalign ITEM_ALIGN_RIGHT
textalignx 128
textaligny 20
textscale .333
forecolor 1 1 1 1
visible 1
action { uiScript update "vr_uturn" }
}
itemDef { itemDef {
name controls3 name controls3
group grpControls3 group grpControls3
@ -104,7 +120,7 @@ itemDef {
text "Turning Mode:" text "Turning Mode:"
cvar "vr_snapturn" cvar "vr_snapturn"
cvarFloatList { "Smooth Turning" 0 "45 Degrees" 45 "90 Degrees" 90 } cvarFloatList { "Smooth Turning" 0 "45 Degrees" 45 "90 Degrees" 90 }
rect 99 225 256 20 rect 99 200 256 20
textalign ITEM_ALIGN_RIGHT textalign ITEM_ALIGN_RIGHT
textalignx 128 textalignx 128
textaligny 20 textaligny 20
@ -119,7 +135,7 @@ itemDef {
type ITEM_TYPE_YESNO type ITEM_TYPE_YESNO
text "Right-Handed:" text "Right-Handed:"
cvar "vr_righthanded" cvar "vr_righthanded"
rect 99 250 256 20 rect 99 225 256 20
textalign ITEM_ALIGN_RIGHT textalign ITEM_ALIGN_RIGHT
textalignx 128 textalignx 128
textaligny 20 textaligny 20
@ -134,7 +150,7 @@ itemDef {
type ITEM_TYPE_YESNO type ITEM_TYPE_YESNO
text "Switch Thumbsticks:" text "Switch Thumbsticks:"
cvar "vr_switchThumbsticks" cvar "vr_switchThumbsticks"
rect 99 275 256 20 rect 99 250 256 20
textalign ITEM_ALIGN_RIGHT textalign ITEM_ALIGN_RIGHT
textalignx 128 textalignx 128
textaligny 20 textaligny 20
@ -149,7 +165,7 @@ itemDef {
type ITEM_TYPE_SLIDER type ITEM_TYPE_SLIDER
text "Weapon Pitch:" text "Weapon Pitch:"
cvarfloat "vr_weaponPitch" 5 -25 5 cvarfloat "vr_weaponPitch" 5 -25 5
rect 99 300 256 20 rect 99 275 256 20
textalign ITEM_ALIGN_RIGHT textalign ITEM_ALIGN_RIGHT
textalignx 128 textalignx 128
textaligny 20 textaligny 20
@ -165,7 +181,7 @@ itemDef {
text "Weapon Wheel Mode:" text "Weapon Wheel Mode:"
cvar "vr_weaponSelectorMode" cvar "vr_weaponSelectorMode"
cvarFloatList { "Controller Based" 0 "HMD/Thumbstick Based" 1 } cvarFloatList { "Controller Based" 0 "HMD/Thumbstick Based" 1 }
rect 99 325 256 20 rect 99 300 256 20
textalign ITEM_ALIGN_RIGHT textalign ITEM_ALIGN_RIGHT
textalignx 128 textalignx 128
textaligny 20 textaligny 20
@ -174,6 +190,22 @@ itemDef {
visible 1 visible 1
} }
itemDef {
name controls3
group grpControls3
type ITEM_TYPE_MULTI
text "Control Schema:"
cvar "vr_controlSchema"
cvarFloatList { "Weapon Wheel on Grip" 0 "Weapon Wheel on Thumbstick" 1 }
rect 99 325 256 20
textalign ITEM_ALIGN_RIGHT
textalignx 100
textaligny 20
textscale .333
forecolor 1 1 1 1
visible 1
action { uiScript update "vr_controlSchema" }
}
itemDef { itemDef {
name fadebox name fadebox

View file

@ -180,7 +180,7 @@ itemDef {
type ITEM_TYPE_YESNO type ITEM_TYPE_YESNO
text "Railgun Scope:" text "Railgun Scope:"
cvar "vr_weaponScope" cvar "vr_weaponScope"
rect 30 40 200 20 rect 30 38 200 20
textalign ITEM_ALIGN_RIGHT textalign ITEM_ALIGN_RIGHT
textalignx 143 textalignx 143
textaligny 17 textaligny 17
@ -194,7 +194,7 @@ itemDef {
type ITEM_TYPE_YESNO type ITEM_TYPE_YESNO
text "Two-Handed Weapons:" text "Two-Handed Weapons:"
cvar "vr_twoHandedWeapons" cvar "vr_twoHandedWeapons"
rect 30 60 200 20 rect 30 56 200 20
textalign ITEM_ALIGN_RIGHT textalign ITEM_ALIGN_RIGHT
textalignx 143 textalignx 143
textaligny 17 textaligny 17
@ -210,7 +210,7 @@ itemDef {
text "Direction Mode:" text "Direction Mode:"
cvar "vr_directionMode" cvar "vr_directionMode"
cvarFloatList { "HMD (Default)" 0 "Off-hand Controller" 1 } cvarFloatList { "HMD (Default)" 0 "Off-hand Controller" 1 }
rect 30 80 200 20 rect 30 74 200 20
textalign ITEM_ALIGN_RIGHT textalign ITEM_ALIGN_RIGHT
textalignx 143 textalignx 143
textaligny 17 textaligny 17
@ -222,10 +222,11 @@ itemDef {
itemDef { itemDef {
name controls name controls
group grpControls group grpControls
type ITEM_TYPE_MULTI
text "Turning Mode:" text "Turning Mode:"
cvar "vr_snapturn" cvar "vr_snapturn"
cvarFloatList { "Smooth Turning" 0 "45 Degrees" 45 "90 Degrees" 90 } cvarFloatList { "Smooth Turning" 0 "45 Degrees" 45 "90 Degrees" 90 }
rect 30 100 200 20 rect 30 92 200 20
textalign ITEM_ALIGN_RIGHT textalign ITEM_ALIGN_RIGHT
textalignx 143 textalignx 143
textaligny 17 textaligny 17
@ -234,13 +235,29 @@ itemDef {
visible 1 visible 1
} }
itemDef {
name controls
group grpControls
type ITEM_TYPE_YESNO
text "Quick U-Turn:"
cvar "vr_uturn"
rect 30 110 200 20
textalign ITEM_ALIGN_RIGHT
textalignx 143
textaligny 17
textscale .25
forecolor 1 1 1 1
visible 1
action { uiScript update "vr_uturn" }
}
itemDef { itemDef {
name controls name controls
group grpControls group grpControls
type ITEM_TYPE_YESNO type ITEM_TYPE_YESNO
text "Right-Handed:" text "Right-Handed:"
cvar "vr_righthanded" cvar "vr_righthanded"
rect 30 120 200 20 rect 30 128 200 20
textalign ITEM_ALIGN_RIGHT textalign ITEM_ALIGN_RIGHT
textalignx 143 textalignx 143
textaligny 17 textaligny 17
@ -255,7 +272,7 @@ itemDef {
type ITEM_TYPE_YESNO type ITEM_TYPE_YESNO
text "Switch Thumbsticks:" text "Switch Thumbsticks:"
cvar "vr_switchThumbsticks" cvar "vr_switchThumbsticks"
rect 30 140 200 20 rect 30 146 200 20
textalign ITEM_ALIGN_RIGHT textalign ITEM_ALIGN_RIGHT
textalignx 143 textalignx 143
textaligny 17 textaligny 17
@ -270,7 +287,7 @@ itemDef {
type ITEM_TYPE_SLIDER type ITEM_TYPE_SLIDER
text "Weapon Pitch:" text "Weapon Pitch:"
cvarfloat "vr_weaponPitch" 5 -25 5 cvarfloat "vr_weaponPitch" 5 -25 5
rect 30 160 200 20 rect 30 164 200 20
textalign ITEM_ALIGN_RIGHT textalign ITEM_ALIGN_RIGHT
textalignx 143 textalignx 143
textaligny 17 textaligny 17
@ -286,7 +303,7 @@ itemDef {
text "Weapon Wheel Mode:" text "Weapon Wheel Mode:"
cvar "vr_weaponSelectorMode" cvar "vr_weaponSelectorMode"
cvarFloatList { "Controller Based" 0 "HMD/Thumbstick Based" 1 } cvarFloatList { "Controller Based" 0 "HMD/Thumbstick Based" 1 }
rect 30 180 200 20 rect 30 182 200 20
textalign ITEM_ALIGN_RIGHT textalign ITEM_ALIGN_RIGHT
textalignx 143 textalignx 143
textaligny 17 textaligny 17
@ -295,12 +312,29 @@ itemDef {
visible 1 visible 1
} }
itemDef {
name controls
group grpControls
type ITEM_TYPE_MULTI
text "Control Schema:"
cvar "vr_controlSchema"
cvarFloatList { "Weapon Wheel on Grip" 0 "Weapon Wheel on Thumbstick" 1 }
rect 30 200 200 20
textalign ITEM_ALIGN_RIGHT
textalignx 143
textaligny 17
textscale .25
forecolor 1 1 1 1
visible 1
action { uiScript update "vr_controlSchema" }
}
itemDef { itemDef {
name controls name controls
group grpControls group grpControls
style 1 style 1
text "Comfort Options" text "Comfort Options"
rect 100 215 100 20 rect 100 231 100 20
textalign ITEM_ALIGN_RIGHT textalign ITEM_ALIGN_RIGHT
textalignx 143 textalignx 143
textaligny 17 textaligny 17
@ -315,7 +349,7 @@ itemDef {
type ITEM_TYPE_SLIDER type ITEM_TYPE_SLIDER
text "Comfort Vignette:" text "Comfort Vignette:"
cvarfloat "vr_comfortVignette" 0.2 0 1 cvarfloat "vr_comfortVignette" 0.2 0 1
rect 30 240 200 20 rect 30 251 200 20
textalign ITEM_ALIGN_RIGHT textalign ITEM_ALIGN_RIGHT
textalignx 143 textalignx 143
textaligny 17 textaligny 17
@ -329,7 +363,7 @@ itemDef {
type ITEM_TYPE_SLIDER type ITEM_TYPE_SLIDER
text "Height Adjust:" text "Height Adjust:"
cvarfloat "vr_heightAdjust" 0.2 0 1 cvarfloat "vr_heightAdjust" 0.2 0 1
rect 30 260 200 20 rect 30 271 200 20
textalign ITEM_ALIGN_RIGHT textalign ITEM_ALIGN_RIGHT
textalignx 143 textalignx 143
textaligny 17 textaligny 17
@ -343,7 +377,7 @@ itemDef {
type ITEM_TYPE_YESNO type ITEM_TYPE_YESNO
text "Roll When Hit:" text "Roll When Hit:"
cvar "vr_rollWhenHit" cvar "vr_rollWhenHit"
rect 30 280 200 20 rect 30 291 200 20
textalign ITEM_ALIGN_RIGHT textalign ITEM_ALIGN_RIGHT
textalignx 143 textalignx 143
textaligny 17 textaligny 17
@ -357,7 +391,7 @@ itemDef {
type ITEM_TYPE_SLIDER type ITEM_TYPE_SLIDER
text "Haptic Intensity:" text "Haptic Intensity:"
cvarfloat "vr_hapticIntensity" 0.2 0 1 cvarfloat "vr_hapticIntensity" 0.2 0 1
rect 30 300 200 20 rect 30 311 200 20
textalign ITEM_ALIGN_RIGHT textalign ITEM_ALIGN_RIGHT
textalignx 143 textalignx 143
textaligny 17 textaligny 17
@ -372,7 +406,7 @@ itemDef {
text "HUD Depth:" text "HUD Depth:"
cvar "vr_hudDepth" cvar "vr_hudDepth"
cvarFloatList { "Very Close" 0 "Close" 1 "Middle" 2 "Further" 3 "Far" 4 "Distant" 5 } cvarFloatList { "Very Close" 0 "Close" 1 "Middle" 2 "Further" 3 "Far" 4 "Distant" 5 }
rect 30 320 200 20 rect 30 331 200 20
textalign ITEM_ALIGN_RIGHT textalign ITEM_ALIGN_RIGHT
textalignx 143 textalignx 143
textaligny 17 textaligny 17
@ -386,7 +420,7 @@ itemDef {
type ITEM_TYPE_SLIDER type ITEM_TYPE_SLIDER
text "HUD Y Offset:" text "HUD Y Offset:"
cvarfloat "vr_hudYOffset" 20 -200 200 cvarfloat "vr_hudYOffset" 20 -200 200
rect 30 340 200 20 rect 30 351 200 20
textalign ITEM_ALIGN_RIGHT textalign ITEM_ALIGN_RIGHT
textalignx 143 textalignx 143
textaligny 17 textaligny 17

View file

@ -412,51 +412,20 @@ itemDef {
itemDef { itemDef {
name options name options
group grpOptions group grpOptions
type ITEM_TYPE_YESNO text "Gore:"
text "Blood:" type ITEM_TYPE_MULTI
cvar "com_blood" cvar "vr_goreLevel"
rect 50 309 200 20 cvarFloatList { "None" 0 "Blood Only" 1 "Blood & Gibs (Default)" 2 "Extra Gore (Performance Hit)" 3 }
rect 50 329 200 20
textalign ITEM_ALIGN_RIGHT textalign ITEM_ALIGN_RIGHT
textalignx 143 textalignx 80
textaligny 17 textaligny 17
textscale .25 textscale .25
forecolor 1 1 1 1 forecolor 1 1 1 1
visible 1 visible 1
action { uiScript update "vr_goreLevel" }
} }
itemDef {
name options
group grpOptions
type ITEM_TYPE_YESNO
text "Gibs:"
cvar "cg_gibs"
rect 50 326 200 20
textalign ITEM_ALIGN_RIGHT
textalignx 143
textaligny 17
textscale .25
forecolor 1 1 1 1
visible 1
action { exec "loadhud" }
}
itemDef {
name options
group grpOptions
type ITEM_TYPE_YESNO
text "Extra Gibs (Performance Hit):"
cvar "cg_megagibs"
rect 50 343 200 20
textalign ITEM_ALIGN_RIGHT
textalignx 143
textaligny 17
textscale .25
forecolor 1 1 1 1
visible 1
}
} }

View file

@ -0,0 +1,295 @@
#include "ui/menudef.h"
{
\\ SETUP MENU \\
menuDef {
name "ingame_player"
visible 0
fullscreen 0
outOfBoundsClick // this closes the window if it gets a click out of the rectangle
rect 125 30 290 170
focusColor 1 .75 0 1
style 1
border 1
onOpen { uiScript update "ui_GetName" }
onClose { uiScript update "ui_SetName" }
itemDef {
name window
rect 10 15 270 155
style 1
backcolor 0 .1 0 1
visible 1
decoration
}
// FRAME //
itemDef {
name window
rect 0 10 64 64
style 3
background "ui/assets/ingameleftcorner.tga"
visible 1
decoration
}
itemDef {
name window
rect 64 10 64 8
style 3
background "ui/assets/ingametop.tga"
visible 1
decoration
}
itemDef {
name window
rect 168 10 64 8
style 3
background "ui/assets/ingametop.tga"
visible 1
decoration
}
itemDef {
name window
rect 226 10 64 64
style 3
background "ui/assets/ingamerightcorner.tga"
visible 1
decoration
}
itemDef {
name window
rect 104 0 64 16
style 3
background "ui/assets/ingameconnection.tga"
visible 1
decoration
}
itemDef {
name window
rect 0 108 64 64
style 3
background "ui/assets/ingameleftcornerb.tga"
visible 1
decoration
}
itemDef {
name window
rect 226 108 64 64
style 3
background "ui/assets/ingamerightcornerb.tga"
visible 1
decoration
}
itemDef {
name window
rect 0 64 16 64
style 3
background "ui/assets/ingameleft.tga"
visible 1
decoration
}
itemDef {
name window
rect 274 64 16 64
style 3
background "ui/assets/ingameright.tga"
visible 1
decoration
}
itemDef {
name window
rect 64 164 64 8
style 3
background "ui/assets/ingamebottom.tga"
visible 1
decoration
}
itemDef {
name window
rect 128 164 98 8
style 3
background "ui/assets/ingamebottom.tga"
visible 1
decoration
}
itemDef {
name namefield
group "playersettinggroup"
type ITEM_TYPE_EDITFIELD
style 0
text "Name:"
cvar "ui_Name"
maxchars 26
rect 20 10 256 20
textalign ITEM_ALIGN_LEFT
textalignx 10
textaligny 18
textscale .23
outlinecolor 1 .5 .5 .5
backcolor 0 0 0 0
forecolor 1 1 1 1
border 0
bordercolor 0 0 0 0
visible 1
}
itemDef {
name other
group "playersettinggroup"
style 1
text "To change player name use the companion app."
rect 20 20 215 32
textalign ITEM_ALIGN_LEFT
textalignx 10
textaligny 21
textscale .2
forecolor .4 .4 .65 1
visible 1
decoration
}
itemDef {
name handicapfield
group "playersettinggroup"
style 0
text "Handicap:"
ownerdraw UI_HANDICAP
rect 20 40 256 20
textalign ITEM_ALIGN_LEFT
textalignx 10
textaligny 18
textscale .23
outlinecolor 1 .5 .5 .5
backcolor 0 0 0 0
forecolor 1 1 1 1
border 0
bordercolor 0 0 0 0
visible 1
}
itemDef {
name effectentry
group "playersettinggroup"
text "Effect:"
type 1
style 0
rect 20 58 256 20
textalign ITEM_ALIGN_LEFT
textalignx 10
textaligny 18
textscale .23
outlinecolor 1 .5 .5 .5
backcolor 0 0 0 0
forecolor 1 1 1 1
border 0
bordercolor 0 0 0 0
visible 1
decoration
mouseEnterText { setitemcolor effectentry forecolor 1 .75 0 1 ; setfocus effectfield ; show message_effect }
mouseExitText { setitemcolor playersettinggroup forecolor 1 1 1 1 ; hide message_effect }
}
itemDef {
name effectfield
group "playersettinggroup"
style 0
ownerdraw UI_EFFECTS
rect 20 58 256 20
textalign ITEM_ALIGN_LEFT
textalignx 50
textaligny 25
outlinecolor 1 .5 .5 .5
backcolor 0 0 0 0
forecolor 1 1 1 1
border 0
bordercolor 0 0 0 0
visible 1
}
itemDef {
name effectfield
group "playersettinggroup"
type ITEM_TYPE_SLIDER
text "1st-Person Body Scale:"
cvarfloat "cg_firstPersonBodyScale" 0.2 0 1
rect 20 80 256 20
textstyle 6
textalign ITEM_ALIGN_LEFT
textalignx 10
textaligny 16
textscale .23
outlinecolor 1 .5 .5 .5
backcolor 0 0 0 0
forecolor 1 1 1 1
border 0
bordercolor 0 0 0 0
visible 1
}
itemDef {
name headlist
rect 15 100 260 50
type ITEM_TYPE_LISTBOX
style WINDOW_STYLE_FILLED
elementwidth 32
elementheight 32
elementtype LISTBOX_IMAGE
feeder FEEDER_HEADS
horizontalscroll
backcolor 0 0 0 1
border 1
bordercolor .5 .5 .5 1
forecolor 1 1 1 1
visible 1
cvarTest "g_gametype"
showCvar { "3" ; "4" ; "5" ; "6" ; "7" ; "8" }
mouseenter { setitemcolor headlist bordercolor 1 0 0 1 }
mouseexit { setitemcolor headlist bordercolor .5 .5 .5 1 }
}
itemDef {
name headlist
rect 15 100 260 50
type ITEM_TYPE_LISTBOX
style WINDOW_STYLE_FILLED
elementwidth 32
elementheight 32
elementtype LISTBOX_IMAGE
feeder FEEDER_Q3HEADS
horizontalscroll
backcolor 0 0 0 1
border 1
bordercolor .5 .5 .5 1
forecolor 1 1 1 1
visible 1
cvarTest "g_gametype"
showCvar { "0" ; "1" }
mouseenter { setitemcolor headlist bordercolor 1 0 0 1 }
mouseexit { setitemcolor headlist bordercolor .5 .5 .5 1 }
}
}
}

View file

@ -178,22 +178,22 @@ itemDef {
mouseExit { setitemcolor ctr_graphics backcolor .37 .1 .1 1 } mouseExit { setitemcolor ctr_graphics backcolor .37 .1 .1 1 }
} }
itemDef { // itemDef {
name graphics // name graphics
group grpSystem // group grpSystem
type ITEM_TYPE_MULTI // type ITEM_TYPE_MULTI
text "Quality:" // text "Quality:"
cvar "ui_glCustom" // cvar "ui_glCustom"
cvarFloatList { "High Quality" 0 "Normal" 1 "Fast" 2 "Fastest" 3 "Custom" 4 } // cvarFloatList { "High Quality" 0 "Normal" 1 "Fast" 2 "Fastest" 3 "Custom" 4 }
rect 0 50 256 20 // rect 0 50 256 20
textalign ITEM_ALIGN_RIGHT // textalign ITEM_ALIGN_RIGHT
textalignx 133 // textalignx 133
textaligny 17 // textaligny 17
textscale .25 // textscale .25
forecolor 1 1 1 1 // forecolor 1 1 1 1
visible 0 // visible 0
action { uiScript update "ui_glCustom" } // action { uiScript update "ui_glCustom" }
} // }
itemDef { itemDef {
name graphics name graphics
@ -202,14 +202,13 @@ itemDef {
text "Refresh Rate:" text "Refresh Rate:"
cvar "vr_refreshrate" cvar "vr_refreshrate"
cvarFloatList { "60" 60 "72 (Recommended)" 72 "80" 80 "90" 90 } cvarFloatList { "60" 60 "72 (Recommended)" 72 "80" 80 "90" 90 }
rect 0 70 306 20 rect 0 50 306 20
textalign ITEM_ALIGN_RIGHT textalign ITEM_ALIGN_RIGHT
textalignx 133 textalignx 133
textaligny 17 textaligny 17
textscale .25 textscale .25
forecolor 1 1 1 1 forecolor 1 1 1 1
visible 0 visible 0
decoration
} }
itemDef { itemDef {
@ -218,7 +217,7 @@ itemDef {
type ITEM_TYPE_YESNO type ITEM_TYPE_YESNO
text "Sync Every Frame:" text "Sync Every Frame:"
cvar "r_finish" cvar "r_finish"
rect 0 90 256 20 rect 0 70 256 20
textalign ITEM_ALIGN_RIGHT textalign ITEM_ALIGN_RIGHT
textalignx 133 textalignx 133
textaligny 17 textaligny 17
@ -235,7 +234,7 @@ itemDef {
text "Color Depth:" text "Color Depth:"
cvar "r_colorbits" cvar "r_colorbits"
cvarFloatList { "Desktop Default" 0 "16-bit" 16 "32-bit" 32 } cvarFloatList { "Desktop Default" 0 "16-bit" 16 "32-bit" 32 }
rect 0 110 256 20 rect 0 90 256 20
textalign ITEM_ALIGN_RIGHT textalign ITEM_ALIGN_RIGHT
textalignx 133 textalignx 133
textaligny 17 textaligny 17
@ -252,7 +251,7 @@ itemDef {
text "Lighting:" text "Lighting:"
cvar "r_vertexlight" cvar "r_vertexlight"
cvarFloatList { "Light Map (high)" 0 "Vertex (low)" 1 } cvarFloatList { "Light Map (high)" 0 "Vertex (low)" 1 }
rect 0 130 256 20 rect 0 110 256 20
textalign ITEM_ALIGN_RIGHT textalign ITEM_ALIGN_RIGHT
textalignx 133 textalignx 133
textaligny 17 textaligny 17
@ -268,7 +267,23 @@ itemDef {
type ITEM_TYPE_YESNO type ITEM_TYPE_YESNO
text "Dynamic Lights:" text "Dynamic Lights:"
cvar "r_dynamiclight" cvar "r_dynamiclight"
rect 0 150 256 20 rect 0 130 256 20
textalign ITEM_ALIGN_RIGHT
textalignx 133
textaligny 17
textscale .25
forecolor 1 1 1 1
visible 0
}
itemDef {
name graphics
group grpSystem
type ITEM_TYPE_MULTI
text "Shadow Detail:"
cvar "cg_shadows"
cvarFloatList { "Low" 1 "High" 3 }
rect 0 150 306 20
textalign ITEM_ALIGN_RIGHT textalign ITEM_ALIGN_RIGHT
textalignx 133 textalignx 133
textaligny 17 textaligny 17
@ -283,7 +298,7 @@ itemDef {
type ITEM_TYPE_MULTI type ITEM_TYPE_MULTI
text "Geometric Detail:" text "Geometric Detail:"
cvar "r_lodbias" cvar "r_lodbias"
cvarFloatList { "High" 0 "Medium" 1 "Low" 2 } cvarFloatList { "High" -1 "Medium" 1 "Low" 2 }
rect 0 170 256 20 rect 0 170 256 20
textalign ITEM_ALIGN_RIGHT textalign ITEM_ALIGN_RIGHT
textalignx 133 textalignx 133

View file

@ -293,49 +293,20 @@ itemDef {
itemDef { itemDef {
name options name options
group grpOptions group grpOptions
type ITEM_TYPE_YESNO text "Gore:"
text "Blood:" type ITEM_TYPE_MULTI
cvar "com_blood" cvar "vr_goreLevel"
rect 99 365 256 20 cvarFloatList { "None" 0 "Blood Only" 1 "Blood & Gibs (Default)" 2 "Extra Gore (Performance Hit)" 3 }
rect 99 375 256 20
textalign ITEM_ALIGN_RIGHT textalign ITEM_ALIGN_RIGHT
textalignx 128 textalignx 70
textaligny 20 textaligny 20
textscale .3 textscale .3
forecolor 1 1 1 1 forecolor 1 1 1 1
visible 1 visible 1
action { uiScript update "vr_goreLevel" }
} }
itemDef {
name options
group grpOptions
type ITEM_TYPE_YESNO
text "Gibs:"
cvar "cg_gibs"
rect 99 385 256 20
textalign ITEM_ALIGN_RIGHT
textalignx 128
textaligny 20
textscale .3
forecolor 1 1 1 1
visible 1
}
itemDef {
name options
group grpOptions
type ITEM_TYPE_YESNO
text "Extra Gibs (Performance Hit):"
cvar "cg_megagibs"
rect 99 405 256 20
textalign ITEM_ALIGN_RIGHT
textalignx 128
textaligny 20
textscale .3
forecolor 1 1 1 1
visible 1
}
itemDef { itemDef {
name fadebox name fadebox
style WINDOW_STYLE_FILLED style WINDOW_STYLE_FILLED

View file

@ -0,0 +1,644 @@
#include "ui/menudef.h"
{
\\ PLATER SELECTION MENU \\
menuDef {
name "player_menu"
visible 0
fullscreen 1
rect 0 0 640 480
background "menuback_a"
style 1
focusColor 1 .75 0 1
onOpen { play "sound/misc/kcswish.wav" ;
playlooped "music/fla_mp03.wav" ;
setitemcolor fadebox backcolor 0 0 0 1 ;
fadeout fadebox ;
uiScript update "ui_GetName" ;
transition menuback_g 0 0 640 480 195 120 255 202 20 10 ;
transition clancinematic 107 82 426 316 238 153 170 133 20 10 ;
hide back_alt ;
show back ;
hide grpmessage }
onClose { uiScript update "ui_SetName" }
onEsc { close player_menu ; open main }
itemDef {
name gametypebar
style 2
rect 0 5 640 40
textscale 0.4
textalign 0 // center
textalignx 60 // x alignment point for text
// use it to offset left/right text from the edge
// or to center the text on a different point
textaligny 21
style 2
border 4
bordercolor 0.5 0.5 0.5 0.5
bordersize 2
backcolor 0 0 .75 .5
visible 1
decoration
mouseEnter { setcolor backcolor .75 0 0 .5 }
mouseExit { setcolor backcolor 0 0 .75 .5 }
}
itemDef {
name arenatype
type ITEM_TYPE_MULTI
cvar "ui_q3model"
cvarFloatList { "Team Arena" 0 "Quake III" 1 }
text "Model Type:"
textstyle 6
rect 0 10 320 31
textalign ITEM_ALIGN_LEFT
textalignx 20
textaligny 26
textscale .35
forecolor 1 1 1 1
visible 1
mouseEnter { show message_type }
mouseExit { hide message_type }
action { play "sound/misc/kcaction.wav" }
}
itemDef {
name quakeimage
style WINDOW_STYLE_SHADER
group grpquaketype
cvarTest "ui_q3model"
showCVar { "1" }
background "ui/assets/playerpatriot.tga"
rect 60 24 128 256
forecolor .25 .25 .25 1
decoration
}
itemDef {
name quakeimage
group grpquaketype
cvarTest "ui_q3model"
showCVar { "1" }
style WINDOW_STYLE_SHADER
background "ui/assets/playerpi.tga"
rect 100 24 128 256
visible 1
decoration
}
itemDef {
name quakeimage
group grpquaketype
cvarTest "ui_q3model"
showCVar { "1" }
style WINDOW_STYLE_SHADER
background "ui/assets/playerklesk.tga"
rect 440 24 128 256
forecolor .5 .5 .5 1
visible 1
decoration
}
itemDef {
name quakeimage
group grpquaketype
cvarTest "ui_q3model"
showCVar { "1" }
style WINDOW_STYLE_SHADER
background "ui/assets/playerbiker.tga"
rect 384 24 128 256
visible 1
decoration
}
itemDef {
name clanlogo1
style WINDOW_STYLE_SHADER
group grparenatype
cvarTest "ui_q3model"
showCVar { "0" }
background "ui/assets/pagans.tga"
rect 0 150 128 128
forecolor .5 .5 .5 .25
visible 1
decoration
}
itemDef {
name clanlogo1
group grparenatype
cvarTest "ui_q3model"
showCVar { "0" }
style WINDOW_STYLE_SHADER
background "ui/assets/crusaders.tga"
rect 128 150 128 128
forecolor .5 .5 .5 .25
visible 1
decoration
}
itemDef {
name clanlogo1
group grparenatype
cvarTest "ui_q3model"
showCVar { "0" }
style WINDOW_STYLE_SHADER
background "ui/assets/stroggs.tga"
rect 384 150 128 128
forecolor .5 .5 .5 .25
visible 1
decoration
}
itemDef {
name clanlogo1
group grparenatype
cvarTest "ui_q3model"
showCVar { "0" }
style WINDOW_STYLE_SHADER
background "ui/assets/intruders.tga"
rect 512 150 128 128
forecolor .5 .5 .5 .25
visible 1
decoration
}
itemDef {
name window
style WINDOW_STYLE_FILLED
rect 238 153 170 133
forecolor 0 0 0 1
backcolor 0 0 0 1
visible 1
decoration
}
itemDef {
name playerbar
style 2
rect 0 130 640 170
backcolor 0 0 .75 0
forecolor 1 1 1 1
border 4
bordercolor 0.5 0.5 0.5 .75
bordersize 2
visible 1
decoration
}
itemDef {
name window
rect 10 50 620 60
style WINDOW_STYLE_EMPTY
border 1
bordercolor .5 .5 .5 .5
forecolor 1 1 1 1
backcolor 0 0 0 0
visible 1
decoration
}
itemDef {
name window
rect 10 112 205 216
style WINDOW_STYLE_EMPTY
border 1
bordercolor .5 .5 .5 .5
forecolor 1 1 1 1
backcolor 0 0 0 0
visible 1
decoration
}
itemDef {
name window
rect 217 112 205 216
style WINDOW_STYLE_EMPTY
border 1
bordercolor .5 .5 .5 .5
forecolor 1 1 1 1
backcolor 0 0 0 0
visible 1
decoration
}
itemDef {
name window
rect 424 112 206 216
style WINDOW_STYLE_EMPTY
border 1
bordercolor .5 .5 .5 .5
forecolor 1 1 1 1
backcolor 0 0 0 0
visible 1
decoration
}
itemDef {
name modelselection
ownerdraw UI_PLAYERMODEL
rect 424 80 260 260
style 1
decoration
visible 1
}
itemDef {
name namefield
group "playersettinggroup"
type ITEM_TYPE_EDITFIELD
style 0
text "Name:"
cvar "ui_Name"
textstyle 6
maxChars 32
rect 0 60 215 32
textalign ITEM_ALIGN_LEFT
textalignx 20
textaligny 21
textscale .333
outlinecolor 1 .5 .5 .5
backcolor 0 0 0 0
forecolor 1 1 1 1
border 0
bordercolor 0 0 0 0
visible 1
// mouseEnter { show message_name }
// mouseExit { hide message_name }
}
itemDef {
name other
group grpSystem
style 1
text "To change player name use the companion app."
rect 0 80 215 32
textalign ITEM_ALIGN_LEFT
textalignx 20
textaligny 21
textscale .25
forecolor .4 .4 .65 1
visible 1
decoration
}
itemDef {
name handicapfield
group "playersettinggroup"
style 0
text "Handicap:"
ownerdraw UI_HANDICAP
textstyle 6
rect 0 175 215 32
textalign ITEM_ALIGN_LEFT
textalignx 20
textaligny 21
textscale .333
outlinecolor 1 .5 .5 .5
backcolor 0 0 0 0
forecolor 1 1 1 1
border 0
bordercolor 0 0 0 0
visible 1
mouseEnter { show message_handicap }
mouseExit { hide message_handicap }
}
itemDef {
name effectfield
group "playersettinggroup"
style 0
text "Effect:"
ownerdraw UI_EFFECTS
rect 0 205 215 32
textstyle 6
textalign ITEM_ALIGN_LEFT
textalignx 20
textaligny 21
textscale .333
outlinecolor 1 .5 .5 .5
backcolor 0 0 0 0
forecolor 1 1 1 1
border 0
bordercolor 0 0 0 0
visible 1
mouseEnter { show message_effect }
mouseExit { hide message_effect }
}
itemDef {
name clanfield
group grparenatype
ownerdraw UI_CLANNAME
text "Clan:"
textstyle 6
rect 20 235 215 31
textalign ITEM_ALIGN_LEFT
textalignx 0
textaligny 21
textscale .333
forecolor 1 1 1 1
cvarTest "ui_q3model"
showCVar { "0" }
visible 1
action { play "sound/misc/nomenu.wav" }
mouseEnter { show message_clan }
mouseExit { hide message_clan }
}
itemDef {
name effectfield
group "playersettinggroup"
type ITEM_TYPE_SLIDER
text "1st-Person Body Scale:"
cvarfloat "cg_firstPersonBodyScale" 0.2 0 1
rect 0 310 250 20
textstyle 6
textalign ITEM_ALIGN_LEFT
textalignx 20
textaligny 16
textscale .333
outlinecolor 1 .5 .5 .5
backcolor 0 0 0 0
forecolor 1 1 1 1
border 0
bordercolor 0 0 0 0
visible 1
}
itemDef {
name headlist
rect 10 340 620 80
group grparenatype
cvarTest "ui_q3model"
hideCvar { "1" }
type ITEM_TYPE_LISTBOX
style WINDOW_STYLE_FILLED
elementwidth 61.75
elementheight 61.75
elementtype LISTBOX_IMAGE
feeder FEEDER_HEADS
horizontalscroll
border 1
bordersize 1
backcolor 0 0 0 .25
bordercolor .5 .5 .5 .5
forecolor 1 1 1 1
visible 1
mouseenter { setitemcolor headlist bordercolor .7 0 0 1 ; show message_model }
mouseexit { setitemcolor headlist bordercolor .5 .5 .5 .5 ; hide message_model }
}
itemDef {
name headlist
rect 10 330 620 80
group grpquaketype
cvarTest "ui_q3model"
showCVar { "1" }
type ITEM_TYPE_LISTBOX
style WINDOW_STYLE_FILLED
elementwidth 61.75
elementheight 61.75
elementtype LISTBOX_IMAGE
feeder FEEDER_Q3HEADS
horizontalscroll
border 1
bordersize 1
backcolor 0 0 0 .25
bordercolor .5 .5 .5 .5
forecolor 1 1 1 1
visible 1
mouseenter { setitemcolor headlist bordercolor .7 0 0 1 ; show message_model }
mouseexit { setitemcolor headlist bordercolor .5 .5 .5 .5 ; hide message_model}
}
// BACK BAR //
itemDef {
name gotobar
style 2
rect 0 430 640 30
textscale 0.4
textalign 0 // center
textalignx 60 // x alignment point for text
// use it to offset left/right text from the edge
// or to center the text on a different point
textaligny 21
style 2
border 4
bordercolor 0.5 0.5 0.5 0.5
bordersize 2
backcolor 0 0 .75 0.5
visible 1
mouseEnter { setcolor backcolor .75 0 0 .5 }
mouseExit { setcolor backcolor 0 0 .75 .5 }
decoration
}
itemDef {
name back
style 3
background "ui/assets/backarrow.tga"
rect 16 424 50 50
visible 1
action { close player_menu ; open main }
mouseEnter { hide back ; show back_alt ; show message_back }
}
itemDef {
name back_alt
style WINDOW_STYLE_SHADER
background "ui/assets/backarrow_alt.tga"
rect 14 422 54 54
backcolor 0 0 0 0
forecolor 1 1 1 1
visible 0
type ITEM_TYPE_BUTTON
mouseExit { hide back_alt ; show back ; hide message_back }
action { close player_menu ; open main }
}
// MESSAGES //
itemDef {
name message_back
group grpmessage
style 0
rect 320 430 128 30
textstyle 1
textalign 1
textalignx 0
textaligny 25
textscale .416
text "Return to Main Menu"
forecolor 1 1 1 1
decoration
visible 0
}
itemDef {
name message_name
group grpmessage
style 0
rect 320 430 128 30
textalign 1
textstyle 1
textalignx 0
textaligny 25
textscale .416
text "Enter Player Name"
forecolor 1 1 1 1
decoration
visible 0
}
itemDef {
name message_handicap
group grpmessage
style 0
rect 320 430 128 30
textalign 1
textstyle 1
textalignx 0
textaligny 25
textscale .416
text "Click to Change Handicap"
forecolor 1 1 1 1
decoration
visible 0
}
itemDef {
name message_effect
group grpmessage
style 0
rect 320 430 128 30
textalign 1
textstyle 1
textalignx 0
textaligny 25
textscale .416
text "Select Bar to Change Effect Color"
forecolor 1 1 1 1
decoration
visible 0
}
itemDef {
name message_clan
group grpmessage
style 0
rect 320 430 128 30
textalign 1
textstyle 1
textalignx 0
textaligny 25
textscale .416
text "Click to Cycle Clan Selection"
forecolor 1 1 1 1
decoration
visible 0
}
itemDef {
name message_type
group grpmessage
style 0
rect 320 430 128 30
textalign 1
textstyle 1
textalignx 0
textaligny 25
textscale .416
text "Click to View Team Arena or Quake III Models"
forecolor 1 1 1 1
decoration
visible 0
}
itemDef {
name message_model
group grpmessage
style 0
rect 320 430 128 30
textalign 1
textstyle 1
textalignx 0
textaligny 25
textscale .416
text "Click to Change Player Model"
forecolor 1 1 1 1
decoration
visible 0
}
itemDef {
name clancinematic
rect 238 157 170 133
group grparenatype
cvarTest "ui_q3model"
showCVar { "0" }
ownerdraw UI_CLANCINEMATIC
visible 1
decoration
}
itemDef {
name clancinematic
group grpquaketype
cvarTest "ui_q3model"
showCVar { "1" }
style 3
background "ui/assets/q3imagepage.tga"
rect 238 157 170 133
visible 1
decoration
}
itemDef {
name clancinematic
style 3
background "menuscreen"
rect 238 153 170 133
visible 1
decoration
}
itemDef {
name menuback_g
style WINDOW_STYLE_SHADER
rect 195 120 255 202
background "menuback_g"
visible 1
decoration
}
itemDef {
name fadebox
style WINDOW_STYLE_FILLED
background "ui/assets/fadebox.tga"
forecolor 0 0 0 1
backcolor 0 0 0 1
rect 0 0 640 480
visible 1
decoration
}
}
}

View file

@ -82,22 +82,22 @@ itemDef {
} }
itemDef { // itemDef {
name graphics // name graphics
group grpSystem // group grpSystem
text "Quality:" // text "Quality:"
type ITEM_TYPE_MULTI // type ITEM_TYPE_MULTI
cvar "ui_glCustom" // cvar "ui_glCustom"
cvarFloatList { "High Quality" 0 "Normal" 1 "Fast" 2 "Fastest" 3 "Custom" 4 } // cvarFloatList { "High Quality" 0 "Normal" 1 "Fast" 2 "Fastest" 3 "Custom" 4 }
rect 99 42 256 20 // rect 99 42 256 20
textalign ITEM_ALIGN_RIGHT // textalign ITEM_ALIGN_RIGHT
textalignx 128 // textalignx 128
textaligny 20 // textaligny 20
textscale .333 // textscale .333
forecolor 1 1 1 1 // forecolor 1 1 1 1
visible 0 // visible 0
action { uiScript update "ui_glCustom" } // action { uiScript update "ui_glCustom" }
} // }
itemDef { itemDef {
name graphics name graphics
@ -106,7 +106,7 @@ itemDef {
text "Refresh Rate:" text "Refresh Rate:"
cvar "vr_refreshrate" cvar "vr_refreshrate"
cvarFloatList { "60" 60 "72 (Recommended)" 72 "80" 80 "90" 90 } cvarFloatList { "60" 60 "72 (Recommended)" 72 "80" 80 "90" 90 }
rect 99 67 256 20 rect 99 42 256 20
textalign ITEM_ALIGN_RIGHT textalign ITEM_ALIGN_RIGHT
textalignx 128 textalignx 128
textaligny 20 textaligny 20
@ -121,7 +121,7 @@ itemDef {
type ITEM_TYPE_YESNO type ITEM_TYPE_YESNO
text "Sync Every Frame:" text "Sync Every Frame:"
cvar "r_finish" cvar "r_finish"
rect 99 92 256 20 rect 99 67 256 20
textalign ITEM_ALIGN_RIGHT textalign ITEM_ALIGN_RIGHT
textalignx 128 textalignx 128
textaligny 20 textaligny 20
@ -137,7 +137,7 @@ itemDef {
text "Color Depth:" text "Color Depth:"
cvar "r_colorbits" cvar "r_colorbits"
cvarFloatList { "Desktop Default" 0 "16-bit" 16 "32-bit" 32 } cvarFloatList { "Desktop Default" 0 "16-bit" 16 "32-bit" 32 }
rect 99 117 256 20 rect 99 92 256 20
textalign ITEM_ALIGN_RIGHT textalign ITEM_ALIGN_RIGHT
textalignx 128 textalignx 128
textaligny 20 textaligny 20
@ -154,7 +154,7 @@ itemDef {
text "Lighting:" text "Lighting:"
cvar "r_vertexlight" cvar "r_vertexlight"
cvarFloatList { "Light Map (high)" 0 "Vertex (low)" 1 } cvarFloatList { "Light Map (high)" 0 "Vertex (low)" 1 }
rect 99 142 256 20 rect 99 117 256 20
textalign ITEM_ALIGN_RIGHT textalign ITEM_ALIGN_RIGHT
textalignx 128 textalignx 128
textaligny 20 textaligny 20
@ -170,7 +170,7 @@ itemDef {
type ITEM_TYPE_YESNO type ITEM_TYPE_YESNO
text "Dynamic Lights:" text "Dynamic Lights:"
cvar "r_dynamiclight" cvar "r_dynamiclight"
rect 99 167 256 20 rect 99 142 256 20
textalign ITEM_ALIGN_RIGHT textalign ITEM_ALIGN_RIGHT
textalignx 128 textalignx 128
textaligny 20 textaligny 20
@ -179,13 +179,29 @@ itemDef {
visible 1 visible 1
} }
itemDef {
name graphics
group grpSystem
type ITEM_TYPE_MULTI
text "Shadow Detail:"
cvar "cg_shadows"
cvarFloatList { "Low" 1 "High" 3 }
rect 99 167 256 20
textalign ITEM_ALIGN_RIGHT
textalignx 128
textaligny 20
textscale .333
forecolor 1 1 1 1
visible 0
}
itemDef { itemDef {
name graphics name graphics
group grpSystem group grpSystem
type ITEM_TYPE_MULTI type ITEM_TYPE_MULTI
text "Geometric Detail:" text "Geometric Detail:"
cvar "r_lodbias" cvar "r_lodbias"
cvarFloatList { "High" 0 "Medium" 1 "Low" 2 } cvarFloatList { "High" -1 "Medium" 1 "Low" 2 }
rect 99 192 256 20 rect 99 192 256 20
textalign ITEM_ALIGN_RIGHT textalign ITEM_ALIGN_RIGHT
textalignx 128 textalignx 128
@ -220,7 +236,7 @@ itemDef {
text "Texture Quality:" text "Texture Quality:"
cvar "r_texturebits" cvar "r_texturebits"
cvarFloatList { "Default" 0 "16 bit" 16 "32 bit" 32 } cvarFloatList { "Default" 0 "16 bit" 16 "32 bit" 32 }
rect 99 244 256 20 rect 99 242 256 20
textalign ITEM_ALIGN_RIGHT textalign ITEM_ALIGN_RIGHT
textalignx 128 textalignx 128
textaligny 20 textaligny 20
@ -236,7 +252,7 @@ itemDef {
text "Texture Filter:" text "Texture Filter:"
cvar "r_texturemode" cvar "r_texturemode"
cvarStrList { "Bilinear", "GL_LINEAR_MIPMAP_NEAREST", "Trilinear", "GL_LINEAR_MIPMAP_LINEAR" } cvarStrList { "Bilinear", "GL_LINEAR_MIPMAP_NEAREST", "Trilinear", "GL_LINEAR_MIPMAP_LINEAR" }
rect 99 269 256 20 rect 99 267 256 20
textalign ITEM_ALIGN_RIGHT textalign ITEM_ALIGN_RIGHT
textalignx 128 textalignx 128
textaligny 20 textaligny 20
@ -251,7 +267,7 @@ itemDef {
type ITEM_TYPE_YESNO type ITEM_TYPE_YESNO
text "Compress Textures:" text "Compress Textures:"
cvar "r_ext_compressed_textures" cvar "r_ext_compressed_textures"
rect 99 294 256 20 rect 99 292 256 20
textalign ITEM_ALIGN_RIGHT textalign ITEM_ALIGN_RIGHT
textalignx 128 textalignx 128
textaligny 20 textaligny 20

View file

@ -2,8 +2,8 @@
setlocal setlocal
set BUILD_TYPE=debug set BUILD_TYPE=release
set VERSION=0.27.1 set VERSION=0.29.0
@REM Define the following environment variables to sign a release build @REM Define the following environment variables to sign a release build
@REM set KEYSTORE= @REM set KEYSTORE=