mirror of
https://github.com/UberGames/rpgxEF.git
synced 2024-11-10 15:21:34 +00:00
1539 lines
55 KiB
C
1539 lines
55 KiB
C
|
// 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; i<s_playersettings.numProfiles; i++ ) {
|
||
|
s_playersettings.profileListPtr[i] = s_playersettings.profileList[i];
|
||
|
}
|
||
|
}
|
||
|
|
||
|
static void PlayerSettings_ExecuteProfileConfig( void ) {
|
||
|
char fileRoute[MAX_QPATH];
|
||
|
|
||
|
if ( !s_playersettings.profileList[s_playersettings.profiles.curvalue][0] ) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
Com_sprintf( fileRoute, MAX_QPATH, "%s/%s.cfg", PROFILE_PATH, s_playersettings.profileList[s_playersettings.profiles.curvalue] );
|
||
|
|
||
|
trap_Cmd_ExecuteText( EXEC_APPEND, va( "execute %s", fileRoute ) );
|
||
|
|
||
|
//refresh the mainlist
|
||
|
PlayerSettings_SetMenuItems();
|
||
|
}*/
|
||
|
|
||
|
/*
|
||
|
=======================
|
||
|
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 ) {
|
||
|
qboolean endResult=qfalse;
|
||
|
|
||
|
//Name
|
||
|
if ( Q_stricmp( s_playersettings.name.field.buffer, UI_Cvar_VariableString( "name" ) ) ) {
|
||
|
//Com_Printf( S_COLOR_RED "Name changed!\n");
|
||
|
endResult = qtrue;
|
||
|
}
|
||
|
|
||
|
//Age
|
||
|
if ( Q_stricmp( s_playersettings.age.field.buffer, UI_Cvar_VariableString( "age" ) ) ) {
|
||
|
//Com_Printf( S_COLOR_RED "Age changed!\n");
|
||
|
endResult = qtrue;
|
||
|
}
|
||
|
|
||
|
//Race
|
||
|
if ( Q_stricmp( s_playersettings.race.field.buffer, UI_Cvar_VariableString( "race" ) ) ) {
|
||
|
//Com_Printf( S_COLOR_RED "Race changed!\n");
|
||
|
endResult = qtrue;
|
||
|
}
|
||
|
|
||
|
//playerClass field
|
||
|
if ( s_playersettings.pClass.curvalue != s_playersettings.initData.classIndex ) {
|
||
|
//Com_Printf( S_COLOR_RED "Class changed!\n");
|
||
|
endResult = qtrue;
|
||
|
}
|
||
|
|
||
|
//playerRank field
|
||
|
if ( s_playersettings.pRank.curvalue != s_playersettings.initData.rankIndex ) {
|
||
|
//Com_Printf( S_COLOR_RED "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" ) ) ) ) ) {
|
||
|
//Com_Printf( S_COLOR_RED "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" ) ) ) ) ) {
|
||
|
//Com_Printf( S_COLOR_RED "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" ) ) ) {
|
||
|
//Com_Printf( S_COLOR_RED "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" ) ) ) {
|
||
|
//Com_Printf( S_COLOR_RED "Rank text changed!\n");
|
||
|
endResult = qtrue;
|
||
|
}
|
||
|
|
||
|
return endResult;
|
||
|
}
|
||
|
|
||
|
/*
|
||
|
=================
|
||
|
PlayerSettings_AffectModel
|
||
|
=================
|
||
|
*/
|
||
|
|
||
|
/*static void PlayerSettings_AffectModel( void )
|
||
|
{
|
||
|
char buf[MAX_QPATH];
|
||
|
char tempBuf[MAX_QPATH];
|
||
|
int i;
|
||
|
char* slash;
|
||
|
|
||
|
trap_Cvar_VariableStringBuffer( "model", buf, sizeof( buf ) );
|
||
|
|
||
|
slash = strchr( UI_Cvar_VariableString("model"), '/' ); //check if we gotz a slash in the string
|
||
|
|
||
|
if (slash)
|
||
|
{ //gotta get rid of everything after the slash :S
|
||
|
for( i =0; i<= MAX_QPATH; i++ )
|
||
|
{
|
||
|
if ( buf[i] != '/' )
|
||
|
{
|
||
|
tempBuf[i] = buf[i];
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
tempBuf[i] = 0;
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
Q_strncpyz(buf, tempBuf, sizeof(buf) );
|
||
|
//Com_Printf( "buf = %s", buf );
|
||
|
}
|
||
|
|
||
|
slash = strchr( buf, '/' ); //check if we gotz a slash in the string
|
||
|
|
||
|
if ( !slash ) {
|
||
|
switch ( s_playersettings.pClass.curvalue ) { //Change model skin depending on what class
|
||
|
case 0: //no class
|
||
|
case 6: //alien
|
||
|
case 4: //engineer
|
||
|
case 5: //security
|
||
|
Q_strcat( buf, MAX_QPATH, "/default" );
|
||
|
// Com_Printf( "buf = %s \n", buf );
|
||
|
break;
|
||
|
case 1: //command
|
||
|
Q_strcat( buf, MAX_QPATH, "/red" );
|
||
|
break;
|
||
|
case 2: //science
|
||
|
case 3: //medical
|
||
|
Q_strcat( buf, MAX_QPATH, "/blue" );
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
//Com_Printf( "buf = %s \n", buf );
|
||
|
trap_Cvar_Set( "model", buf );
|
||
|
}
|
||
|
}*/
|
||
|
|
||
|
|
||
|
/*
|
||
|
=================
|
||
|
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 )
|
||
|
{
|
||
|
menubitmap_s *b;
|
||
|
vec3_t viewangles;
|
||
|
vec3_t origin = {-40, 2.5, -4 }; //-3.8
|
||
|
char buf[MAX_QPATH];
|
||
|
|
||
|
//if (uis.spinView) {
|
||
|
// yawDelta3 = ( uis.cursorx - uis.cursorpx ) + placeHolder3 /*/ ( uis.frametime / 1000.0f ) ) / 20.0f*/; //5.0f
|
||
|
|
||
|
// yaw3 = AngleNormalize360 ( yawDelta3 );
|
||
|
//}
|
||
|
|
||
|
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 );
|
||
|
|
||
|
/* viewangles[YAW] = 180 - 30; //30
|
||
|
viewangles[PITCH] = 0;
|
||
|
viewangles[ROLL] = 0; */
|
||
|
|
||
|
uis.lastYaw = viewangles[YAW] = 180 - 30; //180 - 30
|
||
|
}
|
||
|
|
||
|
/*s_playersettings.playerinfo.height = s_playersettings.height.curvalue;
|
||
|
s_playersettings.playerinfo.weight = s_playersettings.weight.curvalue;*/
|
||
|
|
||
|
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, (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 );
|
||
|
}
|
||
|
|