// Copyright (C) 1999-2000 Id Software, Inc. // #include "ui_local.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]; int classIndex; int rankIndex; //char age[36]; //char race[36]; //float height; //float weight; } initialData_t; typedef struct { menuframework_s menu; int prevMenu; //listdata char profileList[MAX_PROFILES][32]; char* profileListPtr[MAX_PROFILES]; //profile loader /*int 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; int 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) int numRanks; char *rankSetList[MAX_RANKSETS+1]; int 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 int numClasses; char *classSetList[MAX_CLASSSETS+1]; int numClassSets; } playersettings_t; static playersettings_t s_playersettings; //static int gamecodetoui[] = {4,2,3,0,5,1,6}; //static int uitogamecode[] = {4,6,2,3,1,5,7}; /* static int handicap_items[] = { MNT_HANDICAP_NONE, MNT_HANDICAP_95, MNT_HANDICAP_90, MNT_HANDICAP_85, MNT_HANDICAP_80, MNT_HANDICAP_75, MNT_HANDICAP_70, MNT_HANDICAP_65, MNT_HANDICAP_60, MNT_HANDICAP_55, MNT_HANDICAP_50, MNT_HANDICAP_45, MNT_HANDICAP_40, MNT_HANDICAP_35, MNT_HANDICAP_30, MNT_HANDICAP_25, MNT_HANDICAP_20, MNT_HANDICAP_15, MNT_HANDICAP_10, MNT_HANDICAP_05, 0 }; */ //QVM HACK! //TiM - You're a QVM hack. :) //Okay... with the new rank system... here's what I guess we'll do. //We're going to have to build a list of all the rank files we have, //go thru each one, and find the rank that they're using right now and what set it's from //From there... we'll make a button so they can scroll rank files, as well as what ranks there are. :) /*const char* prank_items_formal3[] = { "Crewman", "Cadet 4th Class", "Cadet 3rd Class", "Cadet 2nd Class", "Cadet 1st Class", "Ensign", "Lieutenant J.G", "Lieutenant", "Lt. Commander", "Commander", "Captain", "Commodore", "Rear Admiral", "Vice Admiral", "Admiral", "Fleet Admiral", 0 }; const char* prank_items_actual3[] = { "crewman", "cadet1", "cadet2", "cadet3", "cadet4", "ensign", "ltjg", "lt", "ltcmdr", "cmdr", "capt", "cmmdr", "adm2", "adm3", "adm4", "adm5", 0 };*/ /*typedef enum { CLASS_NONE = 0, CLASS_COMMAND, CLASS_SCIENCE, CLASS_MEDICAL, CLASS_ENGINEER, CLASS_SECURITY, CLASS_ALIEN, CLASS_MARINE, CLASS_ADMIN, CLASS_OTHER, MAX_CLASSES } ingamemenu_class_t;*/ /*const char* playerClassList[] = { "None", "Command", "Science", "Medical", "Engineer", "Security", "Alien", "Marine", "Admin", "Other", 0 };*/ /*static float yawDelta3; static float yaw3 = 180 - 30; static float placeHolder3 = 180 - 30;*/ /* ======================= PlayerSettings_LoadProfiles TiM: Loads user profiles from external cfgs ======================= */ /*static void PlayerSettings_LoadProfiles( void ) { int numDirs; char dirList[4096]; char* dirptr; int dirlen; int i; //get list numDirs = trap_FS_GetFileList( "profiles", ".cfg", dirList, sizeof( dirList ) ); dirptr = dirList; for (i = 0; i < numDirs; i++, dirptr+= dirlen+1) { dirlen = strlen( dirptr ); if ( !Q_stricmp( dirptr + dirlen - 4, ".cfg" ) ) { dirptr[dirlen-4]='\0'; } Q_strncpyz( s_playersettings.profileList[s_playersettings.numProfiles], dirptr, sizeof( s_playersettings.profileList[s_playersettings.numProfiles] ) ); s_playersettings.numProfiles++; } //link from the char array to the ptr array so we can add this to the spin control for ( i=0; igeneric.x, (float)b->generic.y, (float)b->width, (float)b->height, origin, &s_playersettings.playerinfo, (int)(uis.realtime/1.5) ); /*if ( uis.spinView == qtrue && !trap_Key_IsDown( K_MOUSE1 )) { uis.spinView = qfalse; placeHolder3 = yaw3; }*/ } /* ================= PlayerSettings_SaveChanges ================= */ static void PlayerSettings_SaveChanges( void ) { // 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; // handicap // trap_Cvar_SetValue( "handicap", 100 - s_playersettings.handicap.curvalue * 5 ); //if ( s_playersettings.pClass.curvalue == 0 || s_playersettings.pClass.curvalue == 6 ) { // trap_Cvar_Set( "ui_playerrank", "crewman" ); // s_playersettings.pRank.curvalue = 0; //} //else // trap_Cvar_Set( "ui_playerRank", uis.rankSet.rankNames[s_playersettings.pRank.curvalue].consoleName ); //trap_Cvar_Set( "ui_playerrank", prank_items_actual3[s_playersettings.pRank.curvalue] ); // effects color // trap_Cvar_SetValue( "color", uitogamecode[s_playersettings.effects.curvalue] ); } /* ================= PlayerSettings_MenuKey ================= */ static sfxHandle_t PlayerSettings_MenuKey( int key ) { //TiM - Don't save it this way /*if( key == K_MOUSE2 || key == K_ESCAPE ) { PlayerSettings_SaveChanges(); }*/ /*if ( ( key == K_MOUSE1 || key == K_ENTER ) && s_playersettings.commit.generic.flags & QMF_HASMOUSEFOCUS ) return menu_out_sound;*/ return Menu_DefaultKey( &s_playersettings.menu, key ); } /* ================= PlayerSettings_SetMenuItems ================= */ static void PlayerSettings_SetMenuItems( void ) { int i; // Player Name Q_strncpyz( s_playersettings.name.field.buffer, UI_Cvar_VariableString("name"), sizeof(s_playersettings.name.field.buffer) ); //Q_strncpyz( s_playersettings.initData.name, s_playersettings.name.field.buffer, sizeof( s_playersettings.initData.name ) ); //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 ) ); //Q_strncpyz( s_playersettings.initData.age, s_playersettings.age.field.buffer, sizeof( s_playersettings.initData.age ) ); //Player Race Q_strncpyz( s_playersettings.race.field.buffer, UI_Cvar_VariableString( "race" ), sizeof( s_playersettings.race.field.buffer ) ); //Q_strncpyz( s_playersettings.initData.race, s_playersettings.race.field.buffer, sizeof( s_playersettings.initData.race ) ); //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; //s_playersettings.initData.height = s_playersettings.height.curvalue; } //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; //s_playersettings.initData.weight = s_playersettings.weight.curvalue; } /* // effects color c = trap_Cvar_VariableValue( "color" ) - 1; if( c < 0 || c > 6 ) { c = 6; } s_playersettings.effects.curvalue = gamecodetoui[c]; // model/skin memset( &s_playersettings.playerinfo, 0, sizeof(playerInfo_t) ); viewangles[YAW] = 180 - 30; viewangles[PITCH] = 0; viewangles[ROLL] = 0; UI_PlayerInfo_SetModel( &s_playersettings.playerinfo, UI_Cvar_VariableString( "model" ) ); UI_PlayerInfo_SetInfo( &s_playersettings.playerinfo, LEGS_IDLE, TORSO_STAND2, viewangles, vec3_origin, WP_6, qfalse ); // handicap h = Com_Clamp( 5, 100, trap_Cvar_VariableValue("handicap") ); s_playersettings.handicap.curvalue = 20 - h / 5; */ //PlayerSettings_AffectModel(); } /* ================= PlayerSettings_SpinPlayer ================= */ static void PlayerSettings_SpinPlayer( void* ptr, int event) { if ( event == QM_ACTIVATED ) { uis.spinView = qtrue; uis.cursorpx = uis.cursorx; } } /* ================= PlayerSettings_MenuEvent ================= */ static void PlayerSettings_MenuEvent( void* ptr, int event ) { if( event != QM_ACTIVATED ) { return; } s_playersettings.displayChangedSettings = qfalse; s_playersettings.settingsChanged = PlayerSettings_SettingsAreDifferent(); switch( ((menucommon_s*)ptr)->id ) { /* case ID_HANDICAP: trap_Cvar_Set( "handicap", va( "%i", 100 - 25 * s_playersettings.handicap.curvalue ) ); break;*/ 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; } } /* ================= PlayerSettingsMenu_Graphics ================= */ void PlayerSettingsMenu_Graphics (void) { // 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); /* trap_R_SetColor( colorTable[s_playersettings.loadProfile.color]); UI_DrawHandlePic(s_playersettings.loadProfile.generic.x - 14, s_playersettings.loadProfile.generic.y, MENU_BUTTON_MED_HEIGHT, MENU_BUTTON_MED_HEIGHT, uis.graphicButtonLeftEnd); trap_R_SetColor( colorTable[s_playersettings.saveProfile.color]); UI_DrawHandlePic(s_playersettings.saveProfile.generic.x - 14, s_playersettings.saveProfile.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); } { int 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] ); //They can do ranks anytime they want now, but ingame, they won't have ranks in those classes /*if (s_playersettings.pClass.curvalue == 6 || s_playersettings.pClass.curvalue == 0 ) { //if current class is alien or none s_playersettings.pRank.generic.flags |= QMF_GRAYED; //gray out the rank, since aliens or nobodies don't 'do' ranks // s_playersettings.pRank.color = CT_MDGREY; } else { s_playersettings.pRank.generic.flags &= ~QMF_GRAYED; // s_playersettings.pRank.color = CT_DKPURPLE1; }*/ } /* ================= PlayerSettings_MenuDraw ================= */ static void PlayerSettings_MenuDraw (void) { PlayerSettingsMenu_Graphics(); Menu_Draw( &s_playersettings.menu ); } /* ================= PlayerSettings_MenuInit ================= */ static void PlayerSettings_MenuInit(int menuFrom) { int y; //static char playername[32]; int 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 = 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 = 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.pClass.curvalue == 6 || s_playersettings.pClass.curvalue == 0 ) { //if current class is alien or none // s_playersettings.pRank.generic.flags |= QMF_INACTIVE; //gray out the rank, since aliens or nobodies don't 'do' ranks // s_playersettings.pRank.color = CT_MDGREY; // } // else { // s_playersettings.pRank.generic.flags &= ~QMF_INACTIVE; // s_playersettings.pRank.color = CT_DKPURPLE1; // } 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; /*#if 0 //RPG-X: TiM- Damn this statement is cool! if ( ingameFlag ) //Why was this here? It means people cant change their models? O_o { s_playersettings.model.generic.flags |= QMF_GRAYED; } #endif*/ /* s_playersettings.profiles.generic.type = MTYPE_SPINCONTROL; s_playersettings.profiles.generic.flags = QMF_HIGHLIGHT_IF_FOCUS; s_playersettings.profiles.generic.x = 96;//134; s_playersettings.profiles.generic.y = 58;//207; s_playersettings.profiles.numitems = s_playersettings.numProfiles; s_playersettings.profiles.textEnum = MBT_PROFILESCROLL; s_playersettings.profiles.textcolor = CT_BLACK; s_playersettings.profiles.textcolor2 = CT_WHITE; s_playersettings.profiles.color = CT_DKPURPLE1; s_playersettings.profiles.color2 = CT_LTPURPLE1; s_playersettings.profiles.width = 90;//80; s_playersettings.profiles.textX = 5; s_playersettings.profiles.textY = 2; s_playersettings.profiles.itemnames = (const char**)s_playersettings.profileListPtr; s_playersettings.loadProfile.generic.type = MTYPE_BITMAP; s_playersettings.loadProfile.generic.flags = QMF_HIGHLIGHT_IF_FOCUS; s_playersettings.loadProfile.generic.x = 110; s_playersettings.loadProfile.generic.y = 80; s_playersettings.loadProfile.generic.name = BUTTON_GRAPHIC_LONGRIGHT; s_playersettings.loadProfile.generic.callback = PlayerSettings_MenuEvent; s_playersettings.loadProfile.generic.id = ID_LOADPROFILE; s_playersettings.loadProfile.width = 110; s_playersettings.loadProfile.height = 18; s_playersettings.loadProfile.color = CT_DKPURPLE1; s_playersettings.loadProfile.color2 = CT_LTPURPLE1; s_playersettings.loadProfile.textX = MENU_BUTTON_TEXT_X; s_playersettings.loadProfile.textY = MENU_BUTTON_TEXT_Y; s_playersettings.loadProfile.textcolor = CT_BLACK; s_playersettings.loadProfile.textcolor2 = CT_WHITE; s_playersettings.loadProfile.textEnum = MBT_LOADPROFILE; s_playersettings.profileName.generic.type = MTYPE_FIELD; s_playersettings.profileName.field.widthInChars = MAX_NAMELENGTH; s_playersettings.profileName.field.maxchars = MAX_NAMELENGTH; s_playersettings.profileName.generic.callback = PlayerSettings_MenuEvent; s_playersettings.profileName.generic.x = 96 + 12 + UI_ProportionalStringWidth( menu_button_text[MBT_PROFILENAME][0], UI_SMALLFONT );//159;//180; s_playersettings.profileName.generic.y = 340;//182; s_playersettings.profileName.field.style = UI_SMALLFONT; s_playersettings.profileName.field.titleEnum = MBT_PROFILENAME; s_playersettings.profileName.field.titlecolor = CT_LTGOLD1; s_playersettings.profileName.field.textcolor = CT_DKGOLD1; s_playersettings.profileName.field.textcolor2 = CT_LTGOLD1; s_playersettings.saveProfile.generic.type = MTYPE_BITMAP; s_playersettings.saveProfile.generic.flags = QMF_HIGHLIGHT_IF_FOCUS; s_playersettings.saveProfile.generic.x = 110; s_playersettings.saveProfile.generic.y = 359; s_playersettings.saveProfile.generic.name = BUTTON_GRAPHIC_LONGRIGHT; s_playersettings.saveProfile.generic.callback = PlayerSettings_MenuEvent; s_playersettings.saveProfile.generic.id = ID_SAVEPROFILE; s_playersettings.saveProfile.width = 110; s_playersettings.saveProfile.height = 18; s_playersettings.saveProfile.color = CT_DKPURPLE1; s_playersettings.saveProfile.color2 = CT_LTPURPLE1; s_playersettings.saveProfile.textX = MENU_BUTTON_TEXT_X; s_playersettings.saveProfile.textY = MENU_BUTTON_TEXT_Y; s_playersettings.saveProfile.textcolor = CT_BLACK; s_playersettings.saveProfile.textcolor2 = CT_WHITE; s_playersettings.saveProfile.textEnum = MBT_SAVEPROFILE;*/ 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.playername.generic.type = MTYPE_PTEXT; s_playersettings.playername.generic.flags = QMF_INACTIVE; s_playersettings.playername.generic.x = 444; s_playersettings.playername.generic.y = 63; s_playersettings.playername.string = UI_Cvar_VariableString("name"); //s_playersettings.name.field.buffer s_playersettings.playername.style = UI_SMALLFONT; s_playersettings.playername.color = colorTable[CT_BLACK];*/ 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; // if (s_playersettings.prevMenu == PS_MENU_CONTROLS) // { // SetupMenu_TopButtons(&s_playersettings.menu,MENU_PLAYER); // } Menu_AddItem( &s_playersettings.menu, &s_playersettings.mainmenu); Menu_AddItem( &s_playersettings.menu, &s_playersettings.back); //Menu_AddItem( &s_playersettings.menu, &s_playersettings.profiles ); //Menu_AddItem( &s_playersettings.menu, &s_playersettings.loadProfile ); //Menu_AddItem( &s_playersettings.menu, &s_playersettings.playername ); 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.profileName ); //Menu_AddItem( &s_playersettings.menu, &s_playersettings.saveProfile ); 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 ); // Menu_AddItem( &s_playersettings.menu, &s_playersettings.item_null ); //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; } } /* ================= PlayerSettings_Cache ================= */ void PlayerSettings_Cache( void ) { 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_PlayerSettingsMenu ================= */ void UI_PlayerSettingsMenu(int menuFrom) { PlayerSettings_MenuInit(menuFrom); UI_PushMenu( &s_playersettings.menu ); }