From 636d72a1c9dae14aa47844c505bc4606bfa107e1 Mon Sep 17 00:00:00 2001 From: Walter Julius Hennecke Date: Sat, 8 Nov 2014 11:59:05 +0100 Subject: [PATCH] more updates --- code/ui/ui_players.c | 29 +- code/ui/ui_playersettings.c | 2305 ++++++++++++++++++----------------- code/ui/ui_preferences.c | 531 ++++---- 3 files changed, 1436 insertions(+), 1429 deletions(-) diff --git a/code/ui/ui_players.c b/code/ui/ui_players.c index 5f19d8b..542ceeb 100644 --- a/code/ui/ui_players.c +++ b/code/ui/ui_players.c @@ -5,25 +5,26 @@ #include "ui_local.h" #include "ui_logger.h" +enum ui_playersTimer_e { + UI_TIMER_WEAPON_DELAY = 250, + UI_TIMER_WEAPON_SWITCH = 300, + UI_TIMER_ATTACK = 500, + UI_TIMER_MUZZLE_FLASH = 20, + UI_TIMER_LAND = 130, + UI_TIMER_JUMP = 1000, + UI_TIMER_GESTURE = 2300 +}; -#define UI_TIMER_GESTURE 2300 -#define UI_TIMER_JUMP 1000 -#define UI_TIMER_LAND 130 -#define UI_TIMER_WEAPON_SWITCH 300 -#define UI_TIMER_ATTACK 500 -#define UI_TIMER_MUZZLE_FLASH 20 -#define UI_TIMER_WEAPON_DELAY 250 +static const int32_t JUMP_HEIGHT = 56; -#define JUMP_HEIGHT 56 +static const double SWINGSPEED = 0.2; //TiM - 0.3 -#define SWINGSPEED 0.2 //TiM - 0.3 - -#define SPIN_SPEED 0.9 -#define COAST_TIME 1000 +static const double SPIN_SPEED = 0.9; +static const int32_t COAST_TIME = 1000; -static int32_t dp_realtime; -static float jumpHeight; +static int32_t dp_realtime; +static float jumpHeight; //TiM : Bolton Table stringID_table_t BoltonTable[BOLTON_MAX + 1] = diff --git a/code/ui/ui_playersettings.c b/code/ui/ui_playersettings.c index dd2863a..5c02fd8 100644 --- a/code/ui/ui_playersettings.c +++ b/code/ui/ui_playersettings.c @@ -1,1150 +1,1155 @@ -// Copyright (C) 1999-2000 Id Software, Inc. -// -#include "ui_local.h" -#include "ui_logger.h" - -#define ID_NAME 9 -#define ID_CLASS 10 -#define ID_RANK 11 -#define ID_EFFECTS 12 -#define ID_BACK 13 - -// If this gets changed, also change it in ui_playermodel -#define ID_MODEL 14 -#define ID_DATA 15 -#define ID_MAINMENU 16 -#define ID_INGAMEMENU 17 - -#define ID_CLASSTXT 18 -#define ID_RANKTXT 19 -#define ID_AGE 20 -#define ID_RACE 21 -#define ID_HEIGHT 22 -#define ID_WEIGHT 23 - -#define ID_RANKSETS 24 -#define ID_CLASSSETS 25 - -#define ID_COMMIT 26 - -//#define ID_LOADPROFILE 26 -//#define ID_SAVEPROFILE 27 - -#define PIC_MONBAR2 "menu/common/monbar_2.tga" -#define PIC_SLIDER "menu/common/slider.tga" - -extern sfxHandle_t menu_out_sound; - -#define PROFILE_PATH "profiles" -#define MAX_PROFILES 64 - -static void PlayerSettings_SetMenuItems( void ); -//TiM - Ermm.... -//We COULD actually base these directly off the cvar values... probably a bit of a mem saver then lol - -typedef struct { - //char name[36]; - int32_t classIndex; - int32_t rankIndex; - - //char age[36]; - //char race[36]; - - //float height; - //float weight; -} initialData_t; - -typedef struct { - menuframework_s menu; - - int32_t prevMenu; - - //listdata - char profileList[MAX_PROFILES][32]; - char* profileListPtr[MAX_PROFILES]; - - //profile loader - /*int32_t numProfiles; - menulist_s profiles; - menubitmap_s loadProfile; - - //profile saver - menufield_s profileName; - menubitmap_s saveProfile;*/ - - menubitmap_s player; - menubitmap_s mainmenu; - menubitmap_s back; - menufield_s name; - - menulist_s pClass; //Menu - Class Spin - menufield_s classTxt; //Menu - Class manual input - coz of servers changing the name - menulist_s pRank; //Menu - Rank Spin - menufield_s rankTxt; //Menu - Rank manual input. What the hey lol - menufield_s age; //Menu - Ye olde player - menufield_s race; //Menu - Ye alien player - menuslider_s height; //Menu - Ye pipsqueak player - menuslider_s weight; //Menu - Ye fatass player - - menulist_s rankSets; //If we have more than one rankset, add this scroller so players can choose what they want - menulist_s classSets; - - menubitmap_s commit; //TiM - Manually have to confirm change now. Makes stuff feel more secure. :) - - menubitmap_s model; - menubitmap_s data; - menubitmap_s item_null; - - qhandle_t corner_ul_4_4; - qhandle_t corner_ur_4_4; - qhandle_t corner_ll_4_4; - qhandle_t corner_ll_4_18; - qhandle_t corner_lr_4_18; - - //menutext_s playername; //Menu - PlayerName - qhandle_t fxBasePic; - qhandle_t fxPic[7]; - playerInfo_t playerinfo; - int32_t current_fx; - char playerModel[MAX_QPATH]; - - char *rankList[MAX_RANKS+1]; //TiM: Local buffer for ranks data ( + 1 slot for 'Other' field + 1 for null terminator) - int32_t numRanks; - char *rankSetList[MAX_RANKSETS+1]; - int32_t numRankSets; - - qboolean settingsChanged; //if settings have been altered, enable this so as to enable the 'commit' button - qboolean displayChangedSettings; - - initialData_t initData; //TiM | Storage for all our initial data. So if/when we change the data, we'll know exactly when to make the commit button solid - - char *classNameList[MAX_CLASSES+1]; //+2 = other + null - int32_t numClasses; - - char *classSetList[MAX_CLASSSETS+1]; - int32_t numClassSets; -} playersettings_t; - -static playersettings_t s_playersettings; - -/* -======================= -PlayerSettings_SettingsAreDifferent - -TiM: Is called each time an action -event is received so as to check to see if any settings -have been changed. If they have, make the 'apply changes' -button appear. -======================= -*/ - -static qboolean PlayerSettings_SettingsAreDifferent ( void ) { - UI_LogFuncBegin(); - qboolean endResult=qfalse; - - //Name - if ( Q_stricmp( s_playersettings.name.field.buffer, UI_Cvar_VariableString( "name" ) ) ) { - //UI_Logger( LL_DEBUG, "Name changed!\n"); - endResult = qtrue; - } - - //Age - if ( Q_stricmp( s_playersettings.age.field.buffer, UI_Cvar_VariableString( "age" ) ) ) { - //UI_Logger( LL_DEBUG, "Age changed!\n"); - endResult = qtrue; - } - - //Race - if ( Q_stricmp( s_playersettings.race.field.buffer, UI_Cvar_VariableString( "race" ) ) ) { - //UI_Logger( LL_DEBUG, "Race changed!\n"); - endResult = qtrue; - } - - //playerClass field - if ( s_playersettings.pClass.curvalue != s_playersettings.initData.classIndex ) { - //UI_Logger( LL_DEBUG, "Class changed!\n"); - endResult = qtrue; - } - - //playerRank field - if ( s_playersettings.pRank.curvalue != s_playersettings.initData.rankIndex ) { - //UI_Logger( LL_DEBUG, "Rank changed!\n"); - endResult = qtrue; - } - - //height... hackily normalized lol - if ( Q_stricmp( va( "%2.5f",s_playersettings.height.curvalue), va( "%2.5f", atof( UI_Cvar_VariableString( "height" ) ) ) ) ) { - //UI_Logger( LL_DEBUG, "Height changed!\n"); - endResult = qtrue; - } - - //weight... see above rofl - if ( Q_stricmp( va( "%2.5f",s_playersettings.weight.curvalue), va( "%2.5f", atof( UI_Cvar_VariableString( "weight" ) ) ) ) ) { - //UI_Logger( LL_DEBUG, "Weight changed!\n"); - endResult = qtrue; - } - - //Class Text field - if ( s_playersettings.pClass.curvalue == s_playersettings.numClasses && Q_stricmp( s_playersettings.classTxt.field.buffer, UI_Cvar_VariableString( "ui_playerClass" ) ) ) { - //UI_Logger( LL_DEBUG, "Class text changed!\n"); - endResult = qtrue; - } - - //Rank Text field - if ( s_playersettings.pRank.curvalue == s_playersettings.numRanks && Q_stricmp( s_playersettings.rankTxt.field.buffer, UI_Cvar_VariableString( "ui_playerRank" ) ) ) { - //UI_Logger( LL_DEBUG, "Rank text changed!\n"); - endResult = qtrue; - } - UI_LogFuncEnd(); - return endResult; -} - -/* -================= -PlayerSettings_DrawPlayer -RPG-X: TiM - Modified it so it actually fit in the box, -and had an appropriately set FOV -================= -*/ -static void PlayerSettings_DrawPlayer( void *self ) -{ - UI_LogFuncBegin(); - menubitmap_s *b; - vec3_t viewangles; - vec3_t origin = {-40, 2.5, -4 }; //-3.8 - char buf[MAX_QPATH]; - - viewangles[YAW] = uis.lastYaw; //180 - 30 - viewangles[PITCH] = 0; - viewangles[ROLL] = 0; - - trap_Cvar_VariableStringBuffer( "model", buf, sizeof( buf ) ); - - if ( Q_stricmp( buf, s_playersettings.playerModel ) ) { - - UI_PlayerInfo_SetModel( &s_playersettings.playerinfo, buf ); - strcpy( s_playersettings.playerModel, buf ); - - uis.lastYaw = viewangles[YAW] = 180 - 30; //180 - 30 - } - - UI_PlayerInfo_SetInfo( &s_playersettings.playerinfo, BOTH_WALK1, BOTH_WALK1, viewangles, vec3_origin, WP_0, s_playersettings.height.curvalue, s_playersettings.weight.curvalue, qfalse ); - - b = (menubitmap_s*) self; - UI_DrawPlayer( (float)b->generic.x, (float)b->generic.y, (float)b->width, (float)b->height, origin, &s_playersettings.playerinfo, (int32_t)(uis.realtime/1.5) ); - - UI_LogFuncEnd(); -} - - -/* -================= -PlayerSettings_SaveChanges -================= -*/ -static void PlayerSettings_SaveChanges( void ) -{ - UI_LogFuncBegin(); - // name - trap_Cvar_Set( "name", s_playersettings.name.field.buffer ); - - //class - if ( s_playersettings.pClass.curvalue == s_playersettings.numClasses ) { - if ( s_playersettings.classTxt.field.buffer[0] ) { - if ( !ingameFlag ) - trap_Cvar_Set( "ui_playerClass", s_playersettings.classTxt.field.buffer ); - else - trap_Cmd_ExecuteText( EXEC_APPEND, va( "class %s\n", s_playersettings.classTxt.field.buffer ) ); - } - } - else { - if ( !ingameFlag ) - trap_Cvar_Set( "ui_playerClass", uis.classData[s_playersettings.pClass.curvalue].classNameConsole ); - else - trap_Cmd_ExecuteText( EXEC_APPEND, va( "class %s\n", uis.classData[s_playersettings.pClass.curvalue].classNameConsole ) ); - } - - //Save current class index to the initData - s_playersettings.initData.classIndex = s_playersettings.pClass.curvalue; - - - //rank - if ( s_playersettings.pRank.curvalue == s_playersettings.numRanks ) { - if ( s_playersettings.rankTxt.field.buffer[0] ) { - if ( !ingameFlag ) - trap_Cvar_Set( "ui_playerRank", s_playersettings.rankTxt.field.buffer ); - else - trap_Cmd_ExecuteText( EXEC_APPEND, va( "rank %s\n", s_playersettings.rankTxt.field.buffer ) ); - } - } - else { - if ( !ingameFlag ) - trap_Cvar_Set( "ui_playerRank", Q_strlwr( uis.rankSet.rankNames[s_playersettings.pRank.curvalue].consoleName ) ); - else - trap_Cmd_ExecuteText( EXEC_APPEND, va( "rank %s\n", uis.rankSet.rankNames[s_playersettings.pRank.curvalue].consoleName ) ); - } - - uis.currentRank = s_playersettings.pRank.curvalue; - - //Save teh rank index to the init data set - s_playersettings.initData.rankIndex = s_playersettings.pRank.curvalue; - - //age - trap_Cvar_Set( "age", s_playersettings.age.field.buffer ); - //race - trap_Cvar_Set( "race", s_playersettings.race.field.buffer ); - - //height - trap_Cvar_SetValue( "height", s_playersettings.height.curvalue ); - //weight - trap_Cvar_SetValue( "weight", s_playersettings.weight.curvalue ); - - //Display the 'applied msg' - s_playersettings.displayChangedSettings = qtrue; - - UI_LogFuncEnd(); -} - - -/* -================= -PlayerSettings_MenuKey -================= -*/ -static sfxHandle_t PlayerSettings_MenuKey( int32_t key ) -{ - return Menu_DefaultKey( &s_playersettings.menu, key ); -} - - -/* -================= -PlayerSettings_SetMenuItems -================= -*/ -static void PlayerSettings_SetMenuItems( void ) -{ - UI_LogFuncBegin(); - int32_t i; - - // Player Name - Q_strncpyz( s_playersettings.name.field.buffer, UI_Cvar_VariableString("name"), sizeof(s_playersettings.name.field.buffer) ); - - //Player class - { - qboolean classFound = qfalse; //If we don't find a match, we'll use this to know - - s_playersettings.pClass.curvalue = 0; - - for ( i=0; i < s_playersettings.numClasses; i++ ) { - if ( !Q_stricmp( uis.classData[i].classNameConsole, UI_Cvar_VariableString( "ui_playerClass" ) ) ) { - s_playersettings.pClass.curvalue = i; - classFound = qtrue; - break; - } - } - - //No class found. Set the field to 'other' and display the text field - if ( !classFound ) { - s_playersettings.pClass.curvalue = s_playersettings.numClasses;//CLASS_OTHER; - - s_playersettings.classTxt.generic.flags &= ~QMF_HIDDEN; - - memset( &s_playersettings.classTxt.field.buffer, 0, sizeof( s_playersettings.classTxt.field.buffer ) ); - Q_strncpyz( s_playersettings.classTxt.field.buffer, UI_Cvar_VariableString( "ui_playerClass" ), sizeof( s_playersettings.classTxt.field.buffer ) ); - } - - s_playersettings.initData.classIndex = s_playersettings.pClass.curvalue; - } - - - //Player Rank - { - qboolean foundRank = qfalse; //0 is a valid rank, so we'll use this to test instead. - //I would have simply set curvalue to -1 to test, but I was unsure how the controls API would react to a negative value there - - s_playersettings.pRank.curvalue = 0; - - //Loop thru our rank set, and compare what's in the console to it - for( i = 0; i < MAX_RANKS; i++ ) { - if ( !Q_stricmp( UI_Cvar_VariableString("ui_playerRank"), uis.rankSet.rankNames[i].consoleName ) ) { - s_playersettings.pRank.curvalue = i; - foundRank = qtrue; - break; - } - } - - //TiM - no rank was found, so set our rank field to 'other' - if ( !foundRank ) { - //set value to the last in the cell - s_playersettings.pRank.curvalue = s_playersettings.numRanks; - - //Init and show the text field control - s_playersettings.rankTxt.generic.flags &= ~QMF_HIDDEN; - - memset( &s_playersettings.rankTxt.field.buffer, 0, sizeof( s_playersettings.rankTxt.field.buffer ) ); - Q_strncpyz( s_playersettings.rankTxt.field.buffer, UI_Cvar_VariableString("ui_playerRank"), sizeof( s_playersettings.rankTxt.field.buffer ) ); - } - - s_playersettings.initData.rankIndex = s_playersettings.pRank.curvalue; - } - - - //Player Age - Q_strncpyz( s_playersettings.age.field.buffer, UI_Cvar_VariableString( "age" ), sizeof( s_playersettings.age.field.buffer ) ); - - //Player Race - Q_strncpyz( s_playersettings.race.field.buffer, UI_Cvar_VariableString( "race" ), sizeof( s_playersettings.race.field.buffer ) ); - - //Player Height - { - float height = trap_Cvar_VariableValue( "height" ); - - //If height was defined, but filled with no value - //We don't want infinitely flat players rofl - if (!height) - height = 1.0f; - - s_playersettings.height.curvalue = height; - } - - - //Player Weight - { - float weight = trap_Cvar_VariableValue( "weight" ); - - //If height was defined, but filled with no value - //We don't want infinitely thin players rofl - if (!weight) - weight = 1.0f; - - s_playersettings.weight.curvalue = weight; - } - - UI_LogFuncEnd(); -} - -/* -================= -PlayerSettings_SpinPlayer -================= -*/ -static void PlayerSettings_SpinPlayer( void* ptr, int32_t event) -{ - UI_LogFuncBegin(); - if ( event == QM_ACTIVATED ) - { - uis.spinView = qtrue; - uis.cursorpx = uis.cursorx; - } - UI_LogFuncEnd(); -} - -/* -================= -PlayerSettings_MenuEvent -================= -*/ -static void PlayerSettings_MenuEvent( void* ptr, int32_t event ) -{ - UI_LogFuncBegin(); - if( event != QM_ACTIVATED ) - { - UI_LogFuncEnd(); - return; - } - - s_playersettings.displayChangedSettings = qfalse; - s_playersettings.settingsChanged = PlayerSettings_SettingsAreDifferent(); - - switch( ((menucommon_s*)ptr)->id ) - { - - case ID_MODEL: - UI_PopMenu(); - //PlayerSettings_SaveChanges(); - UI_PlayerModelMenu(s_playersettings.prevMenu); - break; - - case ID_BACK: - //PlayerSettings_SaveChanges(); - UI_PopMenu(); - break; - - case ID_MAINMENU: - //PlayerSettings_SaveChanges(); - UI_MainMenu(); - break; - - case ID_INGAMEMENU: - //PlayerSettings_SaveChanges(); - UI_InGameMenu(); - break; - - case ID_COMMIT: - PlayerSettings_SaveChanges(); - s_playersettings.settingsChanged = qfalse; - break; - - case ID_CLASS: - if ( s_playersettings.pClass.curvalue == s_playersettings.numClasses ) { - s_playersettings.classTxt.generic.flags &= ~QMF_HIDDEN; - - memset( &s_playersettings.classTxt.field.buffer, 0, sizeof( s_playersettings.classTxt.field.buffer ) ); - Q_strncpyz( s_playersettings.classTxt.field.buffer, UI_Cvar_VariableString( "ui_playerClass"), sizeof( s_playersettings.classTxt.field.buffer ) ); - } - else { - memset( &s_playersettings.classTxt.field.buffer, 0, sizeof( s_playersettings.classTxt.field.buffer ) ); - s_playersettings.classTxt.generic.flags |= QMF_HIDDEN; - } - - break; - - case ID_RANK: - if ( s_playersettings.pRank.curvalue == s_playersettings.numRanks ) { - s_playersettings.rankTxt.generic.flags &= ~QMF_HIDDEN; - - memset( &s_playersettings.rankTxt.field.buffer, 0, sizeof( s_playersettings.rankTxt.field.buffer ) ); - Q_strncpyz( s_playersettings.rankTxt.field.buffer, UI_Cvar_VariableString( "ui_playerRank"), sizeof( s_playersettings.rankTxt.field.buffer ) ); - } - else { - memset( &s_playersettings.rankTxt.field.buffer, 0, sizeof( s_playersettings.rankTxt.field.buffer ) ); - s_playersettings.rankTxt.generic.flags |= QMF_HIDDEN; - } - break; - - case ID_RANKSETS: - if ( !ingameFlag ) { - if ( s_playersettings.rankSetList[s_playersettings.rankSets.curvalue][0] ) - trap_Cvar_Set( "ui_currentRankSet", s_playersettings.rankSetList[s_playersettings.rankSets.curvalue] ); - - UI_InitRanksData( UI_Cvar_VariableString( "ui_currentRankSet" ) ); - s_playersettings.numRanks = UI_PopulateRanksArray( s_playersettings.rankList ); - - s_playersettings.pRank.numitems = s_playersettings.numRanks; - } - break; - - case ID_CLASSSETS: - if ( !ingameFlag ) { - if ( s_playersettings.classSetList[s_playersettings.classSets.curvalue][0] ) - trap_Cvar_Set( "ui_currentClassSet", s_playersettings.classSetList[s_playersettings.classSets.curvalue] ); - - UI_InitClassData( UI_Cvar_VariableString( "ui_currentClassSet" ) ); - s_playersettings.numClasses = UI_PopulateClassArray( s_playersettings.classNameList ); - - s_playersettings.pClass.numitems = s_playersettings.numClasses; - } - break; - - } - UI_LogFuncEnd(); -} - - -/* -================= -PlayerSettingsMenu_Graphics -================= -*/ -void PlayerSettingsMenu_Graphics (void) -{ - UI_LogFuncBegin(); - // Draw the basic screen layout - UI_MenuFrame2(&s_playersettings.menu); - - trap_R_SetColor( colorTable[CT_LTBROWN1]); - UI_DrawHandlePic(30, 203, 47, 186, uis.whiteShader); // Middle left line - - //TiM - eh later - // Frame around model pictures - trap_R_SetColor( colorTable[CT_LTORANGE]); - UI_DrawHandlePic( 97, 94, 8, -32, s_playersettings.corner_ll_4_18); // UL Corner y = 139 x=114 - UI_DrawHandlePic( 97, 312, 8, 32, s_playersettings.corner_ll_4_18); // LL Corner x=114 - UI_DrawHandlePic( 421, 94, 8, -32, s_playersettings.corner_lr_4_18); // UR Corner y= 139 - UI_DrawHandlePic( 421, 312, 8, 32, s_playersettings.corner_lr_4_18); // LR Corner - UI_DrawHandlePic( 97, 125, 4, 188, uis.whiteShader); // Left side x=114 y=170 h=97 - UI_DrawHandlePic( 424, 125, 4, 188, uis.whiteShader); // Right side - UI_DrawHandlePic( 103, 106, 320, 18, uis.whiteShader); // Top y = 151 x =120 - //UI_DrawHandlePic( 103, 314, 310, 18, uis.whiteShader); // Bottom - UI_DrawHandlePic( 103, 314, 90, 18, uis.whiteShader ); //Bottom - Left - UI_DrawHandlePic( 332, 314, 90, 18, uis.whiteShader ); //Bottom - Right - - //line - //UI_DrawHandlePic( 97, 383, 331, 2, uis.whiteShader ); - - UI_DrawProportionalString( 109, 108, menu_normal_text[MNT_CHANGEPLAYER],UI_SMALLFONT,colorTable[CT_BLACK]); // Top - - trap_R_SetColor( colorTable[CT_DKGREY2]); - UI_DrawHandlePic( 439, 79, 151, 295, uis.whiteShader); // Background - - // Frame around player model - trap_R_SetColor( colorTable[CT_LTORANGE]); - UI_DrawHandlePic( 435, 50, 8, -32, s_playersettings.corner_ll_4_18); // UL Corner - UI_DrawHandlePic( 435, 369, 8, 8, s_playersettings.corner_ll_4_4); // LL Corner - UI_DrawHandlePic( 440, 62, 150, 18, uis.whiteShader); // Top - UI_DrawHandlePic( 435, 79, 4, 295, uis.whiteShader); // Left side - UI_DrawHandlePic( 440, 371, 150, 4, uis.whiteShader); // Bottom - - // Left rounded ends for buttons - trap_R_SetColor( colorTable[s_playersettings.mainmenu.color]); - UI_DrawHandlePic(s_playersettings.mainmenu.generic.x - 14, s_playersettings.mainmenu.generic.y, - MENU_BUTTON_MED_HEIGHT, MENU_BUTTON_MED_HEIGHT, uis.graphicButtonLeftEnd); - - trap_R_SetColor( colorTable[s_playersettings.back.color]); - UI_DrawHandlePic(s_playersettings.back.generic.x - 14, s_playersettings.back.generic.y, - MENU_BUTTON_MED_HEIGHT, MENU_BUTTON_MED_HEIGHT, uis.graphicButtonLeftEnd); - - trap_R_SetColor( colorTable[s_playersettings.data.color]); - UI_DrawHandlePic(s_playersettings.data.generic.x - 14, s_playersettings.data.generic.y, - MENU_BUTTON_MED_HEIGHT, MENU_BUTTON_MED_HEIGHT, uis.graphicButtonLeftEnd); - - trap_R_SetColor( colorTable[s_playersettings.model.color]); - UI_DrawHandlePic(s_playersettings.model.generic.x - 14, s_playersettings.model.generic.y, - MENU_BUTTON_MED_HEIGHT, MENU_BUTTON_MED_HEIGHT, uis.graphicButtonLeftEnd); - - trap_R_SetColor( colorTable[s_playersettings.mainmenu.color]); - UI_DrawHandlePic(s_playersettings.mainmenu.generic.x - 14, s_playersettings.mainmenu.generic.y, - MENU_BUTTON_MED_HEIGHT, MENU_BUTTON_MED_HEIGHT, uis.graphicButtonLeftEnd); - - UI_DrawProportionalString( 74, 28, "881",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]); - UI_DrawProportionalString( 74, 150, "2445",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]); - UI_DrawProportionalString( 74, 206, "600",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]); - UI_DrawProportionalString( 74, 395, "3-44",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]); - - //TiM - Player weight and height parameters - { - float ht = s_playersettings.height.curvalue * (float)BASE_HEIGHT; - float wt = s_playersettings.weight.curvalue * s_playersettings.height.curvalue * (float)BASE_WEIGHT; - char htStr[12]; - char wtStr[12]; - - if ( s_playersettings.playerinfo.gender == GENDER_FEMALE ) - wt *= (float)FEMALE_OFFSET; - - Com_sprintf( htStr, sizeof(htStr), "%4.2f%s", ht, HEIGHT_UNIT ); - Com_sprintf( wtStr, sizeof(wtStr), "%4.2f%s", wt, WEIGHT_UNIT ); - - UI_DrawProportionalString( 359, 259, htStr, UI_LEFT | UI_SMALLFONT, colorTable[CT_LTGOLD1] ); - UI_DrawProportionalString( 359, 285, wtStr, UI_LEFT | UI_SMALLFONT, colorTable[CT_LTGOLD1] ); - } - - if ( s_playersettings.settingsChanged ) { - s_playersettings.commit.generic.flags &= ~(QMF_GRAYED | QMF_INACTIVE); - s_playersettings.commit.generic.flags |= (QMF_HIGHLIGHT_IF_FOCUS); - } - else { - s_playersettings.commit.generic.flags = (QMF_GRAYED | QMF_INACTIVE); - } - - { - int32_t y = 338; - - if ( s_playersettings.rankSets.numitems > 1 ) - y += 24; - - if ( s_playersettings.displayChangedSettings ) - UI_DrawProportionalString( 260, y, menu_normal_text[MNT_CHANGEAPPLIED], UI_CENTER | UI_SMALLFONT, colorTable[CT_LTGOLD1] ); - } - - UI_DrawProportionalString( 444, 63, s_playersettings.name.field.buffer, UI_LEFT | UI_SMALLFONT, colorTable[CT_WHITE] ); - - UI_LogFuncEnd(); - -} - -/* -================= -PlayerSettings_MenuDraw -================= -*/ -static void PlayerSettings_MenuDraw (void) -{ - UI_LogFuncBegin(); - PlayerSettingsMenu_Graphics(); - Menu_Draw( &s_playersettings.menu ); - UI_LogFuncEnd(); -} - - -/* -================= -PlayerSettings_MenuInit -================= -*/ -static void PlayerSettings_MenuInit(int32_t menuFrom) -{ - UI_LogFuncBegin(); - int32_t y; - int32_t i; - - memset(&s_playersettings,0,sizeof(playersettings_t)); - - s_playersettings.prevMenu = menuFrom; - - PlayerSettings_Cache(); - - //PlayerSettings_LoadProfiles(); - - if ( ingameFlag ) { - char info[MAX_TOKEN_CHARS]; - - trap_GetConfigString( CS_SERVERINFO, info, sizeof(info) ); - UI_InitRanksData( Info_ValueForKey( info, "rpg_rankSet" ) ); - UI_InitClassData( Info_ValueForKey( info, "rpg_classSet" ) ); - - //UI_LoadClassString(); - } - - //load classes - s_playersettings.numClasses = UI_PopulateClassArray( s_playersettings.classNameList ); - - //load class sets - s_playersettings.numClassSets = UI_PopulateClassSetArray( s_playersettings.classSetList ); - s_playersettings.classSetList[s_playersettings.numClassSets] = 0; - - //Fill teh ranks array with the current loaded set and add 'other' to the end - s_playersettings.numRanks = UI_PopulateRanksArray( s_playersettings.rankList ); - //s_playersettings.rankList[s_playersettings.numRanks] = "Other"; - s_playersettings.numRankSets = UI_PopulateRankSetArray( s_playersettings.rankSetList ); - - s_playersettings.menu.key = PlayerSettings_MenuKey; - s_playersettings.menu.wrapAround = qtrue; - s_playersettings.menu.fullscreen = qtrue; - s_playersettings.menu.draw = PlayerSettings_MenuDraw; - s_playersettings.menu.descX = MENU_DESC_X; - s_playersettings.menu.descY = MENU_DESC_Y; - s_playersettings.menu.titleX = MENU_TITLE_X; - s_playersettings.menu.titleY = MENU_TITLE_Y; - s_playersettings.menu.titleI = MNT_CHANGEPLAYER_TITLE; - s_playersettings.menu.footNoteEnum = MNT_CHANGEPLAYER; - - - s_playersettings.mainmenu.generic.type = MTYPE_BITMAP; - s_playersettings.mainmenu.generic.flags = QMF_HIGHLIGHT_IF_FOCUS; - s_playersettings.mainmenu.generic.x = 110; - s_playersettings.mainmenu.generic.y = 391; - s_playersettings.mainmenu.generic.name = BUTTON_GRAPHIC_LONGRIGHT; - s_playersettings.mainmenu.generic.callback = PlayerSettings_MenuEvent; - s_playersettings.mainmenu.width = MENU_BUTTON_MED_WIDTH; - s_playersettings.mainmenu.height = MENU_BUTTON_MED_HEIGHT; - s_playersettings.mainmenu.color = CT_DKPURPLE1; - s_playersettings.mainmenu.color2 = CT_LTPURPLE1; - - if (!ingameFlag) - { - s_playersettings.mainmenu.textEnum = MBT_MAINMENU; - s_playersettings.mainmenu.generic.id = ID_MAINMENU; - } - else - { - s_playersettings.mainmenu.textEnum = MBT_INGAMEMENU; - s_playersettings.mainmenu.generic.id = ID_INGAMEMENU; - } - - s_playersettings.mainmenu.textX = MENU_BUTTON_TEXT_X; - s_playersettings.mainmenu.textY = MENU_BUTTON_TEXT_Y; - s_playersettings.mainmenu.textcolor = CT_BLACK; - s_playersettings.mainmenu.textcolor2 = CT_WHITE; - - s_playersettings.back.generic.type = MTYPE_BITMAP; - s_playersettings.back.generic.flags = QMF_HIGHLIGHT_IF_FOCUS; - s_playersettings.back.generic.x = 110; - s_playersettings.back.generic.y = 415; - s_playersettings.back.generic.name = BUTTON_GRAPHIC_LONGRIGHT; - s_playersettings.back.generic.id = ID_BACK; - s_playersettings.back.generic.callback = PlayerSettings_MenuEvent; - s_playersettings.back.width = MENU_BUTTON_MED_WIDTH; - s_playersettings.back.height = MENU_BUTTON_MED_HEIGHT; - s_playersettings.back.color = CT_DKPURPLE1; - s_playersettings.back.color2 = CT_LTPURPLE1; - s_playersettings.back.textX = MENU_BUTTON_TEXT_X; - s_playersettings.back.textY = MENU_BUTTON_TEXT_Y; - s_playersettings.back.textEnum = MBT_BACK; - s_playersettings.back.textcolor = CT_BLACK; - s_playersettings.back.textcolor2 = CT_WHITE; - - y = 134;//144; - s_playersettings.name.generic.type = MTYPE_FIELD; - s_playersettings.name.field.widthInChars = MAX_NAMELENGTH; - s_playersettings.name.field.maxchars = MAX_NAMELENGTH; - s_playersettings.name.generic.id = ID_NAME; - s_playersettings.name.generic.callback = PlayerSettings_MenuEvent; - s_playersettings.name.generic.x = 115 + 5 + UI_ProportionalStringWidth( menu_button_text[MBT_PLAYER_NAME][0], UI_SMALLFONT );//159;//180; - s_playersettings.name.generic.y = y;//182; - s_playersettings.name.field.style = UI_SMALLFONT; - s_playersettings.name.field.titleEnum = MBT_PLAYER_NAME; - s_playersettings.name.field.titlecolor = CT_LTGOLD1; - s_playersettings.name.field.textcolor = CT_DKGOLD1; - s_playersettings.name.field.textcolor2 = CT_LTGOLD1; - - y += 25;//3 * PROP_HEIGHT; - s_playersettings.pClass.generic.type = MTYPE_SPINCONTROL; - s_playersettings.pClass.generic.flags = QMF_HIGHLIGHT_IF_FOCUS; - s_playersettings.pClass.generic.id = ID_CLASS; - s_playersettings.pClass.generic.callback = PlayerSettings_MenuEvent; - s_playersettings.pClass.generic.x = 113;//134; - s_playersettings.pClass.generic.y = y;//207; - s_playersettings.pClass.numitems = MAX_CLASSES; - s_playersettings.pClass.textEnum = MBT_CLASS; - s_playersettings.pClass.textcolor = CT_BLACK; - s_playersettings.pClass.textcolor2 = CT_WHITE; - s_playersettings.pClass.color = CT_DKPURPLE1; - s_playersettings.pClass.color2 = CT_LTPURPLE1; - s_playersettings.pClass.width = 60;//80; - s_playersettings.pClass.textX = 5; - s_playersettings.pClass.textY = 2; - s_playersettings.pClass.itemnames = (const char **)s_playersettings.classNameList;//playerClassList; - - s_playersettings.classTxt.generic.type = MTYPE_FIELD; - s_playersettings.classTxt.generic.flags = QMF_HIDDEN; - s_playersettings.classTxt.generic.callback = PlayerSettings_MenuEvent; - s_playersettings.classTxt.generic.id = ID_CLASSTXT; - s_playersettings.classTxt.field.widthInChars = 16; - s_playersettings.classTxt.field.maxchars = MAX_NAMELENGTH; - s_playersettings.classTxt.generic.x = 205 + 12 + UI_ProportionalStringWidth( "Other", UI_SMALLFONT );//315;//159;//180; - s_playersettings.classTxt.generic.y = y+3;//118;//182; - s_playersettings.classTxt.field.style = UI_SMALLFONT; - s_playersettings.classTxt.field.titleEnum = MBT_OTHER; - s_playersettings.classTxt.field.titlecolor = CT_LTGOLD1; - s_playersettings.classTxt.field.textcolor = CT_DKGOLD1; - s_playersettings.classTxt.field.textcolor2 = CT_LTGOLD1; - - y += 25; - s_playersettings.pRank.generic.type = MTYPE_SPINCONTROL; - s_playersettings.pRank.generic.flags = QMF_HIGHLIGHT_IF_FOCUS; - s_playersettings.pRank.generic.id = ID_RANK; - s_playersettings.pRank.generic.callback = PlayerSettings_MenuEvent; - s_playersettings.pRank.generic.x = 113;//134; - s_playersettings.pRank.generic.y = y;//233; - s_playersettings.pRank.numitems = s_playersettings.numRanks; - s_playersettings.pRank.textEnum = MBT_RANK; - s_playersettings.pRank.textcolor = CT_BLACK; - s_playersettings.pRank.textcolor2 = CT_WHITE; - s_playersettings.pRank.color = CT_DKPURPLE1; - s_playersettings.pRank.color2 = CT_LTPURPLE1; - s_playersettings.pRank.width = 60;//80; - s_playersettings.pRank.textX = 5; - s_playersettings.pRank.textY = 2; - s_playersettings.pRank.itemnames = (const char**)s_playersettings.rankList; //prank_items_formal3; - - s_playersettings.rankTxt.generic.type = MTYPE_FIELD; - s_playersettings.rankTxt.generic.flags = QMF_HIDDEN; - s_playersettings.rankTxt.generic.callback = PlayerSettings_MenuEvent; - s_playersettings.rankTxt.generic.id = ID_RANKTXT; - s_playersettings.rankTxt.field.widthInChars = 16; - s_playersettings.rankTxt.field.maxchars = MAX_NAMELENGTH; - s_playersettings.rankTxt.generic.x = 205 + 12 + UI_ProportionalStringWidth( s_playersettings.rankList[s_playersettings.numRanks], UI_SMALLFONT );//315; - s_playersettings.rankTxt.generic.y = y+3; - s_playersettings.rankTxt.field.style = UI_SMALLFONT; - s_playersettings.rankTxt.field.titleEnum = MBT_OTHER; - s_playersettings.rankTxt.field.titlecolor = CT_LTGOLD1; - s_playersettings.rankTxt.field.textcolor = CT_DKGOLD1; - s_playersettings.rankTxt.field.textcolor2 = CT_LTGOLD1; - - y += 25; - s_playersettings.age.generic.type = MTYPE_FIELD; - s_playersettings.age.generic.id = ID_AGE; - s_playersettings.age.generic.callback = PlayerSettings_MenuEvent; - s_playersettings.age.field.widthInChars = MAX_NAMELENGTH; - s_playersettings.age.field.maxchars = MAX_NAMELENGTH; - s_playersettings.age.generic.x = 115 + 5 + UI_ProportionalStringWidth( menu_button_text[MBT_AGE][0], UI_SMALLFONT );//159; - s_playersettings.age.generic.y = y+3; - s_playersettings.age.field.style = UI_SMALLFONT; - s_playersettings.age.field.titleEnum = MBT_AGE; - s_playersettings.age.field.titlecolor = CT_LTGOLD1; - s_playersettings.age.field.textcolor = CT_DKGOLD1; - s_playersettings.age.field.textcolor2 = CT_LTGOLD1; - - y+=25; - s_playersettings.race.generic.type = MTYPE_FIELD; - s_playersettings.race.generic.id = ID_RACE; - s_playersettings.race.generic.callback = PlayerSettings_MenuEvent; - s_playersettings.race.field.widthInChars = MAX_NAMELENGTH; - s_playersettings.race.field.maxchars = MAX_NAMELENGTH; - s_playersettings.race.generic.x = 115 + 5 + UI_ProportionalStringWidth( menu_button_text[MBT_RACE][0], UI_SMALLFONT );//159; - s_playersettings.race.generic.y = y; - s_playersettings.race.field.style = UI_SMALLFONT; - s_playersettings.race.field.titleEnum = MBT_RACE; - s_playersettings.race.field.titlecolor = CT_LTGOLD1; - s_playersettings.race.field.textcolor = CT_DKGOLD1; - s_playersettings.race.field.textcolor2 = CT_LTGOLD1; - - y+=25; - s_playersettings.height.generic.type = MTYPE_SLIDER; - s_playersettings.height.generic.x = 115+90; //162 - s_playersettings.height.generic.y = y; - s_playersettings.height.generic.flags = QMF_SMALLFONT; - s_playersettings.height.generic.id = ID_HEIGHT; - s_playersettings.height.generic.callback = PlayerSettings_MenuEvent; - s_playersettings.height.defvalue = 1.0; - s_playersettings.height.minvalue = 0.9; - s_playersettings.height.maxvalue = 1.15; - s_playersettings.height.color = CT_DKPURPLE1; - s_playersettings.height.color2 = CT_LTPURPLE1; - s_playersettings.height.generic.name = PIC_MONBAR2; - s_playersettings.height.width = 256; - s_playersettings.height.height = 32; - s_playersettings.height.focusWidth = 145; //145 - s_playersettings.height.focusHeight = 18; - s_playersettings.height.picName = (char*)GRAPHIC_SQUARE; - s_playersettings.height.picX = 115; - s_playersettings.height.picY = y; - s_playersettings.height.picWidth = 85; //MENU_BUTTON_MED_WIDTH + 21; - s_playersettings.height.picHeight = MENU_BUTTON_MED_HEIGHT; - s_playersettings.height.textX = MENU_BUTTON_TEXT_X; - s_playersettings.height.textY = MENU_BUTTON_TEXT_Y; - s_playersettings.height.textEnum = MBT_HEIGHT; - s_playersettings.height.textcolor = CT_BLACK; - s_playersettings.height.textcolor2 = CT_WHITE; - s_playersettings.height.thumbName = PIC_SLIDER; - s_playersettings.height.thumbHeight = 32; - s_playersettings.height.thumbWidth = 16; - s_playersettings.height.thumbGraphicWidth = 9; - s_playersettings.height.thumbColor = CT_DKBLUE1; - s_playersettings.height.thumbColor2 = CT_LTBLUE1; - - y+=25; - s_playersettings.weight.generic.type = MTYPE_SLIDER; - s_playersettings.weight.generic.x = 115+90; //162 - s_playersettings.weight.generic.y = y; - s_playersettings.weight.generic.flags = QMF_SMALLFONT; - s_playersettings.weight.generic.callback = PlayerSettings_MenuEvent; - s_playersettings.weight.generic.id = ID_WEIGHT; - s_playersettings.weight.defvalue = 1.0; - s_playersettings.weight.minvalue = 0.9; - s_playersettings.weight.maxvalue = 1.1; - s_playersettings.weight.color = CT_DKPURPLE1; - s_playersettings.weight.color2 = CT_LTPURPLE1; - s_playersettings.weight.generic.name = PIC_MONBAR2; - s_playersettings.weight.width = 256; - s_playersettings.weight.height = 32; - s_playersettings.weight.focusWidth = 145; - s_playersettings.weight.focusHeight = 18; - s_playersettings.weight.picName = (char*)GRAPHIC_SQUARE; - s_playersettings.weight.picX = 115; - s_playersettings.weight.picY = y; - s_playersettings.weight.picWidth = 85; //MENU_BUTTON_MED_WIDTH + 21; - s_playersettings.weight.picHeight = MENU_BUTTON_MED_HEIGHT; - s_playersettings.weight.textX = MENU_BUTTON_TEXT_X; - s_playersettings.weight.textY = MENU_BUTTON_TEXT_Y; - s_playersettings.weight.textEnum = MBT_WEIGHT; - s_playersettings.weight.textcolor = CT_BLACK; - s_playersettings.weight.textcolor2 = CT_WHITE; - s_playersettings.weight.thumbName = PIC_SLIDER; - s_playersettings.weight.thumbHeight = 32; - s_playersettings.weight.thumbWidth = 16; - s_playersettings.weight.thumbGraphicWidth = 9; - s_playersettings.weight.thumbColor = CT_DKBLUE1; - s_playersettings.weight.thumbColor2 = CT_LTBLUE1; - - if ( s_playersettings.numRankSets > 1 ) { - s_playersettings.rankSets.generic.type = MTYPE_SPINCONTROL; - s_playersettings.rankSets.generic.flags = QMF_HIGHLIGHT_IF_FOCUS; - s_playersettings.rankSets.generic.id = ID_RANKSETS; - s_playersettings.rankSets.generic.callback = PlayerSettings_MenuEvent; - s_playersettings.rankSets.generic.x = 257;//134; - s_playersettings.rankSets.generic.y = 391;//233; - s_playersettings.rankSets.textEnum = MBT_RANKSETS; - s_playersettings.rankSets.textcolor = CT_BLACK; - s_playersettings.rankSets.textcolor2 = CT_WHITE; - s_playersettings.rankSets.color = CT_DKPURPLE1; - s_playersettings.rankSets.color2 = CT_LTPURPLE1; - s_playersettings.rankSets.width = 80;//80; - s_playersettings.rankSets.textX = 5; - s_playersettings.rankSets.textY = 2; - s_playersettings.rankSets.itemnames = (const char**)s_playersettings.rankSetList; //rankSets_items_formal3; - } - - if ( s_playersettings.numClassSets > 1 ) - { - s_playersettings.classSets.generic.type = MTYPE_SPINCONTROL; - s_playersettings.classSets.generic.flags = QMF_HIGHLIGHT_IF_FOCUS; - s_playersettings.classSets.generic.id = ID_CLASSSETS; - s_playersettings.classSets.generic.callback = PlayerSettings_MenuEvent; - s_playersettings.classSets.generic.x = 257;//134; - s_playersettings.classSets.generic.y = 415;//233; - s_playersettings.classSets.textEnum = MBT_CLASSSETS; - s_playersettings.classSets.textcolor = CT_BLACK; - s_playersettings.classSets.textcolor2 = CT_WHITE; - s_playersettings.classSets.color = CT_DKPURPLE1; - s_playersettings.classSets.color2 = CT_LTPURPLE1; - s_playersettings.classSets.width = 80;//80; - s_playersettings.classSets.textX = 5; - s_playersettings.classSets.textY = 2; - s_playersettings.classSets.itemnames = (const char**)s_playersettings.classSetList; //rankSets_items_formal3; - } - - s_playersettings.commit.generic.type = MTYPE_BITMAP; - s_playersettings.commit.generic.flags = (QMF_GRAYED | QMF_INACTIVE); - s_playersettings.commit.generic.x = 196; - s_playersettings.commit.generic.y = 314; - s_playersettings.commit.generic.name = GRAPHIC_SQUARE; - s_playersettings.commit.generic.callback = PlayerSettings_MenuEvent; - s_playersettings.commit.generic.id = ID_COMMIT; - s_playersettings.commit.width = 133; - s_playersettings.commit.height = 18; - s_playersettings.commit.color = CT_VDKRED1; - s_playersettings.commit.color2 = CT_DKRED1; - s_playersettings.commit.textX = MENU_BUTTON_TEXT_X; - s_playersettings.commit.textY = MENU_BUTTON_TEXT_Y; - s_playersettings.commit.textcolor = CT_BLACK; - s_playersettings.commit.textcolor2 = CT_WHITE; - s_playersettings.commit.textEnum = MBT_COMMIT; - - s_playersettings.data.generic.type = MTYPE_BITMAP; - s_playersettings.data.generic.name = BUTTON_GRAPHIC_LONGRIGHT; - s_playersettings.data.generic.flags = QMF_GRAYED; - s_playersettings.data.generic.id = ID_DATA; - s_playersettings.data.generic.callback = PlayerSettings_MenuEvent; - s_playersettings.data.generic.x = 482; - s_playersettings.data.generic.y = 391; - s_playersettings.data.width = 128; - s_playersettings.data.height = 64; - s_playersettings.data.width = MENU_BUTTON_MED_WIDTH; - s_playersettings.data.height = MENU_BUTTON_MED_HEIGHT; - s_playersettings.data.color = CT_DKPURPLE1; - s_playersettings.data.color2 = CT_LTPURPLE1; - s_playersettings.data.textX = 5; - s_playersettings.data.textY = 2; - s_playersettings.data.textEnum = MBT_PLAYERDATA; - s_playersettings.data.textcolor = CT_BLACK; - s_playersettings.data.textcolor2 = CT_WHITE; - - s_playersettings.model.generic.type = MTYPE_BITMAP; - s_playersettings.model.generic.name = BUTTON_GRAPHIC_LONGRIGHT; - s_playersettings.model.generic.flags = QMF_HIGHLIGHT_IF_FOCUS; - s_playersettings.model.generic.id = ID_MODEL; - s_playersettings.model.generic.callback = PlayerSettings_MenuEvent; - s_playersettings.model.generic.x = 482; - s_playersettings.model.generic.y = 415; - s_playersettings.model.width = MENU_BUTTON_MED_WIDTH; - s_playersettings.model.height = MENU_BUTTON_MED_HEIGHT; - s_playersettings.model.color = CT_DKPURPLE1; - s_playersettings.model.color2 = CT_LTPURPLE1; - s_playersettings.model.textX = 5; - s_playersettings.model.textY = 2; - s_playersettings.model.textEnum = MBT_CHANGEMODEL; - s_playersettings.model.textcolor = CT_BLACK; - s_playersettings.model.textcolor2 = CT_WHITE; - - s_playersettings.player.generic.type = MTYPE_BITMAP; - s_playersettings.player.generic.flags = QMF_SILENT; - s_playersettings.player.generic.ownerdraw = PlayerSettings_DrawPlayer; - s_playersettings.player.generic.callback = PlayerSettings_SpinPlayer; - s_playersettings.player.generic.x = 439; //400 - s_playersettings.player.generic.y = 80; //20 - s_playersettings.player.width = 151; //32*7.3 - s_playersettings.player.height = 291; //56*7.3 - - s_playersettings.item_null.generic.type = MTYPE_BITMAP; - s_playersettings.item_null.generic.flags = QMF_LEFT_JUSTIFY|QMF_MOUSEONLY|QMF_SILENT; - s_playersettings.item_null.generic.x = 0; - s_playersettings.item_null.generic.y = 0; - s_playersettings.item_null.width = 640; - s_playersettings.item_null.height = 480; - - Menu_AddItem( &s_playersettings.menu, &s_playersettings.mainmenu); - Menu_AddItem( &s_playersettings.menu, &s_playersettings.back); - Menu_AddItem( &s_playersettings.menu, &s_playersettings.name ); - Menu_AddItem( &s_playersettings.menu, &s_playersettings.classTxt ); - Menu_AddItem( &s_playersettings.menu, &s_playersettings.pClass ); - Menu_AddItem( &s_playersettings.menu, &s_playersettings.rankTxt ); - Menu_AddItem( &s_playersettings.menu, &s_playersettings.pRank ); - Menu_AddItem( &s_playersettings.menu, &s_playersettings.age ); - Menu_AddItem( &s_playersettings.menu, &s_playersettings.race ); - Menu_AddItem( &s_playersettings.menu, &s_playersettings.height ); - Menu_AddItem( &s_playersettings.menu, &s_playersettings.weight ); - Menu_AddItem( &s_playersettings.menu, &s_playersettings.commit ); - - Menu_AddItem( &s_playersettings.menu, &s_playersettings.model ); - Menu_AddItem( &s_playersettings.menu, &s_playersettings.data ); - - if ( s_playersettings.numRankSets > 1 && !ingameFlag ) { - Menu_AddItem( &s_playersettings.menu, &s_playersettings.rankSets ); - } - - if ( s_playersettings.numClassSets > 1 && !ingameFlag ) { - Menu_AddItem( &s_playersettings.menu, &s_playersettings.classSets ); - } - - Menu_AddItem( &s_playersettings.menu, &s_playersettings.player ); - - //PlayerSettings_AffectModel(); - - PlayerSettings_SetMenuItems(); - - if ( s_playersettings.numRankSets > 1 && !ingameFlag ) { - s_playersettings.rankSets.generic.flags &= ~QMF_HIDDEN; - - for ( i = 0; i < s_playersettings.rankSets.numitems; i++ ) { - if ( !Q_stricmp( UI_Cvar_VariableString( "ui_currentRankSet" ), s_playersettings.rankSetList[i] ) ) { - s_playersettings.rankSets.curvalue = i; - break; - } - } - - if ( s_playersettings.rankSetList[s_playersettings.rankSets.curvalue][0] ) - trap_Cvar_Set( "ui_currentRankSet", s_playersettings.rankSetList[s_playersettings.rankSets.curvalue] ); - - UI_InitRanksData( UI_Cvar_VariableString( "ui_currentRankSet" ) ); - s_playersettings.numRanks = UI_PopulateRanksArray( s_playersettings.rankList ); - - s_playersettings.pRank.numitems = s_playersettings.numRanks; - } - - if ( s_playersettings.numClassSets > 1 && !ingameFlag ) { - s_playersettings.classSets.generic.flags &= ~QMF_HIDDEN; - - for ( i = 0; i < s_playersettings.classSets.numitems; i++ ) { - if ( !Q_stricmp( UI_Cvar_VariableString( "ui_currentClassSet" ), s_playersettings.classSetList[i] ) ) { - s_playersettings.classSets.curvalue = i; - break; - } - } - - if ( s_playersettings.classSetList[s_playersettings.rankSets.curvalue][0] ) - trap_Cvar_Set( "ui_currentClassSet", s_playersettings.classSetList[s_playersettings.classSets.curvalue] ); - - UI_InitRanksData( UI_Cvar_VariableString( "ui_currentClassSet" ) ); - s_playersettings.numClasses = UI_PopulateClassArray( s_playersettings.classNameList ); - - s_playersettings.pClass.numitems = s_playersettings.numClasses; - } - UI_LogFuncEnd(); -} - - -/* -================= -PlayerSettings_Cache -================= -*/ -void PlayerSettings_Cache( void ) -{ - UI_LogFuncBegin(); - s_playersettings.corner_ul_4_4 = trap_R_RegisterShaderNoMip("menu/common/corner_ul_4_4"); - s_playersettings.corner_ur_4_4 = trap_R_RegisterShaderNoMip("menu/common/corner_ur_4_4"); - s_playersettings.corner_ll_4_4 = trap_R_RegisterShaderNoMip("menu/common/corner_ll_4_4"); - s_playersettings.corner_ll_4_18 = trap_R_RegisterShaderNoMip("menu/common/corner_ll_4_18"); - s_playersettings.corner_lr_4_18 = trap_R_RegisterShaderNoMip("menu/common/corner_lr_4_18"); - - trap_R_RegisterShaderNoMip(PIC_MONBAR2); - trap_R_RegisterShaderNoMip(PIC_SLIDER); - UI_LogFuncEnd(); -} - - -/* -================= -UI_PlayerSettingsMenu -================= -*/ -void UI_PlayerSettingsMenu(int32_t menuFrom) -{ - UI_LogFuncBegin(); - PlayerSettings_MenuInit(menuFrom); - UI_PushMenu( &s_playersettings.menu ); - UI_LogFuncEnd(); -} - +// Copyright (C) 1999-2000 Id Software, Inc. +// +#include "ui_local.h" +#include "ui_logger.h" + +enum ui_playersettingsIDs_e { + ID_NAME = 9, + ID_CLASS, + ID_RANK, + ID_EFFECTS, + ID_BACK, + + // If this gets changed, also change it in ui_playermodel + ID_MODEL, + ID_DATA, + ID_MAINMENU, + ID_INGAMEMENU, + + ID_CLASSTXT, + ID_RANKTXT, + ID_AGE, + ID_RACE, + ID_HEIGHT, + ID_WEIGHT, + + ID_RANKSETS, + ID_CLASSSETS, + + ID_COMMIT, + + //ID_LOADPROFILE, + //ID_SAVEPROFILE +}; + +enum ui_playersettingsLimits_e { + MAX_PROFILES = 64 +}; + +static const char PIC_MONBAR2[] = "menu/common/monbar_2.tga"; +static const char PIC_SLIDER[] = "menu/common/slider.tga"; + +extern sfxHandle_t menu_out_sound; + +static const char PROFILE_PATH[] = "profiles"; + +static void PlayerSettings_SetMenuItems(void); +//TiM - Ermm.... +//We COULD actually base these directly off the cvar values... probably a bit of a mem saver then lol + +typedef struct { + //char name[36]; + int32_t classIndex; + int32_t rankIndex; + + //char age[36]; + //char race[36]; + + //float height; + //float weight; +} initialData_t; + +typedef struct { + menuframework_s menu; + + int32_t prevMenu; + + //list data + char profileList[MAX_PROFILES][32]; + char* profileListPtr[MAX_PROFILES]; + + //profile loader + /*int32_t numProfiles; + menulist_s profiles; + menubitmap_s loadProfile; + + //profile saver + menufield_s profileName; + menubitmap_s saveProfile;*/ + + menubitmap_s player; + menubitmap_s mainmenu; + menubitmap_s back; + menufield_s name; + + menulist_s pClass; //Menu - Class Spin + menufield_s classTxt; //Menu - Class manual input - coz of servers changing the name + menulist_s pRank; //Menu - Rank Spin + menufield_s rankTxt; //Menu - Rank manual input. What the hey lol + menufield_s age; //Menu - Ye olde player + menufield_s race; //Menu - Ye alien player + menuslider_s height; //Menu - Ye pipsqueak player + menuslider_s weight; //Menu - Ye fatass player + + menulist_s rankSets; //If we have more than one rankset, add this scroller so players can choose what they want + menulist_s classSets; + + menubitmap_s commit; //TiM - Manually have to confirm change now. Makes stuff feel more secure. :) + + menubitmap_s model; + menubitmap_s data; + menubitmap_s item_null; + + qhandle_t corner_ul_4_4; + qhandle_t corner_ur_4_4; + qhandle_t corner_ll_4_4; + qhandle_t corner_ll_4_18; + qhandle_t corner_lr_4_18; + + //menutext_s playername; //Menu - PlayerName + qhandle_t fxBasePic; + qhandle_t fxPic[7]; + playerInfo_t playerinfo; + int32_t current_fx; + char playerModel[MAX_QPATH]; + + char *rankList[MAX_RANKS + 1]; //TiM: Local buffer for ranks data ( + 1 slot for 'Other' field + 1 for null terminator) + int32_t numRanks; + char *rankSetList[MAX_RANKSETS + 1]; + int32_t numRankSets; + + qboolean settingsChanged; //if settings have been altered, enable this so as to enable the 'commit' button + qboolean displayChangedSettings; + + initialData_t initData; //TiM | Storage for all our initial data. So if/when we change the data, we'll know exactly when to make the commit button solid + + char *classNameList[MAX_CLASSES + 1]; //+2 = other + null + int32_t numClasses; + + char *classSetList[MAX_CLASSSETS + 1]; + int32_t numClassSets; +} playersettings_t; + +static playersettings_t s_playersettings; + +/* +======================= +PlayerSettings_SettingsAreDifferent + +TiM: Is called each time an action +event is received so as to check to see if any settings +have been changed. If they have, make the 'apply changes' +button appear. +======================= +*/ + +static qboolean PlayerSettings_SettingsAreDifferent(void) { + UI_LogFuncBegin(); + qboolean endResult = qfalse; + + //Name + if (Q_stricmp(s_playersettings.name.field.buffer, UI_Cvar_VariableString("name"))) { + //UI_Logger( LL_DEBUG, "Name changed!\n"); + endResult = qtrue; + } + + //Age + if (Q_stricmp(s_playersettings.age.field.buffer, UI_Cvar_VariableString("age"))) { + //UI_Logger( LL_DEBUG, "Age changed!\n"); + endResult = qtrue; + } + + //Race + if (Q_stricmp(s_playersettings.race.field.buffer, UI_Cvar_VariableString("race"))) { + //UI_Logger( LL_DEBUG, "Race changed!\n"); + endResult = qtrue; + } + + //playerClass field + if (s_playersettings.pClass.curvalue != s_playersettings.initData.classIndex) { + //UI_Logger( LL_DEBUG, "Class changed!\n"); + endResult = qtrue; + } + + //playerRank field + if (s_playersettings.pRank.curvalue != s_playersettings.initData.rankIndex) { + //UI_Logger( LL_DEBUG, "Rank changed!\n"); + endResult = qtrue; + } + + //height... hackily normalized lol + if (Q_stricmp(va("%2.5f", s_playersettings.height.curvalue), va("%2.5f", atof(UI_Cvar_VariableString("height"))))) { + //UI_Logger( LL_DEBUG, "Height changed!\n"); + endResult = qtrue; + } + + //weight... see above rofl + if (Q_stricmp(va("%2.5f", s_playersettings.weight.curvalue), va("%2.5f", atof(UI_Cvar_VariableString("weight"))))) { + //UI_Logger( LL_DEBUG, "Weight changed!\n"); + endResult = qtrue; + } + + //Class Text field + if (s_playersettings.pClass.curvalue == s_playersettings.numClasses && Q_stricmp(s_playersettings.classTxt.field.buffer, UI_Cvar_VariableString("ui_playerClass"))) { + //UI_Logger( LL_DEBUG, "Class text changed!\n"); + endResult = qtrue; + } + + //Rank Text field + if (s_playersettings.pRank.curvalue == s_playersettings.numRanks && Q_stricmp(s_playersettings.rankTxt.field.buffer, UI_Cvar_VariableString("ui_playerRank"))) { + //UI_Logger( LL_DEBUG, "Rank text changed!\n"); + endResult = qtrue; + } + UI_LogFuncEnd(); + return endResult; +} + +/* +================= +PlayerSettings_DrawPlayer +RPG-X: TiM - Modified it so it actually fit in the box, +and had an appropriately set FOV +================= +*/ +static void PlayerSettings_DrawPlayer(void *self) +{ + UI_LogFuncBegin(); + menubitmap_s *b; + vec3_t viewangles; + vec3_t origin = { -40, 2.5, -4 }; //-3.8 + char buf[MAX_QPATH]; + + viewangles[YAW] = uis.lastYaw; //180 - 30 + viewangles[PITCH] = 0; + viewangles[ROLL] = 0; + + trap_Cvar_VariableStringBuffer("model", buf, sizeof(buf)); + + if (Q_stricmp(buf, s_playersettings.playerModel)) { + + UI_PlayerInfo_SetModel(&s_playersettings.playerinfo, buf); + strcpy(s_playersettings.playerModel, buf); + + uis.lastYaw = viewangles[YAW] = 180 - 30; //180 - 30 + } + + UI_PlayerInfo_SetInfo(&s_playersettings.playerinfo, BOTH_WALK1, BOTH_WALK1, viewangles, vec3_origin, WP_0, s_playersettings.height.curvalue, s_playersettings.weight.curvalue, qfalse); + + b = (menubitmap_s*)self; + UI_DrawPlayer((float)b->generic.x, (float)b->generic.y, (float)b->width, (float)b->height, origin, &s_playersettings.playerinfo, (int32_t)(uis.realtime / 1.5)); + + UI_LogFuncEnd(); +} + + +/* +================= +PlayerSettings_SaveChanges +================= +*/ +static void PlayerSettings_SaveChanges(void) +{ + UI_LogFuncBegin(); + // name + trap_Cvar_Set("name", s_playersettings.name.field.buffer); + + //class + if (s_playersettings.pClass.curvalue == s_playersettings.numClasses) { + if (s_playersettings.classTxt.field.buffer[0]) { + if (!ingameFlag) + trap_Cvar_Set("ui_playerClass", s_playersettings.classTxt.field.buffer); + else + trap_Cmd_ExecuteText(EXEC_APPEND, va("class %s\n", s_playersettings.classTxt.field.buffer)); + } + } + else { + if (!ingameFlag) + trap_Cvar_Set("ui_playerClass", uis.classData[s_playersettings.pClass.curvalue].classNameConsole); + else + trap_Cmd_ExecuteText(EXEC_APPEND, va("class %s\n", uis.classData[s_playersettings.pClass.curvalue].classNameConsole)); + } + + //Save current class index to the initData + s_playersettings.initData.classIndex = s_playersettings.pClass.curvalue; + + + //rank + if (s_playersettings.pRank.curvalue == s_playersettings.numRanks) { + if (s_playersettings.rankTxt.field.buffer[0]) { + if (!ingameFlag) + trap_Cvar_Set("ui_playerRank", s_playersettings.rankTxt.field.buffer); + else + trap_Cmd_ExecuteText(EXEC_APPEND, va("rank %s\n", s_playersettings.rankTxt.field.buffer)); + } + } + else { + if (!ingameFlag) + trap_Cvar_Set("ui_playerRank", Q_strlwr(uis.rankSet.rankNames[s_playersettings.pRank.curvalue].consoleName)); + else + trap_Cmd_ExecuteText(EXEC_APPEND, va("rank %s\n", uis.rankSet.rankNames[s_playersettings.pRank.curvalue].consoleName)); + } + + uis.currentRank = s_playersettings.pRank.curvalue; + + //Save teh rank index to the init data set + s_playersettings.initData.rankIndex = s_playersettings.pRank.curvalue; + + //age + trap_Cvar_Set("age", s_playersettings.age.field.buffer); + //race + trap_Cvar_Set("race", s_playersettings.race.field.buffer); + + //height + trap_Cvar_SetValue("height", s_playersettings.height.curvalue); + //weight + trap_Cvar_SetValue("weight", s_playersettings.weight.curvalue); + + //Display the 'applied msg' + s_playersettings.displayChangedSettings = qtrue; + + UI_LogFuncEnd(); +} + + +/* +================= +PlayerSettings_MenuKey +================= +*/ +static sfxHandle_t PlayerSettings_MenuKey(int32_t key) +{ + return Menu_DefaultKey(&s_playersettings.menu, key); +} + + +/* +================= +PlayerSettings_SetMenuItems +================= +*/ +static void PlayerSettings_SetMenuItems(void) +{ + UI_LogFuncBegin(); + int32_t i; + + // Player Name + Q_strncpyz(s_playersettings.name.field.buffer, UI_Cvar_VariableString("name"), sizeof(s_playersettings.name.field.buffer)); + + //Player class + { + qboolean classFound = qfalse; //If we don't find a match, we'll use this to know + + s_playersettings.pClass.curvalue = 0; + + for (i = 0; i < s_playersettings.numClasses; i++) { + if (!Q_stricmp(uis.classData[i].classNameConsole, UI_Cvar_VariableString("ui_playerClass"))) { + s_playersettings.pClass.curvalue = i; + classFound = qtrue; + break; + } + } + + //No class found. Set the field to 'other' and display the text field + if (!classFound) { + s_playersettings.pClass.curvalue = s_playersettings.numClasses;//CLASS_OTHER; + + s_playersettings.classTxt.generic.flags &= ~QMF_HIDDEN; + + memset(&s_playersettings.classTxt.field.buffer, 0, sizeof(s_playersettings.classTxt.field.buffer)); + Q_strncpyz(s_playersettings.classTxt.field.buffer, UI_Cvar_VariableString("ui_playerClass"), sizeof(s_playersettings.classTxt.field.buffer)); + } + + s_playersettings.initData.classIndex = s_playersettings.pClass.curvalue; + } + + + //Player Rank + { + qboolean foundRank = qfalse; //0 is a valid rank, so we'll use this to test instead. + //I would have simply set curvalue to -1 to test, but I was unsure how the controls API would react to a negative value there + + s_playersettings.pRank.curvalue = 0; + + //Loop thru our rank set, and compare what's in the console to it + for (i = 0; i < MAX_RANKS; i++) { + if (!Q_stricmp(UI_Cvar_VariableString("ui_playerRank"), uis.rankSet.rankNames[i].consoleName)) { + s_playersettings.pRank.curvalue = i; + foundRank = qtrue; + break; + } + } + + //TiM - no rank was found, so set our rank field to 'other' + if (!foundRank) { + //set value to the last in the cell + s_playersettings.pRank.curvalue = s_playersettings.numRanks; + + //Init and show the text field control + s_playersettings.rankTxt.generic.flags &= ~QMF_HIDDEN; + + memset(&s_playersettings.rankTxt.field.buffer, 0, sizeof(s_playersettings.rankTxt.field.buffer)); + Q_strncpyz(s_playersettings.rankTxt.field.buffer, UI_Cvar_VariableString("ui_playerRank"), sizeof(s_playersettings.rankTxt.field.buffer)); + } + + s_playersettings.initData.rankIndex = s_playersettings.pRank.curvalue; + } + + + //Player Age + Q_strncpyz(s_playersettings.age.field.buffer, UI_Cvar_VariableString("age"), sizeof(s_playersettings.age.field.buffer)); + + //Player Race + Q_strncpyz(s_playersettings.race.field.buffer, UI_Cvar_VariableString("race"), sizeof(s_playersettings.race.field.buffer)); + + //Player Height + { + float height = trap_Cvar_VariableValue("height"); + + //If height was defined, but filled with no value + //We don't want infinitely flat players rofl + if (!height) + height = 1.0f; + + s_playersettings.height.curvalue = height; + } + + + //Player Weight + { + float weight = trap_Cvar_VariableValue("weight"); + + //If height was defined, but filled with no value + //We don't want infinitely thin players rofl + if (!weight) + weight = 1.0f; + + s_playersettings.weight.curvalue = weight; + } + + UI_LogFuncEnd(); +} + +/* +================= +PlayerSettings_SpinPlayer +================= +*/ +static void PlayerSettings_SpinPlayer(void* ptr, int32_t event) +{ + UI_LogFuncBegin(); + if (event == QM_ACTIVATED) + { + uis.spinView = qtrue; + uis.cursorpx = uis.cursorx; + } + UI_LogFuncEnd(); +} + +/* +================= +PlayerSettings_MenuEvent +================= +*/ +static void PlayerSettings_MenuEvent(void* ptr, int32_t event) +{ + UI_LogFuncBegin(); + if (event != QM_ACTIVATED) + { + UI_LogFuncEnd(); + return; + } + + s_playersettings.displayChangedSettings = qfalse; + s_playersettings.settingsChanged = PlayerSettings_SettingsAreDifferent(); + + switch (((menucommon_s*)ptr)->id) + { + + case ID_MODEL: + UI_PopMenu(); + //PlayerSettings_SaveChanges(); + UI_PlayerModelMenu(s_playersettings.prevMenu); + break; + + case ID_BACK: + //PlayerSettings_SaveChanges(); + UI_PopMenu(); + break; + + case ID_MAINMENU: + //PlayerSettings_SaveChanges(); + UI_MainMenu(); + break; + + case ID_INGAMEMENU: + //PlayerSettings_SaveChanges(); + UI_InGameMenu(); + break; + + case ID_COMMIT: + PlayerSettings_SaveChanges(); + s_playersettings.settingsChanged = qfalse; + break; + + case ID_CLASS: + if (s_playersettings.pClass.curvalue == s_playersettings.numClasses) { + s_playersettings.classTxt.generic.flags &= ~QMF_HIDDEN; + + memset(&s_playersettings.classTxt.field.buffer, 0, sizeof(s_playersettings.classTxt.field.buffer)); + Q_strncpyz(s_playersettings.classTxt.field.buffer, UI_Cvar_VariableString("ui_playerClass"), sizeof(s_playersettings.classTxt.field.buffer)); + } + else { + memset(&s_playersettings.classTxt.field.buffer, 0, sizeof(s_playersettings.classTxt.field.buffer)); + s_playersettings.classTxt.generic.flags |= QMF_HIDDEN; + } + + break; + + case ID_RANK: + if (s_playersettings.pRank.curvalue == s_playersettings.numRanks) { + s_playersettings.rankTxt.generic.flags &= ~QMF_HIDDEN; + + memset(&s_playersettings.rankTxt.field.buffer, 0, sizeof(s_playersettings.rankTxt.field.buffer)); + Q_strncpyz(s_playersettings.rankTxt.field.buffer, UI_Cvar_VariableString("ui_playerRank"), sizeof(s_playersettings.rankTxt.field.buffer)); + } + else { + memset(&s_playersettings.rankTxt.field.buffer, 0, sizeof(s_playersettings.rankTxt.field.buffer)); + s_playersettings.rankTxt.generic.flags |= QMF_HIDDEN; + } + break; + + case ID_RANKSETS: + if (!ingameFlag) { + if (s_playersettings.rankSetList[s_playersettings.rankSets.curvalue][0]) + trap_Cvar_Set("ui_currentRankSet", s_playersettings.rankSetList[s_playersettings.rankSets.curvalue]); + + UI_InitRanksData(UI_Cvar_VariableString("ui_currentRankSet")); + s_playersettings.numRanks = UI_PopulateRanksArray(s_playersettings.rankList); + + s_playersettings.pRank.numitems = s_playersettings.numRanks; + } + break; + + case ID_CLASSSETS: + if (!ingameFlag) { + if (s_playersettings.classSetList[s_playersettings.classSets.curvalue][0]) + trap_Cvar_Set("ui_currentClassSet", s_playersettings.classSetList[s_playersettings.classSets.curvalue]); + + UI_InitClassData(UI_Cvar_VariableString("ui_currentClassSet")); + s_playersettings.numClasses = UI_PopulateClassArray(s_playersettings.classNameList); + + s_playersettings.pClass.numitems = s_playersettings.numClasses; + } + break; + + } + UI_LogFuncEnd(); +} + + +/* +================= +PlayerSettingsMenu_Graphics +================= +*/ +void PlayerSettingsMenu_Graphics(void) +{ + UI_LogFuncBegin(); + // Draw the basic screen layout + UI_MenuFrame2(&s_playersettings.menu); + + trap_R_SetColor(colorTable[CT_LTBROWN1]); + UI_DrawHandlePic(30, 203, 47, 186, uis.whiteShader); // Middle left line + + //TiM - eh later + // Frame around model pictures + trap_R_SetColor(colorTable[CT_LTORANGE]); + UI_DrawHandlePic(97, 94, 8, -32, s_playersettings.corner_ll_4_18); // UL Corner y = 139 x=114 + UI_DrawHandlePic(97, 312, 8, 32, s_playersettings.corner_ll_4_18); // LL Corner x=114 + UI_DrawHandlePic(421, 94, 8, -32, s_playersettings.corner_lr_4_18); // UR Corner y= 139 + UI_DrawHandlePic(421, 312, 8, 32, s_playersettings.corner_lr_4_18); // LR Corner + UI_DrawHandlePic(97, 125, 4, 188, uis.whiteShader); // Left side x=114 y=170 h=97 + UI_DrawHandlePic(424, 125, 4, 188, uis.whiteShader); // Right side + UI_DrawHandlePic(103, 106, 320, 18, uis.whiteShader); // Top y = 151 x =120 + //UI_DrawHandlePic( 103, 314, 310, 18, uis.whiteShader); // Bottom + UI_DrawHandlePic(103, 314, 90, 18, uis.whiteShader); //Bottom - Left + UI_DrawHandlePic(332, 314, 90, 18, uis.whiteShader); //Bottom - Right + + //line + //UI_DrawHandlePic( 97, 383, 331, 2, uis.whiteShader ); + + UI_DrawProportionalString(109, 108, menu_normal_text[MNT_CHANGEPLAYER], UI_SMALLFONT, colorTable[CT_BLACK]); // Top + + trap_R_SetColor(colorTable[CT_DKGREY2]); + UI_DrawHandlePic(439, 79, 151, 295, uis.whiteShader); // Background + + // Frame around player model + trap_R_SetColor(colorTable[CT_LTORANGE]); + UI_DrawHandlePic(435, 50, 8, -32, s_playersettings.corner_ll_4_18); // UL Corner + UI_DrawHandlePic(435, 369, 8, 8, s_playersettings.corner_ll_4_4); // LL Corner + UI_DrawHandlePic(440, 62, 150, 18, uis.whiteShader); // Top + UI_DrawHandlePic(435, 79, 4, 295, uis.whiteShader); // Left side + UI_DrawHandlePic(440, 371, 150, 4, uis.whiteShader); // Bottom + + // Left rounded ends for buttons + trap_R_SetColor(colorTable[s_playersettings.mainmenu.color]); + UI_DrawHandlePic(s_playersettings.mainmenu.generic.x - 14, s_playersettings.mainmenu.generic.y, + MENU_BUTTON_MED_HEIGHT, MENU_BUTTON_MED_HEIGHT, uis.graphicButtonLeftEnd); + + trap_R_SetColor(colorTable[s_playersettings.back.color]); + UI_DrawHandlePic(s_playersettings.back.generic.x - 14, s_playersettings.back.generic.y, + MENU_BUTTON_MED_HEIGHT, MENU_BUTTON_MED_HEIGHT, uis.graphicButtonLeftEnd); + + trap_R_SetColor(colorTable[s_playersettings.data.color]); + UI_DrawHandlePic(s_playersettings.data.generic.x - 14, s_playersettings.data.generic.y, + MENU_BUTTON_MED_HEIGHT, MENU_BUTTON_MED_HEIGHT, uis.graphicButtonLeftEnd); + + trap_R_SetColor(colorTable[s_playersettings.model.color]); + UI_DrawHandlePic(s_playersettings.model.generic.x - 14, s_playersettings.model.generic.y, + MENU_BUTTON_MED_HEIGHT, MENU_BUTTON_MED_HEIGHT, uis.graphicButtonLeftEnd); + + trap_R_SetColor(colorTable[s_playersettings.mainmenu.color]); + UI_DrawHandlePic(s_playersettings.mainmenu.generic.x - 14, s_playersettings.mainmenu.generic.y, + MENU_BUTTON_MED_HEIGHT, MENU_BUTTON_MED_HEIGHT, uis.graphicButtonLeftEnd); + + UI_DrawProportionalString(74, 28, "881", UI_RIGHT | UI_TINYFONT, colorTable[CT_BLACK]); + UI_DrawProportionalString(74, 150, "2445", UI_RIGHT | UI_TINYFONT, colorTable[CT_BLACK]); + UI_DrawProportionalString(74, 206, "600", UI_RIGHT | UI_TINYFONT, colorTable[CT_BLACK]); + UI_DrawProportionalString(74, 395, "3-44", UI_RIGHT | UI_TINYFONT, colorTable[CT_BLACK]); + + //TiM - Player weight and height parameters + { + float ht = s_playersettings.height.curvalue * (float)BASE_HEIGHT; + float wt = s_playersettings.weight.curvalue * s_playersettings.height.curvalue * (float)BASE_WEIGHT; + char htStr[12]; + char wtStr[12]; + + if (s_playersettings.playerinfo.gender == GENDER_FEMALE) + wt *= (float)FEMALE_OFFSET; + + Com_sprintf(htStr, sizeof(htStr), "%4.2f%s", ht, HEIGHT_UNIT); + Com_sprintf(wtStr, sizeof(wtStr), "%4.2f%s", wt, WEIGHT_UNIT); + + UI_DrawProportionalString(359, 259, htStr, UI_LEFT | UI_SMALLFONT, colorTable[CT_LTGOLD1]); + UI_DrawProportionalString(359, 285, wtStr, UI_LEFT | UI_SMALLFONT, colorTable[CT_LTGOLD1]); + } + + if (s_playersettings.settingsChanged) { + s_playersettings.commit.generic.flags &= ~(QMF_GRAYED | QMF_INACTIVE); + s_playersettings.commit.generic.flags |= (QMF_HIGHLIGHT_IF_FOCUS); + } + else { + s_playersettings.commit.generic.flags = (QMF_GRAYED | QMF_INACTIVE); + } + + { + int32_t y = 338; + + if (s_playersettings.rankSets.numitems > 1) + y += 24; + + if (s_playersettings.displayChangedSettings) + UI_DrawProportionalString(260, y, menu_normal_text[MNT_CHANGEAPPLIED], UI_CENTER | UI_SMALLFONT, colorTable[CT_LTGOLD1]); + } + + UI_DrawProportionalString(444, 63, s_playersettings.name.field.buffer, UI_LEFT | UI_SMALLFONT, colorTable[CT_WHITE]); + + UI_LogFuncEnd(); + +} + +/* +================= +PlayerSettings_MenuDraw +================= +*/ +static void PlayerSettings_MenuDraw(void) +{ + UI_LogFuncBegin(); + PlayerSettingsMenu_Graphics(); + Menu_Draw(&s_playersettings.menu); + UI_LogFuncEnd(); +} + + +/* +================= +PlayerSettings_MenuInit +================= +*/ +static void PlayerSettings_MenuInit(int32_t menuFrom) +{ + UI_LogFuncBegin(); + int32_t y; + int32_t i; + + memset(&s_playersettings, 0, sizeof(playersettings_t)); + + s_playersettings.prevMenu = menuFrom; + + PlayerSettings_Cache(); + + //PlayerSettings_LoadProfiles(); + + if (ingameFlag) { + char info[MAX_TOKEN_CHARS]; + + trap_GetConfigString(CS_SERVERINFO, info, sizeof(info)); + UI_InitRanksData(Info_ValueForKey(info, "rpg_rankSet")); + UI_InitClassData(Info_ValueForKey(info, "rpg_classSet")); + + //UI_LoadClassString(); + } + + //load classes + s_playersettings.numClasses = UI_PopulateClassArray(s_playersettings.classNameList); + + //load class sets + s_playersettings.numClassSets = UI_PopulateClassSetArray(s_playersettings.classSetList); + s_playersettings.classSetList[s_playersettings.numClassSets] = 0; + + //Fill teh ranks array with the current loaded set and add 'other' to the end + s_playersettings.numRanks = UI_PopulateRanksArray(s_playersettings.rankList); + //s_playersettings.rankList[s_playersettings.numRanks] = "Other"; + s_playersettings.numRankSets = UI_PopulateRankSetArray(s_playersettings.rankSetList); + + s_playersettings.menu.key = PlayerSettings_MenuKey; + s_playersettings.menu.wrapAround = qtrue; + s_playersettings.menu.fullscreen = qtrue; + s_playersettings.menu.draw = PlayerSettings_MenuDraw; + s_playersettings.menu.descX = MENU_DESC_X; + s_playersettings.menu.descY = MENU_DESC_Y; + s_playersettings.menu.titleX = MENU_TITLE_X; + s_playersettings.menu.titleY = MENU_TITLE_Y; + s_playersettings.menu.titleI = MNT_CHANGEPLAYER_TITLE; + s_playersettings.menu.footNoteEnum = MNT_CHANGEPLAYER; + + + s_playersettings.mainmenu.generic.type = MTYPE_BITMAP; + s_playersettings.mainmenu.generic.flags = QMF_HIGHLIGHT_IF_FOCUS; + s_playersettings.mainmenu.generic.x = 110; + s_playersettings.mainmenu.generic.y = 391; + s_playersettings.mainmenu.generic.name = BUTTON_GRAPHIC_LONGRIGHT; + s_playersettings.mainmenu.generic.callback = PlayerSettings_MenuEvent; + s_playersettings.mainmenu.width = MENU_BUTTON_MED_WIDTH; + s_playersettings.mainmenu.height = MENU_BUTTON_MED_HEIGHT; + s_playersettings.mainmenu.color = CT_DKPURPLE1; + s_playersettings.mainmenu.color2 = CT_LTPURPLE1; + + if (!ingameFlag) + { + s_playersettings.mainmenu.textEnum = MBT_MAINMENU; + s_playersettings.mainmenu.generic.id = ID_MAINMENU; + } + else + { + s_playersettings.mainmenu.textEnum = MBT_INGAMEMENU; + s_playersettings.mainmenu.generic.id = ID_INGAMEMENU; + } + + s_playersettings.mainmenu.textX = MENU_BUTTON_TEXT_X; + s_playersettings.mainmenu.textY = MENU_BUTTON_TEXT_Y; + s_playersettings.mainmenu.textcolor = CT_BLACK; + s_playersettings.mainmenu.textcolor2 = CT_WHITE; + + s_playersettings.back.generic.type = MTYPE_BITMAP; + s_playersettings.back.generic.flags = QMF_HIGHLIGHT_IF_FOCUS; + s_playersettings.back.generic.x = 110; + s_playersettings.back.generic.y = 415; + s_playersettings.back.generic.name = BUTTON_GRAPHIC_LONGRIGHT; + s_playersettings.back.generic.id = ID_BACK; + s_playersettings.back.generic.callback = PlayerSettings_MenuEvent; + s_playersettings.back.width = MENU_BUTTON_MED_WIDTH; + s_playersettings.back.height = MENU_BUTTON_MED_HEIGHT; + s_playersettings.back.color = CT_DKPURPLE1; + s_playersettings.back.color2 = CT_LTPURPLE1; + s_playersettings.back.textX = MENU_BUTTON_TEXT_X; + s_playersettings.back.textY = MENU_BUTTON_TEXT_Y; + s_playersettings.back.textEnum = MBT_BACK; + s_playersettings.back.textcolor = CT_BLACK; + s_playersettings.back.textcolor2 = CT_WHITE; + + y = 134;//144; + s_playersettings.name.generic.type = MTYPE_FIELD; + s_playersettings.name.field.widthInChars = MAX_NAMELENGTH; + s_playersettings.name.field.maxchars = MAX_NAMELENGTH; + s_playersettings.name.generic.id = ID_NAME; + s_playersettings.name.generic.callback = PlayerSettings_MenuEvent; + s_playersettings.name.generic.x = 115 + 5 + UI_ProportionalStringWidth(menu_button_text[MBT_PLAYER_NAME][0], UI_SMALLFONT);//159;//180; + s_playersettings.name.generic.y = y;//182; + s_playersettings.name.field.style = UI_SMALLFONT; + s_playersettings.name.field.titleEnum = MBT_PLAYER_NAME; + s_playersettings.name.field.titlecolor = CT_LTGOLD1; + s_playersettings.name.field.textcolor = CT_DKGOLD1; + s_playersettings.name.field.textcolor2 = CT_LTGOLD1; + + y += 25;//3 * PROP_HEIGHT; + s_playersettings.pClass.generic.type = MTYPE_SPINCONTROL; + s_playersettings.pClass.generic.flags = QMF_HIGHLIGHT_IF_FOCUS; + s_playersettings.pClass.generic.id = ID_CLASS; + s_playersettings.pClass.generic.callback = PlayerSettings_MenuEvent; + s_playersettings.pClass.generic.x = 113;//134; + s_playersettings.pClass.generic.y = y;//207; + s_playersettings.pClass.numitems = MAX_CLASSES; + s_playersettings.pClass.textEnum = MBT_CLASS; + s_playersettings.pClass.textcolor = CT_BLACK; + s_playersettings.pClass.textcolor2 = CT_WHITE; + s_playersettings.pClass.color = CT_DKPURPLE1; + s_playersettings.pClass.color2 = CT_LTPURPLE1; + s_playersettings.pClass.width = 60;//80; + s_playersettings.pClass.textX = 5; + s_playersettings.pClass.textY = 2; + s_playersettings.pClass.itemnames = (const char **)s_playersettings.classNameList;//playerClassList; + + s_playersettings.classTxt.generic.type = MTYPE_FIELD; + s_playersettings.classTxt.generic.flags = QMF_HIDDEN; + s_playersettings.classTxt.generic.callback = PlayerSettings_MenuEvent; + s_playersettings.classTxt.generic.id = ID_CLASSTXT; + s_playersettings.classTxt.field.widthInChars = 16; + s_playersettings.classTxt.field.maxchars = MAX_NAMELENGTH; + s_playersettings.classTxt.generic.x = 205 + 12 + UI_ProportionalStringWidth("Other", UI_SMALLFONT);//315;//159;//180; + s_playersettings.classTxt.generic.y = y + 3;//118;//182; + s_playersettings.classTxt.field.style = UI_SMALLFONT; + s_playersettings.classTxt.field.titleEnum = MBT_OTHER; + s_playersettings.classTxt.field.titlecolor = CT_LTGOLD1; + s_playersettings.classTxt.field.textcolor = CT_DKGOLD1; + s_playersettings.classTxt.field.textcolor2 = CT_LTGOLD1; + + y += 25; + s_playersettings.pRank.generic.type = MTYPE_SPINCONTROL; + s_playersettings.pRank.generic.flags = QMF_HIGHLIGHT_IF_FOCUS; + s_playersettings.pRank.generic.id = ID_RANK; + s_playersettings.pRank.generic.callback = PlayerSettings_MenuEvent; + s_playersettings.pRank.generic.x = 113;//134; + s_playersettings.pRank.generic.y = y;//233; + s_playersettings.pRank.numitems = s_playersettings.numRanks; + s_playersettings.pRank.textEnum = MBT_RANK; + s_playersettings.pRank.textcolor = CT_BLACK; + s_playersettings.pRank.textcolor2 = CT_WHITE; + s_playersettings.pRank.color = CT_DKPURPLE1; + s_playersettings.pRank.color2 = CT_LTPURPLE1; + s_playersettings.pRank.width = 60;//80; + s_playersettings.pRank.textX = 5; + s_playersettings.pRank.textY = 2; + s_playersettings.pRank.itemnames = (const char**)s_playersettings.rankList; //prank_items_formal3; + + s_playersettings.rankTxt.generic.type = MTYPE_FIELD; + s_playersettings.rankTxt.generic.flags = QMF_HIDDEN; + s_playersettings.rankTxt.generic.callback = PlayerSettings_MenuEvent; + s_playersettings.rankTxt.generic.id = ID_RANKTXT; + s_playersettings.rankTxt.field.widthInChars = 16; + s_playersettings.rankTxt.field.maxchars = MAX_NAMELENGTH; + s_playersettings.rankTxt.generic.x = 205 + 12 + UI_ProportionalStringWidth(s_playersettings.rankList[s_playersettings.numRanks], UI_SMALLFONT);//315; + s_playersettings.rankTxt.generic.y = y + 3; + s_playersettings.rankTxt.field.style = UI_SMALLFONT; + s_playersettings.rankTxt.field.titleEnum = MBT_OTHER; + s_playersettings.rankTxt.field.titlecolor = CT_LTGOLD1; + s_playersettings.rankTxt.field.textcolor = CT_DKGOLD1; + s_playersettings.rankTxt.field.textcolor2 = CT_LTGOLD1; + + y += 25; + s_playersettings.age.generic.type = MTYPE_FIELD; + s_playersettings.age.generic.id = ID_AGE; + s_playersettings.age.generic.callback = PlayerSettings_MenuEvent; + s_playersettings.age.field.widthInChars = MAX_NAMELENGTH; + s_playersettings.age.field.maxchars = MAX_NAMELENGTH; + s_playersettings.age.generic.x = 115 + 5 + UI_ProportionalStringWidth(menu_button_text[MBT_AGE][0], UI_SMALLFONT);//159; + s_playersettings.age.generic.y = y + 3; + s_playersettings.age.field.style = UI_SMALLFONT; + s_playersettings.age.field.titleEnum = MBT_AGE; + s_playersettings.age.field.titlecolor = CT_LTGOLD1; + s_playersettings.age.field.textcolor = CT_DKGOLD1; + s_playersettings.age.field.textcolor2 = CT_LTGOLD1; + + y += 25; + s_playersettings.race.generic.type = MTYPE_FIELD; + s_playersettings.race.generic.id = ID_RACE; + s_playersettings.race.generic.callback = PlayerSettings_MenuEvent; + s_playersettings.race.field.widthInChars = MAX_NAMELENGTH; + s_playersettings.race.field.maxchars = MAX_NAMELENGTH; + s_playersettings.race.generic.x = 115 + 5 + UI_ProportionalStringWidth(menu_button_text[MBT_RACE][0], UI_SMALLFONT);//159; + s_playersettings.race.generic.y = y; + s_playersettings.race.field.style = UI_SMALLFONT; + s_playersettings.race.field.titleEnum = MBT_RACE; + s_playersettings.race.field.titlecolor = CT_LTGOLD1; + s_playersettings.race.field.textcolor = CT_DKGOLD1; + s_playersettings.race.field.textcolor2 = CT_LTGOLD1; + + y += 25; + s_playersettings.height.generic.type = MTYPE_SLIDER; + s_playersettings.height.generic.x = 115 + 90; //162 + s_playersettings.height.generic.y = y; + s_playersettings.height.generic.flags = QMF_SMALLFONT; + s_playersettings.height.generic.id = ID_HEIGHT; + s_playersettings.height.generic.callback = PlayerSettings_MenuEvent; + s_playersettings.height.defvalue = 1.0; + s_playersettings.height.minvalue = 0.9; + s_playersettings.height.maxvalue = 1.15; + s_playersettings.height.color = CT_DKPURPLE1; + s_playersettings.height.color2 = CT_LTPURPLE1; + s_playersettings.height.generic.name = PIC_MONBAR2; + s_playersettings.height.width = 256; + s_playersettings.height.height = 32; + s_playersettings.height.focusWidth = 145; //145 + s_playersettings.height.focusHeight = 18; + s_playersettings.height.picName = (char*)GRAPHIC_SQUARE; + s_playersettings.height.picX = 115; + s_playersettings.height.picY = y; + s_playersettings.height.picWidth = 85; //MENU_BUTTON_MED_WIDTH + 21; + s_playersettings.height.picHeight = MENU_BUTTON_MED_HEIGHT; + s_playersettings.height.textX = MENU_BUTTON_TEXT_X; + s_playersettings.height.textY = MENU_BUTTON_TEXT_Y; + s_playersettings.height.textEnum = MBT_HEIGHT; + s_playersettings.height.textcolor = CT_BLACK; + s_playersettings.height.textcolor2 = CT_WHITE; + s_playersettings.height.thumbName = (char*)PIC_SLIDER; + s_playersettings.height.thumbHeight = 32; + s_playersettings.height.thumbWidth = 16; + s_playersettings.height.thumbGraphicWidth = 9; + s_playersettings.height.thumbColor = CT_DKBLUE1; + s_playersettings.height.thumbColor2 = CT_LTBLUE1; + + y += 25; + s_playersettings.weight.generic.type = MTYPE_SLIDER; + s_playersettings.weight.generic.x = 115 + 90; //162 + s_playersettings.weight.generic.y = y; + s_playersettings.weight.generic.flags = QMF_SMALLFONT; + s_playersettings.weight.generic.callback = PlayerSettings_MenuEvent; + s_playersettings.weight.generic.id = ID_WEIGHT; + s_playersettings.weight.defvalue = 1.0; + s_playersettings.weight.minvalue = 0.9; + s_playersettings.weight.maxvalue = 1.1; + s_playersettings.weight.color = CT_DKPURPLE1; + s_playersettings.weight.color2 = CT_LTPURPLE1; + s_playersettings.weight.generic.name = PIC_MONBAR2; + s_playersettings.weight.width = 256; + s_playersettings.weight.height = 32; + s_playersettings.weight.focusWidth = 145; + s_playersettings.weight.focusHeight = 18; + s_playersettings.weight.picName = (char*)GRAPHIC_SQUARE; + s_playersettings.weight.picX = 115; + s_playersettings.weight.picY = y; + s_playersettings.weight.picWidth = 85; //MENU_BUTTON_MED_WIDTH + 21; + s_playersettings.weight.picHeight = MENU_BUTTON_MED_HEIGHT; + s_playersettings.weight.textX = MENU_BUTTON_TEXT_X; + s_playersettings.weight.textY = MENU_BUTTON_TEXT_Y; + s_playersettings.weight.textEnum = MBT_WEIGHT; + s_playersettings.weight.textcolor = CT_BLACK; + s_playersettings.weight.textcolor2 = CT_WHITE; + s_playersettings.weight.thumbName = (char*)PIC_SLIDER; + s_playersettings.weight.thumbHeight = 32; + s_playersettings.weight.thumbWidth = 16; + s_playersettings.weight.thumbGraphicWidth = 9; + s_playersettings.weight.thumbColor = CT_DKBLUE1; + s_playersettings.weight.thumbColor2 = CT_LTBLUE1; + + if (s_playersettings.numRankSets > 1) { + s_playersettings.rankSets.generic.type = MTYPE_SPINCONTROL; + s_playersettings.rankSets.generic.flags = QMF_HIGHLIGHT_IF_FOCUS; + s_playersettings.rankSets.generic.id = ID_RANKSETS; + s_playersettings.rankSets.generic.callback = PlayerSettings_MenuEvent; + s_playersettings.rankSets.generic.x = 257;//134; + s_playersettings.rankSets.generic.y = 391;//233; + s_playersettings.rankSets.textEnum = MBT_RANKSETS; + s_playersettings.rankSets.textcolor = CT_BLACK; + s_playersettings.rankSets.textcolor2 = CT_WHITE; + s_playersettings.rankSets.color = CT_DKPURPLE1; + s_playersettings.rankSets.color2 = CT_LTPURPLE1; + s_playersettings.rankSets.width = 80;//80; + s_playersettings.rankSets.textX = 5; + s_playersettings.rankSets.textY = 2; + s_playersettings.rankSets.itemnames = (const char**)s_playersettings.rankSetList; //rankSets_items_formal3; + } + + if (s_playersettings.numClassSets > 1) + { + s_playersettings.classSets.generic.type = MTYPE_SPINCONTROL; + s_playersettings.classSets.generic.flags = QMF_HIGHLIGHT_IF_FOCUS; + s_playersettings.classSets.generic.id = ID_CLASSSETS; + s_playersettings.classSets.generic.callback = PlayerSettings_MenuEvent; + s_playersettings.classSets.generic.x = 257;//134; + s_playersettings.classSets.generic.y = 415;//233; + s_playersettings.classSets.textEnum = MBT_CLASSSETS; + s_playersettings.classSets.textcolor = CT_BLACK; + s_playersettings.classSets.textcolor2 = CT_WHITE; + s_playersettings.classSets.color = CT_DKPURPLE1; + s_playersettings.classSets.color2 = CT_LTPURPLE1; + s_playersettings.classSets.width = 80;//80; + s_playersettings.classSets.textX = 5; + s_playersettings.classSets.textY = 2; + s_playersettings.classSets.itemnames = (const char**)s_playersettings.classSetList; //rankSets_items_formal3; + } + + s_playersettings.commit.generic.type = MTYPE_BITMAP; + s_playersettings.commit.generic.flags = (QMF_GRAYED | QMF_INACTIVE); + s_playersettings.commit.generic.x = 196; + s_playersettings.commit.generic.y = 314; + s_playersettings.commit.generic.name = GRAPHIC_SQUARE; + s_playersettings.commit.generic.callback = PlayerSettings_MenuEvent; + s_playersettings.commit.generic.id = ID_COMMIT; + s_playersettings.commit.width = 133; + s_playersettings.commit.height = 18; + s_playersettings.commit.color = CT_VDKRED1; + s_playersettings.commit.color2 = CT_DKRED1; + s_playersettings.commit.textX = MENU_BUTTON_TEXT_X; + s_playersettings.commit.textY = MENU_BUTTON_TEXT_Y; + s_playersettings.commit.textcolor = CT_BLACK; + s_playersettings.commit.textcolor2 = CT_WHITE; + s_playersettings.commit.textEnum = MBT_COMMIT; + + s_playersettings.data.generic.type = MTYPE_BITMAP; + s_playersettings.data.generic.name = BUTTON_GRAPHIC_LONGRIGHT; + s_playersettings.data.generic.flags = QMF_GRAYED; + s_playersettings.data.generic.id = ID_DATA; + s_playersettings.data.generic.callback = PlayerSettings_MenuEvent; + s_playersettings.data.generic.x = 482; + s_playersettings.data.generic.y = 391; + s_playersettings.data.width = 128; + s_playersettings.data.height = 64; + s_playersettings.data.width = MENU_BUTTON_MED_WIDTH; + s_playersettings.data.height = MENU_BUTTON_MED_HEIGHT; + s_playersettings.data.color = CT_DKPURPLE1; + s_playersettings.data.color2 = CT_LTPURPLE1; + s_playersettings.data.textX = 5; + s_playersettings.data.textY = 2; + s_playersettings.data.textEnum = MBT_PLAYERDATA; + s_playersettings.data.textcolor = CT_BLACK; + s_playersettings.data.textcolor2 = CT_WHITE; + + s_playersettings.model.generic.type = MTYPE_BITMAP; + s_playersettings.model.generic.name = BUTTON_GRAPHIC_LONGRIGHT; + s_playersettings.model.generic.flags = QMF_HIGHLIGHT_IF_FOCUS; + s_playersettings.model.generic.id = ID_MODEL; + s_playersettings.model.generic.callback = PlayerSettings_MenuEvent; + s_playersettings.model.generic.x = 482; + s_playersettings.model.generic.y = 415; + s_playersettings.model.width = MENU_BUTTON_MED_WIDTH; + s_playersettings.model.height = MENU_BUTTON_MED_HEIGHT; + s_playersettings.model.color = CT_DKPURPLE1; + s_playersettings.model.color2 = CT_LTPURPLE1; + s_playersettings.model.textX = 5; + s_playersettings.model.textY = 2; + s_playersettings.model.textEnum = MBT_CHANGEMODEL; + s_playersettings.model.textcolor = CT_BLACK; + s_playersettings.model.textcolor2 = CT_WHITE; + + s_playersettings.player.generic.type = MTYPE_BITMAP; + s_playersettings.player.generic.flags = QMF_SILENT; + s_playersettings.player.generic.ownerdraw = PlayerSettings_DrawPlayer; + s_playersettings.player.generic.callback = PlayerSettings_SpinPlayer; + s_playersettings.player.generic.x = 439; //400 + s_playersettings.player.generic.y = 80; //20 + s_playersettings.player.width = 151; //32*7.3 + s_playersettings.player.height = 291; //56*7.3 + + s_playersettings.item_null.generic.type = MTYPE_BITMAP; + s_playersettings.item_null.generic.flags = QMF_LEFT_JUSTIFY | QMF_MOUSEONLY | QMF_SILENT; + s_playersettings.item_null.generic.x = 0; + s_playersettings.item_null.generic.y = 0; + s_playersettings.item_null.width = 640; + s_playersettings.item_null.height = 480; + + Menu_AddItem(&s_playersettings.menu, &s_playersettings.mainmenu); + Menu_AddItem(&s_playersettings.menu, &s_playersettings.back); + Menu_AddItem(&s_playersettings.menu, &s_playersettings.name); + Menu_AddItem(&s_playersettings.menu, &s_playersettings.classTxt); + Menu_AddItem(&s_playersettings.menu, &s_playersettings.pClass); + Menu_AddItem(&s_playersettings.menu, &s_playersettings.rankTxt); + Menu_AddItem(&s_playersettings.menu, &s_playersettings.pRank); + Menu_AddItem(&s_playersettings.menu, &s_playersettings.age); + Menu_AddItem(&s_playersettings.menu, &s_playersettings.race); + Menu_AddItem(&s_playersettings.menu, &s_playersettings.height); + Menu_AddItem(&s_playersettings.menu, &s_playersettings.weight); + Menu_AddItem(&s_playersettings.menu, &s_playersettings.commit); + + Menu_AddItem(&s_playersettings.menu, &s_playersettings.model); + Menu_AddItem(&s_playersettings.menu, &s_playersettings.data); + + if (s_playersettings.numRankSets > 1 && !ingameFlag) { + Menu_AddItem(&s_playersettings.menu, &s_playersettings.rankSets); + } + + if (s_playersettings.numClassSets > 1 && !ingameFlag) { + Menu_AddItem(&s_playersettings.menu, &s_playersettings.classSets); + } + + Menu_AddItem(&s_playersettings.menu, &s_playersettings.player); + + //PlayerSettings_AffectModel(); + + PlayerSettings_SetMenuItems(); + + if (s_playersettings.numRankSets > 1 && !ingameFlag) { + s_playersettings.rankSets.generic.flags &= ~QMF_HIDDEN; + + for (i = 0; i < s_playersettings.rankSets.numitems; i++) { + if (!Q_stricmp(UI_Cvar_VariableString("ui_currentRankSet"), s_playersettings.rankSetList[i])) { + s_playersettings.rankSets.curvalue = i; + break; + } + } + + if (s_playersettings.rankSetList[s_playersettings.rankSets.curvalue][0]) + trap_Cvar_Set("ui_currentRankSet", s_playersettings.rankSetList[s_playersettings.rankSets.curvalue]); + + UI_InitRanksData(UI_Cvar_VariableString("ui_currentRankSet")); + s_playersettings.numRanks = UI_PopulateRanksArray(s_playersettings.rankList); + + s_playersettings.pRank.numitems = s_playersettings.numRanks; + } + + if (s_playersettings.numClassSets > 1 && !ingameFlag) { + s_playersettings.classSets.generic.flags &= ~QMF_HIDDEN; + + for (i = 0; i < s_playersettings.classSets.numitems; i++) { + if (!Q_stricmp(UI_Cvar_VariableString("ui_currentClassSet"), s_playersettings.classSetList[i])) { + s_playersettings.classSets.curvalue = i; + break; + } + } + + if (s_playersettings.classSetList[s_playersettings.rankSets.curvalue][0]) + trap_Cvar_Set("ui_currentClassSet", s_playersettings.classSetList[s_playersettings.classSets.curvalue]); + + UI_InitRanksData(UI_Cvar_VariableString("ui_currentClassSet")); + s_playersettings.numClasses = UI_PopulateClassArray(s_playersettings.classNameList); + + s_playersettings.pClass.numitems = s_playersettings.numClasses; + } + UI_LogFuncEnd(); +} + + +/* +================= +PlayerSettings_Cache +================= +*/ +void PlayerSettings_Cache(void) +{ + UI_LogFuncBegin(); + s_playersettings.corner_ul_4_4 = trap_R_RegisterShaderNoMip("menu/common/corner_ul_4_4"); + s_playersettings.corner_ur_4_4 = trap_R_RegisterShaderNoMip("menu/common/corner_ur_4_4"); + s_playersettings.corner_ll_4_4 = trap_R_RegisterShaderNoMip("menu/common/corner_ll_4_4"); + s_playersettings.corner_ll_4_18 = trap_R_RegisterShaderNoMip("menu/common/corner_ll_4_18"); + s_playersettings.corner_lr_4_18 = trap_R_RegisterShaderNoMip("menu/common/corner_lr_4_18"); + + trap_R_RegisterShaderNoMip(PIC_MONBAR2); + trap_R_RegisterShaderNoMip(PIC_SLIDER); + UI_LogFuncEnd(); +} + + +/* +================= +UI_PlayerSettingsMenu +================= +*/ +void UI_PlayerSettingsMenu(int32_t menuFrom) +{ + UI_LogFuncBegin(); + PlayerSettings_MenuInit(menuFrom); + UI_PushMenu(&s_playersettings.menu); + UI_LogFuncEnd(); +} + diff --git a/code/ui/ui_preferences.c b/code/ui/ui_preferences.c index 2088b6d..9207276 100644 --- a/code/ui/ui_preferences.c +++ b/code/ui/ui_preferences.c @@ -12,14 +12,16 @@ GAME OPTIONS MENU #include "ui_local.h" #include "ui_logger.h" +enum ui_preferencesLimits_e { + NUM_CROSSHAIRS = 12 +}; -#define NUM_CROSSHAIRS 12 -#define PIC_BUTTON2 "menu/common/full_button2.tga" +static const char PIC_BUTTON2[] = "menu/common/full_button2.tga"; extern void BG_LoadItemNames(void); // Precache stuff for Game Options Menu -static struct +static struct { menuframework_s menu; @@ -39,31 +41,30 @@ static struct extern int32_t s_OffOnNone_Names[]; -#define ID_LIGHTFLARES 129 -#define ID_LIGHTFLARES_VALUE 130 -#define ID_WALLMARKS_VALUE 133 -#define ID_DYNAMICLIGHTS_VALUE 135 -#define ID_IDENTIFYTARGET_VALUE 137 -#define ID_SYNCEVERYFRAME_VALUE 139 - - -#define PREFERENCES_X_POS 360 - -#define ID_TEXTLANGUAGE 126 -#define ID_CROSSHAIR 127 -#define ID_SIMPLEITEMS 128 -#define ID_HIGHQUALITYSKY 129 -#define ID_EJECTINGBRASS 130 -#define ID_WALLMARKS 131 -#define ID_DYNAMICLIGHTS 132 -#define ID_IDENTIFYTARGET 133 -#define ID_SYNCEVERYFRAME 134 -#define ID_FORCEMODEL 135 -#define ID_DRAWTEAMOVERLAY 136 -#define ID_ALLOWDOWNLOAD 137 -#define ID_BACK 138 -#define ID_VOICELANGUAGE 139 +enum ui_preferencesIDs_e { + ID_TEXTLANGUAGE = 126, + ID_CROSSHAIR, + ID_SIMPLEITEMS, + ID_HIGHQUALITYSKY = 129, + ID_LIGHTFLARES = 129, + ID_LIGHTFLARES_VALUE = 130, + ID_EJECTINGBRASS = 130, + ID_WALLMARKS, + ID_DYNAMICLIGHTS, + ID_WALLMARKS_VALUE = 133, + ID_IDENTIFYTARGET = 133, + ID_SYNCEVERYFRAME, + ID_FORCEMODEL = 135, + ID_DYNAMICLIGHTS_VALUE = 135, + ID_DRAWTEAMOVERLAY, + ID_ALLOWDOWNLOAD = 137, + ID_IDENTIFYTARGET_VALUE = 137, + ID_BACK, + ID_VOICELANGUAGE = 139, + ID_SYNCEVERYFRAME_VALUE = 139 +}; +static const int32_t PREFERENCES_X_POS = 360; typedef struct { @@ -104,33 +105,33 @@ int32_t s_voicelanguage_Names[] = MNT_NONE }; -static void Preferences_SetMenuItems( void ) +static void Preferences_SetMenuItems(void) { UI_LogFuncBegin(); char buffer[32]; int32_t *language; - s_preferences.currentcrosshair = trap_Cvar_VariableValue( "cg_drawCrosshair" ) != 0 /*% NUM_CROSSHAIRS*/; - s_preferences.simpleitems.curvalue = trap_Cvar_VariableValue( "cg_simpleItems" ) != 0; - s_preferences.wallmarks.curvalue = trap_Cvar_VariableValue( "cg_marks" ) != 0; - s_preferences.identifytarget.curvalue = trap_Cvar_VariableValue( "cg_drawCrosshairNames" ) != 0; - s_preferences.dynamiclights.curvalue = trap_Cvar_VariableValue( "r_dynamiclight" ) != 0; - s_preferences.synceveryframe.curvalue = trap_Cvar_VariableValue( "r_finish" ) != 0; - s_preferences.forcemodel.curvalue = trap_Cvar_VariableValue( "cg_forcemodel" ) != 0; - s_preferences.drawteamoverlay.curvalue = Com_Clamp( 0, 3, trap_Cvar_VariableValue( "cg_drawTeamOverlay" ) ); - s_preferences.allowdownload.curvalue = trap_Cvar_VariableValue( "cl_allowDownload" ) != 0; + s_preferences.currentcrosshair = trap_Cvar_VariableValue("cg_drawCrosshair") != 0 /*% NUM_CROSSHAIRS*/; + s_preferences.simpleitems.curvalue = trap_Cvar_VariableValue("cg_simpleItems") != 0; + s_preferences.wallmarks.curvalue = trap_Cvar_VariableValue("cg_marks") != 0; + s_preferences.identifytarget.curvalue = trap_Cvar_VariableValue("cg_drawCrosshairNames") != 0; + s_preferences.dynamiclights.curvalue = trap_Cvar_VariableValue("r_dynamiclight") != 0; + s_preferences.synceveryframe.curvalue = trap_Cvar_VariableValue("r_finish") != 0; + s_preferences.forcemodel.curvalue = trap_Cvar_VariableValue("cg_forcemodel") != 0; + s_preferences.drawteamoverlay.curvalue = Com_Clamp(0, 3, trap_Cvar_VariableValue("cg_drawTeamOverlay")); + s_preferences.allowdownload.curvalue = trap_Cvar_VariableValue("cl_allowDownload") != 0; - s_preferences.flares.curvalue = Com_Clamp( 0, 1, trap_Cvar_VariableValue( "r_flares" )); + s_preferences.flares.curvalue = Com_Clamp(0, 1, trap_Cvar_VariableValue("r_flares")); - trap_Cvar_VariableStringBuffer( "g_language", buffer, 32 ); + trap_Cvar_VariableStringBuffer("g_language", buffer, 32); language = s_textlanguage_Names; s_preferences.textlanguage.curvalue = 0; if (buffer[0]) { while (*language) //scan for a match { - if (Q_stricmp(menu_normal_text[*language],buffer)==0) + if (Q_stricmp(menu_normal_text[*language], buffer) == 0) { break; } @@ -144,14 +145,14 @@ static void Preferences_SetMenuItems( void ) } } - trap_Cvar_VariableStringBuffer( "s_language", buffer, 32 ); + trap_Cvar_VariableStringBuffer("s_language", buffer, 32); language = s_voicelanguage_Names; s_preferences.voicelanguage.curvalue = 0; if (buffer[0]) { while (*language) //scan for a match { - if (Q_stricmp(menu_normal_text[*language],buffer)==0) + if (Q_stricmp(menu_normal_text[*language], buffer) == 0) { break; } @@ -168,67 +169,67 @@ static void Preferences_SetMenuItems( void ) } -static void Preferences_Event( void* ptr, int32_t notification ) +static void Preferences_Event(void* ptr, int32_t notification) { UI_LogFuncBegin(); - if( notification != QM_ACTIVATED ) + if (notification != QM_ACTIVATED) { UI_LogFuncEnd(); return; } - switch( ((menucommon_s*)ptr)->id ) + switch (((menucommon_s*)ptr)->id) { case ID_CROSSHAIR: - trap_Cvar_SetValue( "cg_drawCrosshair", s_preferences.crosshair.curvalue ); + trap_Cvar_SetValue("cg_drawCrosshair", s_preferences.crosshair.curvalue); break; case ID_SIMPLEITEMS: - trap_Cvar_SetValue( "cg_simpleItems", s_preferences.simpleitems.curvalue ); + trap_Cvar_SetValue("cg_simpleItems", s_preferences.simpleitems.curvalue); break; case ID_LIGHTFLARES: - trap_Cvar_SetValue( "r_flares", s_preferences.flares.curvalue ); + trap_Cvar_SetValue("r_flares", s_preferences.flares.curvalue); break; case ID_WALLMARKS: - trap_Cvar_SetValue( "cg_marks", s_preferences.wallmarks.curvalue ); + trap_Cvar_SetValue("cg_marks", s_preferences.wallmarks.curvalue); break; case ID_DYNAMICLIGHTS: - trap_Cvar_SetValue( "r_dynamiclight", s_preferences.dynamiclights.curvalue ); - break; + trap_Cvar_SetValue("r_dynamiclight", s_preferences.dynamiclights.curvalue); + break; case ID_IDENTIFYTARGET: - trap_Cvar_SetValue( "cg_drawCrosshairNames", s_preferences.identifytarget.curvalue ); + trap_Cvar_SetValue("cg_drawCrosshairNames", s_preferences.identifytarget.curvalue); break; case ID_SYNCEVERYFRAME: - trap_Cvar_SetValue( "r_finish", s_preferences.synceveryframe.curvalue ); + trap_Cvar_SetValue("r_finish", s_preferences.synceveryframe.curvalue); break; case ID_FORCEMODEL: - trap_Cvar_SetValue( "cg_forcemodel", s_preferences.forcemodel.curvalue ); + trap_Cvar_SetValue("cg_forcemodel", s_preferences.forcemodel.curvalue); break; case ID_DRAWTEAMOVERLAY: - trap_Cvar_SetValue( "cg_drawTeamOverlay", s_preferences.drawteamoverlay.curvalue ); + trap_Cvar_SetValue("cg_drawTeamOverlay", s_preferences.drawteamoverlay.curvalue); break; case ID_ALLOWDOWNLOAD: - trap_Cvar_SetValue( "cl_allowDownload", s_preferences.allowdownload.curvalue ); + trap_Cvar_SetValue("cl_allowDownload", s_preferences.allowdownload.curvalue); break; case ID_TEXTLANGUAGE: - trap_Cvar_Set( "g_language", menu_normal_text[s_textlanguage_Names[s_preferences.textlanguage.curvalue]] ); + trap_Cvar_Set("g_language", menu_normal_text[s_textlanguage_Names[s_preferences.textlanguage.curvalue]]); UI_LoadButtonText(); //reload the menus UI_LoadMenuText(); BG_LoadItemNames(); break; case ID_VOICELANGUAGE: - trap_Cvar_Set( "s_language", menu_normal_text[s_voicelanguage_Names[s_preferences.voicelanguage.curvalue]] ); - trap_Cmd_ExecuteText( EXEC_APPEND, "snd_restart\n" ); + trap_Cvar_Set("s_language", menu_normal_text[s_voicelanguage_Names[s_preferences.voicelanguage.curvalue]]); + trap_Cmd_ExecuteText(EXEC_APPEND, "snd_restart\n"); break; case ID_BACK: @@ -243,7 +244,7 @@ static void Preferences_Event( void* ptr, int32_t notification ) GameOptions_MenuDraw ================= */ -static void GameOptions_MenuDraw( void ) +static void GameOptions_MenuDraw(void) { UI_LogFuncBegin(); @@ -251,17 +252,17 @@ static void GameOptions_MenuDraw( void ) UI_Setup_MenuButtons(); - trap_R_SetColor( colorTable[CT_DKPURPLE2]); - UI_DrawHandlePic(30,203, 47, 186, uis.whiteShader); // Long left hand column square + trap_R_SetColor(colorTable[CT_DKPURPLE2]); + UI_DrawHandlePic(30, 203, 47, 186, uis.whiteShader); // Long left hand column square // Menu frame numbers - UI_DrawProportionalString( 74, 66, "1776",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]); - UI_DrawProportionalString( 74, 84, "9214",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]); - UI_DrawProportionalString( 74, 188, "2510-81",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]); - UI_DrawProportionalString( 74, 206, "644",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]); - UI_DrawProportionalString( 74, 395, "1001001",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]); + UI_DrawProportionalString(74, 66, "1776", UI_RIGHT | UI_TINYFONT, colorTable[CT_BLACK]); + UI_DrawProportionalString(74, 84, "9214", UI_RIGHT | UI_TINYFONT, colorTable[CT_BLACK]); + UI_DrawProportionalString(74, 188, "2510-81", UI_RIGHT | UI_TINYFONT, colorTable[CT_BLACK]); + UI_DrawProportionalString(74, 206, "644", UI_RIGHT | UI_TINYFONT, colorTable[CT_BLACK]); + UI_DrawProportionalString(74, 395, "1001001", UI_RIGHT | UI_TINYFONT, colorTable[CT_BLACK]); - Menu_Draw( &s_gameoptions.menu ); + Menu_Draw(&s_gameoptions.menu); UI_LogFuncEnd(); } @@ -270,16 +271,16 @@ static void GameOptions_MenuDraw( void ) GameOptions_MenuKey ================= */ -static sfxHandle_t GameOptions_MenuKey( int32_t key ) +static sfxHandle_t GameOptions_MenuKey(int32_t key) { - return Menu_DefaultKey( &s_gameoptions.menu, key ); + return Menu_DefaultKey(&s_gameoptions.menu, key); } /* =============== UI_GameOptionsMenu_Cache =============== */ -void UI_GameOptionsMenu_Cache( void ) +void UI_GameOptionsMenu_Cache(void) { UI_LogFuncBegin(); @@ -306,234 +307,234 @@ void UI_GameOptionsMenu_Cache( void ) GameOptions_MenuInit ================= */ -static void GameOptions_MenuInit( void ) +static void GameOptions_MenuInit(void) { UI_LogFuncBegin(); - int32_t x,y,inc,width; + int32_t x, y, inc, width; UI_GameOptionsMenu_Cache(); - s_gameoptions.menu.nitems = 0; - s_gameoptions.menu.wrapAround = qtrue; - s_gameoptions.menu.draw = GameOptions_MenuDraw; - s_gameoptions.menu.key = GameOptions_MenuKey; - s_gameoptions.menu.fullscreen = qtrue; - s_gameoptions.menu.descX = MENU_DESC_X; - s_gameoptions.menu.descY = MENU_DESC_Y; - s_gameoptions.menu.titleX = MENU_TITLE_X; - s_gameoptions.menu.titleY = MENU_TITLE_Y; - s_gameoptions.menu.titleI = MNT_CONTROLSMENU_TITLE; - s_gameoptions.menu.footNoteEnum = MNT_GAMEOPTION_LABEL; + s_gameoptions.menu.nitems = 0; + s_gameoptions.menu.wrapAround = qtrue; + s_gameoptions.menu.draw = GameOptions_MenuDraw; + s_gameoptions.menu.key = GameOptions_MenuKey; + s_gameoptions.menu.fullscreen = qtrue; + s_gameoptions.menu.descX = MENU_DESC_X; + s_gameoptions.menu.descY = MENU_DESC_Y; + s_gameoptions.menu.titleX = MENU_TITLE_X; + s_gameoptions.menu.titleY = MENU_TITLE_Y; + s_gameoptions.menu.titleI = MNT_CONTROLSMENU_TITLE; + s_gameoptions.menu.footNoteEnum = MNT_GAMEOPTION_LABEL; - SetupMenu_TopButtons(&s_gameoptions.menu,MENU_GAME,NULL); + SetupMenu_TopButtons(&s_gameoptions.menu, MENU_GAME, NULL); inc = 24; x = 100; y = 170; width = 160; //170 - s_preferences.flares.generic.type = MTYPE_SPINCONTROL; - s_preferences.flares.generic.flags = QMF_HIGHLIGHT_IF_FOCUS; - s_preferences.flares.generic.x = x; - s_preferences.flares.generic.y = y; - s_preferences.flares.generic.callback = Preferences_Event; - s_preferences.flares.generic.id = ID_LIGHTFLARES; - s_preferences.flares.textEnum = MBT_LIGHTFLARES; - s_preferences.flares.textcolor = CT_BLACK; - s_preferences.flares.textcolor2 = CT_WHITE; - s_preferences.flares.color = CT_DKPURPLE1; - s_preferences.flares.color2 = CT_LTPURPLE1; - s_preferences.flares.textX = MENU_BUTTON_TEXT_X; - s_preferences.flares.textY = MENU_BUTTON_TEXT_Y; - s_preferences.flares.listnames = s_OffOnNone_Names; - s_preferences.flares.width = width; + s_preferences.flares.generic.type = MTYPE_SPINCONTROL; + s_preferences.flares.generic.flags = QMF_HIGHLIGHT_IF_FOCUS; + s_preferences.flares.generic.x = x; + s_preferences.flares.generic.y = y; + s_preferences.flares.generic.callback = Preferences_Event; + s_preferences.flares.generic.id = ID_LIGHTFLARES; + s_preferences.flares.textEnum = MBT_LIGHTFLARES; + s_preferences.flares.textcolor = CT_BLACK; + s_preferences.flares.textcolor2 = CT_WHITE; + s_preferences.flares.color = CT_DKPURPLE1; + s_preferences.flares.color2 = CT_LTPURPLE1; + s_preferences.flares.textX = MENU_BUTTON_TEXT_X; + s_preferences.flares.textY = MENU_BUTTON_TEXT_Y; + s_preferences.flares.listnames = s_OffOnNone_Names; + s_preferences.flares.width = width; y += inc; - s_preferences.wallmarks.generic.type = MTYPE_SPINCONTROL; - s_preferences.wallmarks.generic.flags = QMF_HIGHLIGHT_IF_FOCUS; - s_preferences.wallmarks.generic.x = x; - s_preferences.wallmarks.generic.y = y; - s_preferences.wallmarks.generic.callback = Preferences_Event; - s_preferences.wallmarks.generic.id = ID_WALLMARKS; - s_preferences.wallmarks.textEnum = MBT_WALLMARKS1; - s_preferences.wallmarks.textcolor = CT_BLACK; - s_preferences.wallmarks.textcolor2 = CT_WHITE; - s_preferences.wallmarks.color = CT_DKPURPLE1; - s_preferences.wallmarks.color2 = CT_LTPURPLE1; - s_preferences.wallmarks.textX = MENU_BUTTON_TEXT_X; - s_preferences.wallmarks.textY = MENU_BUTTON_TEXT_Y; - s_preferences.wallmarks.listnames = s_OffOnNone_Names; - s_preferences.wallmarks.width = width; + s_preferences.wallmarks.generic.type = MTYPE_SPINCONTROL; + s_preferences.wallmarks.generic.flags = QMF_HIGHLIGHT_IF_FOCUS; + s_preferences.wallmarks.generic.x = x; + s_preferences.wallmarks.generic.y = y; + s_preferences.wallmarks.generic.callback = Preferences_Event; + s_preferences.wallmarks.generic.id = ID_WALLMARKS; + s_preferences.wallmarks.textEnum = MBT_WALLMARKS1; + s_preferences.wallmarks.textcolor = CT_BLACK; + s_preferences.wallmarks.textcolor2 = CT_WHITE; + s_preferences.wallmarks.color = CT_DKPURPLE1; + s_preferences.wallmarks.color2 = CT_LTPURPLE1; + s_preferences.wallmarks.textX = MENU_BUTTON_TEXT_X; + s_preferences.wallmarks.textY = MENU_BUTTON_TEXT_Y; + s_preferences.wallmarks.listnames = s_OffOnNone_Names; + s_preferences.wallmarks.width = width; y += inc; - s_preferences.dynamiclights.generic.type = MTYPE_SPINCONTROL; - s_preferences.dynamiclights.generic.flags = QMF_HIGHLIGHT_IF_FOCUS; - s_preferences.dynamiclights.generic.x = x; - s_preferences.dynamiclights.generic.y = y; - s_preferences.dynamiclights.generic.callback = Preferences_Event; - s_preferences.dynamiclights.generic.id = ID_DYNAMICLIGHTS; - s_preferences.dynamiclights.textEnum = MBT_DYNAMICLIGHTS1; - s_preferences.dynamiclights.textcolor = CT_BLACK; - s_preferences.dynamiclights.textcolor2 = CT_WHITE; - s_preferences.dynamiclights.color = CT_DKPURPLE1; - s_preferences.dynamiclights.color2 = CT_LTPURPLE1; - s_preferences.dynamiclights.textX = MENU_BUTTON_TEXT_X; - s_preferences.dynamiclights.textY = MENU_BUTTON_TEXT_Y; - s_preferences.dynamiclights.listnames = s_OffOnNone_Names; - s_preferences.dynamiclights.width = width; + s_preferences.dynamiclights.generic.type = MTYPE_SPINCONTROL; + s_preferences.dynamiclights.generic.flags = QMF_HIGHLIGHT_IF_FOCUS; + s_preferences.dynamiclights.generic.x = x; + s_preferences.dynamiclights.generic.y = y; + s_preferences.dynamiclights.generic.callback = Preferences_Event; + s_preferences.dynamiclights.generic.id = ID_DYNAMICLIGHTS; + s_preferences.dynamiclights.textEnum = MBT_DYNAMICLIGHTS1; + s_preferences.dynamiclights.textcolor = CT_BLACK; + s_preferences.dynamiclights.textcolor2 = CT_WHITE; + s_preferences.dynamiclights.color = CT_DKPURPLE1; + s_preferences.dynamiclights.color2 = CT_LTPURPLE1; + s_preferences.dynamiclights.textX = MENU_BUTTON_TEXT_X; + s_preferences.dynamiclights.textY = MENU_BUTTON_TEXT_Y; + s_preferences.dynamiclights.listnames = s_OffOnNone_Names; + s_preferences.dynamiclights.width = width; y += inc; - s_preferences.identifytarget.generic.type = MTYPE_SPINCONTROL; - s_preferences.identifytarget.generic.flags = QMF_HIGHLIGHT_IF_FOCUS; - s_preferences.identifytarget.generic.x = x; - s_preferences.identifytarget.generic.y = y; - s_preferences.identifytarget.generic.callback = Preferences_Event; - s_preferences.identifytarget.generic.id = ID_IDENTIFYTARGET; - s_preferences.identifytarget.textEnum = MBT_IDENTIFYTARGET1; - s_preferences.identifytarget.textcolor = CT_BLACK; - s_preferences.identifytarget.textcolor2 = CT_WHITE; - s_preferences.identifytarget.color = CT_DKPURPLE1; - s_preferences.identifytarget.color2 = CT_LTPURPLE1; - s_preferences.identifytarget.textX = MENU_BUTTON_TEXT_X; - s_preferences.identifytarget.textY = MENU_BUTTON_TEXT_Y; - s_preferences.identifytarget.listnames = s_OffOnNone_Names; - s_preferences.identifytarget.width = width; + s_preferences.identifytarget.generic.type = MTYPE_SPINCONTROL; + s_preferences.identifytarget.generic.flags = QMF_HIGHLIGHT_IF_FOCUS; + s_preferences.identifytarget.generic.x = x; + s_preferences.identifytarget.generic.y = y; + s_preferences.identifytarget.generic.callback = Preferences_Event; + s_preferences.identifytarget.generic.id = ID_IDENTIFYTARGET; + s_preferences.identifytarget.textEnum = MBT_IDENTIFYTARGET1; + s_preferences.identifytarget.textcolor = CT_BLACK; + s_preferences.identifytarget.textcolor2 = CT_WHITE; + s_preferences.identifytarget.color = CT_DKPURPLE1; + s_preferences.identifytarget.color2 = CT_LTPURPLE1; + s_preferences.identifytarget.textX = MENU_BUTTON_TEXT_X; + s_preferences.identifytarget.textY = MENU_BUTTON_TEXT_Y; + s_preferences.identifytarget.listnames = s_OffOnNone_Names; + s_preferences.identifytarget.width = width; y += inc; - s_preferences.synceveryframe.generic.type = MTYPE_SPINCONTROL; - s_preferences.synceveryframe.generic.flags = QMF_HIGHLIGHT_IF_FOCUS; - s_preferences.synceveryframe.generic.x = x; - s_preferences.synceveryframe.generic.y = y; - s_preferences.synceveryframe.generic.callback = Preferences_Event; - s_preferences.synceveryframe.generic.id = ID_SYNCEVERYFRAME; - s_preferences.synceveryframe.textEnum = MBT_SYNCEVERYFRAME1; - s_preferences.synceveryframe.textcolor = CT_BLACK; - s_preferences.synceveryframe.textcolor2 = CT_WHITE; - s_preferences.synceveryframe.color = CT_DKPURPLE1; - s_preferences.synceveryframe.color2 = CT_LTPURPLE1; - s_preferences.synceveryframe.textX = MENU_BUTTON_TEXT_X; - s_preferences.synceveryframe.textY = MENU_BUTTON_TEXT_Y; - s_preferences.synceveryframe.listnames = s_OffOnNone_Names; - s_preferences.synceveryframe.width = width; + s_preferences.synceveryframe.generic.type = MTYPE_SPINCONTROL; + s_preferences.synceveryframe.generic.flags = QMF_HIGHLIGHT_IF_FOCUS; + s_preferences.synceveryframe.generic.x = x; + s_preferences.synceveryframe.generic.y = y; + s_preferences.synceveryframe.generic.callback = Preferences_Event; + s_preferences.synceveryframe.generic.id = ID_SYNCEVERYFRAME; + s_preferences.synceveryframe.textEnum = MBT_SYNCEVERYFRAME1; + s_preferences.synceveryframe.textcolor = CT_BLACK; + s_preferences.synceveryframe.textcolor2 = CT_WHITE; + s_preferences.synceveryframe.color = CT_DKPURPLE1; + s_preferences.synceveryframe.color2 = CT_LTPURPLE1; + s_preferences.synceveryframe.textX = MENU_BUTTON_TEXT_X; + s_preferences.synceveryframe.textY = MENU_BUTTON_TEXT_Y; + s_preferences.synceveryframe.listnames = s_OffOnNone_Names; + s_preferences.synceveryframe.width = width; y += inc; - s_preferences.forcemodel.generic.type = MTYPE_SPINCONTROL; - s_preferences.forcemodel.generic.flags = QMF_HIGHLIGHT_IF_FOCUS; - s_preferences.forcemodel.generic.x = x; - s_preferences.forcemodel.generic.y = y; - s_preferences.forcemodel.generic.callback = Preferences_Event; - s_preferences.forcemodel.generic.id = ID_FORCEMODEL; - s_preferences.forcemodel.textEnum = MBT_FORCEMODEL; - s_preferences.forcemodel.textcolor = CT_BLACK; - s_preferences.forcemodel.textcolor2 = CT_WHITE; - s_preferences.forcemodel.color = CT_DKPURPLE1; - s_preferences.forcemodel.color2 = CT_LTPURPLE1; - s_preferences.forcemodel.textX = MENU_BUTTON_TEXT_X; - s_preferences.forcemodel.textY = MENU_BUTTON_TEXT_Y; - s_preferences.forcemodel.listnames = s_OffOnNone_Names; - s_preferences.forcemodel.width = width; + s_preferences.forcemodel.generic.type = MTYPE_SPINCONTROL; + s_preferences.forcemodel.generic.flags = QMF_HIGHLIGHT_IF_FOCUS; + s_preferences.forcemodel.generic.x = x; + s_preferences.forcemodel.generic.y = y; + s_preferences.forcemodel.generic.callback = Preferences_Event; + s_preferences.forcemodel.generic.id = ID_FORCEMODEL; + s_preferences.forcemodel.textEnum = MBT_FORCEMODEL; + s_preferences.forcemodel.textcolor = CT_BLACK; + s_preferences.forcemodel.textcolor2 = CT_WHITE; + s_preferences.forcemodel.color = CT_DKPURPLE1; + s_preferences.forcemodel.color2 = CT_LTPURPLE1; + s_preferences.forcemodel.textX = MENU_BUTTON_TEXT_X; + s_preferences.forcemodel.textY = MENU_BUTTON_TEXT_Y; + s_preferences.forcemodel.listnames = s_OffOnNone_Names; + s_preferences.forcemodel.width = width; //TiM - Replace overlay with crosshairs y += inc; - s_preferences.crosshair.generic.type = MTYPE_SPINCONTROL; - s_preferences.crosshair.generic.flags = QMF_HIGHLIGHT_IF_FOCUS; - s_preferences.crosshair.generic.x = x; - s_preferences.crosshair.generic.y = y; + s_preferences.crosshair.generic.type = MTYPE_SPINCONTROL; + s_preferences.crosshair.generic.flags = QMF_HIGHLIGHT_IF_FOCUS; + s_preferences.crosshair.generic.x = x; + s_preferences.crosshair.generic.y = y; //s_preferences.crosshair.generic.name = PIC_BUTTON2; - s_preferences.crosshair.generic.id = ID_CROSSHAIR; - s_preferences.crosshair.generic.callback = Preferences_Event; - s_preferences.crosshair.width = width; + s_preferences.crosshair.generic.id = ID_CROSSHAIR; + s_preferences.crosshair.generic.callback = Preferences_Event; + s_preferences.crosshair.width = width; //s_preferences.crosshair.height = 32; - s_preferences.crosshair.color = CT_DKPURPLE1; - s_preferences.crosshair.color2 = CT_LTPURPLE1; - s_preferences.crosshair.textX = MENU_BUTTON_TEXT_X; - s_preferences.crosshair.textY = MENU_BUTTON_TEXT_Y; - s_preferences.crosshair.textEnum = MBT_CROSSHAIR; - s_preferences.crosshair.textcolor = CT_BLACK; - s_preferences.crosshair.textcolor2 = CT_WHITE; - s_preferences.crosshair.listnames = s_OffOnNone_Names;; + s_preferences.crosshair.color = CT_DKPURPLE1; + s_preferences.crosshair.color2 = CT_LTPURPLE1; + s_preferences.crosshair.textX = MENU_BUTTON_TEXT_X; + s_preferences.crosshair.textY = MENU_BUTTON_TEXT_Y; + s_preferences.crosshair.textEnum = MBT_CROSSHAIR; + s_preferences.crosshair.textcolor = CT_BLACK; + s_preferences.crosshair.textcolor2 = CT_WHITE; + s_preferences.crosshair.listnames = s_OffOnNone_Names;; y += inc; - s_preferences.allowdownload.generic.type = MTYPE_SPINCONTROL; - s_preferences.allowdownload.generic.flags = QMF_HIGHLIGHT_IF_FOCUS; - s_preferences.allowdownload.generic.x = x; - s_preferences.allowdownload.generic.y = y; - s_preferences.allowdownload.generic.callback = Preferences_Event; - s_preferences.allowdownload.generic.id = ID_ALLOWDOWNLOAD; - s_preferences.allowdownload.textEnum = MBT_ALLOWDOWNLOAD; - s_preferences.allowdownload.textcolor = CT_BLACK; - s_preferences.allowdownload.textcolor2 = CT_WHITE; - s_preferences.allowdownload.color = CT_DKPURPLE1; - s_preferences.allowdownload.color2 = CT_LTPURPLE1; - s_preferences.allowdownload.textX = MENU_BUTTON_TEXT_X; - s_preferences.allowdownload.textY = MENU_BUTTON_TEXT_Y; - s_preferences.allowdownload.listnames = s_OffOnNone_Names; - s_preferences.allowdownload.width = width; + s_preferences.allowdownload.generic.type = MTYPE_SPINCONTROL; + s_preferences.allowdownload.generic.flags = QMF_HIGHLIGHT_IF_FOCUS; + s_preferences.allowdownload.generic.x = x; + s_preferences.allowdownload.generic.y = y; + s_preferences.allowdownload.generic.callback = Preferences_Event; + s_preferences.allowdownload.generic.id = ID_ALLOWDOWNLOAD; + s_preferences.allowdownload.textEnum = MBT_ALLOWDOWNLOAD; + s_preferences.allowdownload.textcolor = CT_BLACK; + s_preferences.allowdownload.textcolor2 = CT_WHITE; + s_preferences.allowdownload.color = CT_DKPURPLE1; + s_preferences.allowdownload.color2 = CT_LTPURPLE1; + s_preferences.allowdownload.textX = MENU_BUTTON_TEXT_X; + s_preferences.allowdownload.textY = MENU_BUTTON_TEXT_Y; + s_preferences.allowdownload.listnames = s_OffOnNone_Names; + s_preferences.allowdownload.width = width; y += inc; - s_preferences.simpleitems.generic.type = MTYPE_SPINCONTROL; - s_preferences.simpleitems.generic.flags = QMF_HIGHLIGHT_IF_FOCUS; - s_preferences.simpleitems.generic.x = x; - s_preferences.simpleitems.generic.y = y; - s_preferences.simpleitems.generic.callback = Preferences_Event; - s_preferences.simpleitems.generic.id = ID_SIMPLEITEMS; - s_preferences.simpleitems.textEnum = MBT_SIMPLEITEMS; - s_preferences.simpleitems.textcolor = CT_BLACK; - s_preferences.simpleitems.textcolor2 = CT_WHITE; - s_preferences.simpleitems.color = CT_DKPURPLE1; - s_preferences.simpleitems.color2 = CT_LTPURPLE1; - s_preferences.simpleitems.textX = MENU_BUTTON_TEXT_X; - s_preferences.simpleitems.textY = MENU_BUTTON_TEXT_Y; - s_preferences.simpleitems.listnames = s_OffOnNone_Names; - s_preferences.simpleitems.width = width; + s_preferences.simpleitems.generic.type = MTYPE_SPINCONTROL; + s_preferences.simpleitems.generic.flags = QMF_HIGHLIGHT_IF_FOCUS; + s_preferences.simpleitems.generic.x = x; + s_preferences.simpleitems.generic.y = y; + s_preferences.simpleitems.generic.callback = Preferences_Event; + s_preferences.simpleitems.generic.id = ID_SIMPLEITEMS; + s_preferences.simpleitems.textEnum = MBT_SIMPLEITEMS; + s_preferences.simpleitems.textcolor = CT_BLACK; + s_preferences.simpleitems.textcolor2 = CT_WHITE; + s_preferences.simpleitems.color = CT_DKPURPLE1; + s_preferences.simpleitems.color2 = CT_LTPURPLE1; + s_preferences.simpleitems.textX = MENU_BUTTON_TEXT_X; + s_preferences.simpleitems.textY = MENU_BUTTON_TEXT_Y; + s_preferences.simpleitems.listnames = s_OffOnNone_Names; + s_preferences.simpleitems.width = width; y += inc; - s_preferences.textlanguage.generic.type = MTYPE_SPINCONTROL; - s_preferences.textlanguage.generic.flags = QMF_HIGHLIGHT_IF_FOCUS; - s_preferences.textlanguage.generic.x = x; - s_preferences.textlanguage.generic.y = y; - s_preferences.textlanguage.generic.name = "menu/common/bar1.tga"; - s_preferences.textlanguage.generic.callback = Preferences_Event; - s_preferences.textlanguage.generic.id = ID_TEXTLANGUAGE; - s_preferences.textlanguage.color = CT_DKPURPLE1; - s_preferences.textlanguage.color2 = CT_LTPURPLE1; - s_preferences.textlanguage.textX = MENU_BUTTON_TEXT_X; - s_preferences.textlanguage.textY = MENU_BUTTON_TEXT_Y; - s_preferences.textlanguage.textEnum = MBT_TEXTLANGUAGE; - s_preferences.textlanguage.textcolor = CT_BLACK; - s_preferences.textlanguage.textcolor2 = CT_WHITE; - s_preferences.textlanguage.listnames = s_textlanguage_Names; - s_preferences.textlanguage.width = width; + s_preferences.textlanguage.generic.type = MTYPE_SPINCONTROL; + s_preferences.textlanguage.generic.flags = QMF_HIGHLIGHT_IF_FOCUS; + s_preferences.textlanguage.generic.x = x; + s_preferences.textlanguage.generic.y = y; + s_preferences.textlanguage.generic.name = "menu/common/bar1.tga"; + s_preferences.textlanguage.generic.callback = Preferences_Event; + s_preferences.textlanguage.generic.id = ID_TEXTLANGUAGE; + s_preferences.textlanguage.color = CT_DKPURPLE1; + s_preferences.textlanguage.color2 = CT_LTPURPLE1; + s_preferences.textlanguage.textX = MENU_BUTTON_TEXT_X; + s_preferences.textlanguage.textY = MENU_BUTTON_TEXT_Y; + s_preferences.textlanguage.textEnum = MBT_TEXTLANGUAGE; + s_preferences.textlanguage.textcolor = CT_BLACK; + s_preferences.textlanguage.textcolor2 = CT_WHITE; + s_preferences.textlanguage.listnames = s_textlanguage_Names; + s_preferences.textlanguage.width = width; y += inc; - s_preferences.voicelanguage.generic.type = MTYPE_SPINCONTROL; - s_preferences.voicelanguage.generic.flags = QMF_HIGHLIGHT_IF_FOCUS; - s_preferences.voicelanguage.generic.x = x; - s_preferences.voicelanguage.generic.y = y; - s_preferences.voicelanguage.generic.name = "menu/common/bar1.tga"; - s_preferences.voicelanguage.generic.callback = Preferences_Event; - s_preferences.voicelanguage.generic.id = ID_VOICELANGUAGE; - s_preferences.voicelanguage.color = CT_DKPURPLE1; - s_preferences.voicelanguage.color2 = CT_LTPURPLE1; - s_preferences.voicelanguage.textX = MENU_BUTTON_TEXT_X; - s_preferences.voicelanguage.textY = MENU_BUTTON_TEXT_Y; - s_preferences.voicelanguage.textEnum = MBT_VOICELANGUAGE; - s_preferences.voicelanguage.textcolor = CT_BLACK; - s_preferences.voicelanguage.textcolor2 = CT_WHITE; - s_preferences.voicelanguage.listnames = s_voicelanguage_Names; - s_preferences.voicelanguage.width = width; + s_preferences.voicelanguage.generic.type = MTYPE_SPINCONTROL; + s_preferences.voicelanguage.generic.flags = QMF_HIGHLIGHT_IF_FOCUS; + s_preferences.voicelanguage.generic.x = x; + s_preferences.voicelanguage.generic.y = y; + s_preferences.voicelanguage.generic.name = "menu/common/bar1.tga"; + s_preferences.voicelanguage.generic.callback = Preferences_Event; + s_preferences.voicelanguage.generic.id = ID_VOICELANGUAGE; + s_preferences.voicelanguage.color = CT_DKPURPLE1; + s_preferences.voicelanguage.color2 = CT_LTPURPLE1; + s_preferences.voicelanguage.textX = MENU_BUTTON_TEXT_X; + s_preferences.voicelanguage.textY = MENU_BUTTON_TEXT_Y; + s_preferences.voicelanguage.textEnum = MBT_VOICELANGUAGE; + s_preferences.voicelanguage.textcolor = CT_BLACK; + s_preferences.voicelanguage.textcolor2 = CT_WHITE; + s_preferences.voicelanguage.listnames = s_voicelanguage_Names; + s_preferences.voicelanguage.width = width; - Menu_AddItem( &s_gameoptions.menu, &s_preferences.flares ); - Menu_AddItem( &s_gameoptions.menu, &s_preferences.wallmarks ); - Menu_AddItem( &s_gameoptions.menu, &s_preferences.dynamiclights ); - Menu_AddItem( &s_gameoptions.menu, &s_preferences.identifytarget ); - Menu_AddItem( &s_gameoptions.menu, &s_preferences.synceveryframe ); - Menu_AddItem( &s_gameoptions.menu, &s_preferences.forcemodel ); - Menu_AddItem( &s_gameoptions.menu, &s_preferences.allowdownload ); - Menu_AddItem( &s_gameoptions.menu, &s_preferences.simpleitems ); - Menu_AddItem( &s_gameoptions.menu, &s_preferences.textlanguage ); - Menu_AddItem( &s_gameoptions.menu, &s_preferences.voicelanguage ); - Menu_AddItem( &s_gameoptions.menu, &s_preferences.crosshair); + Menu_AddItem(&s_gameoptions.menu, &s_preferences.flares); + Menu_AddItem(&s_gameoptions.menu, &s_preferences.wallmarks); + Menu_AddItem(&s_gameoptions.menu, &s_preferences.dynamiclights); + Menu_AddItem(&s_gameoptions.menu, &s_preferences.identifytarget); + Menu_AddItem(&s_gameoptions.menu, &s_preferences.synceveryframe); + Menu_AddItem(&s_gameoptions.menu, &s_preferences.forcemodel); + Menu_AddItem(&s_gameoptions.menu, &s_preferences.allowdownload); + Menu_AddItem(&s_gameoptions.menu, &s_preferences.simpleitems); + Menu_AddItem(&s_gameoptions.menu, &s_preferences.textlanguage); + Menu_AddItem(&s_gameoptions.menu, &s_preferences.voicelanguage); + Menu_AddItem(&s_gameoptions.menu, &s_preferences.crosshair); s_gameoptions.menu.initialized = qtrue; // Show we've been here @@ -546,12 +547,12 @@ static void GameOptions_MenuInit( void ) UI_GameOptionsMenu ================= */ -void UI_GameOptionsMenu( void ) +void UI_GameOptionsMenu(void) { UI_LogFuncBegin(); GameOptions_MenuInit(); - UI_PushMenu( &s_gameoptions.menu ); + UI_PushMenu(&s_gameoptions.menu); UI_LogFuncEnd(); }