mirror of
https://github.com/UberGames/rpgxEF.git
synced 2024-11-14 17:01:21 +00:00
1155 lines
42 KiB
C
1155 lines
42 KiB
C
// Copyright (C) 1999-2000 Id Software, Inc.
|
|
//
|
|
#include "ui_local.h"
|
|
#include "ui_logger.h"
|
|
|
|
enum ui_playersettingsIDs_e {
|
|
ID_NAME = 9,
|
|
ID_CLASS,
|
|
ID_RANK,
|
|
ID_EFFECTS,
|
|
ID_BACK,
|
|
|
|
// If this gets changed, also change it in ui_playermodel
|
|
ID_MODEL,
|
|
ID_DATA,
|
|
ID_MAINMENU,
|
|
ID_INGAMEMENU,
|
|
|
|
ID_CLASSTXT,
|
|
ID_RANKTXT,
|
|
ID_AGE,
|
|
ID_RACE,
|
|
ID_HEIGHT,
|
|
ID_WEIGHT,
|
|
|
|
ID_RANKSETS,
|
|
ID_CLASSSETS,
|
|
|
|
ID_COMMIT,
|
|
|
|
//ID_LOADPROFILE,
|
|
//ID_SAVEPROFILE
|
|
};
|
|
|
|
enum ui_playersettingsLimits_e {
|
|
MAX_PROFILES = 64
|
|
};
|
|
|
|
static const char PIC_MONBAR2[] = "menu/common/monbar_2.tga";
|
|
static const char PIC_SLIDER[] = "menu/common/slider.tga";
|
|
|
|
extern sfxHandle_t menu_out_sound;
|
|
|
|
static const char PROFILE_PATH[] = "profiles";
|
|
|
|
static void PlayerSettings_SetMenuItems(void);
|
|
//TiM - Ermm....
|
|
//We COULD actually base these directly off the cvar values... probably a bit of a mem saver then lol
|
|
|
|
typedef struct {
|
|
//char name[36];
|
|
int32_t classIndex;
|
|
int32_t rankIndex;
|
|
|
|
//char age[36];
|
|
//char race[36];
|
|
|
|
//float height;
|
|
//float weight;
|
|
} initialData_t;
|
|
|
|
typedef struct {
|
|
menuframework_s menu;
|
|
|
|
int32_t prevMenu;
|
|
|
|
//list data
|
|
char profileList[MAX_PROFILES][32];
|
|
char* profileListPtr[MAX_PROFILES];
|
|
|
|
//profile loader
|
|
/*int32_t numProfiles;
|
|
menulist_s profiles;
|
|
menubitmap_s loadProfile;
|
|
|
|
//profile saver
|
|
menufield_s profileName;
|
|
menubitmap_s saveProfile;*/
|
|
|
|
menubitmap_s player;
|
|
menubitmap_s mainmenu;
|
|
menubitmap_s back;
|
|
menufield_s name;
|
|
|
|
menulist_s pClass; //Menu - Class Spin
|
|
menufield_s classTxt; //Menu - Class manual input - coz of servers changing the name
|
|
menulist_s pRank; //Menu - Rank Spin
|
|
menufield_s rankTxt; //Menu - Rank manual input. What the hey lol
|
|
menufield_s age; //Menu - Ye olde player
|
|
menufield_s race; //Menu - Ye alien player
|
|
menuslider_s height; //Menu - Ye pipsqueak player
|
|
menuslider_s weight; //Menu - Ye fatass player
|
|
|
|
menulist_s rankSets; //If we have more than one rankset, add this scroller so players can choose what they want
|
|
menulist_s classSets;
|
|
|
|
menubitmap_s commit; //TiM - Manually have to confirm change now. Makes stuff feel more secure. :)
|
|
|
|
menubitmap_s model;
|
|
menubitmap_s data;
|
|
menubitmap_s item_null;
|
|
|
|
qhandle_t corner_ul_4_4;
|
|
qhandle_t corner_ur_4_4;
|
|
qhandle_t corner_ll_4_4;
|
|
qhandle_t corner_ll_4_18;
|
|
qhandle_t corner_lr_4_18;
|
|
|
|
//menutext_s playername; //Menu - PlayerName
|
|
qhandle_t fxBasePic;
|
|
qhandle_t fxPic[7];
|
|
playerInfo_t playerinfo;
|
|
int32_t current_fx;
|
|
char playerModel[MAX_QPATH];
|
|
|
|
char *rankList[MAX_RANKS + 1]; //TiM: Local buffer for ranks data ( + 1 slot for 'Other' field + 1 for null terminator)
|
|
int32_t numRanks;
|
|
char *rankSetList[MAX_RANKSETS + 1];
|
|
int32_t numRankSets;
|
|
|
|
qboolean settingsChanged; //if settings have been altered, enable this so as to enable the 'commit' button
|
|
qboolean displayChangedSettings;
|
|
|
|
initialData_t initData; //TiM | Storage for all our initial data. So if/when we change the data, we'll know exactly when to make the commit button solid
|
|
|
|
char *classNameList[MAX_CLASSES + 1]; //+2 = other + null
|
|
int32_t numClasses;
|
|
|
|
char *classSetList[MAX_CLASSSETS + 1];
|
|
int32_t numClassSets;
|
|
} playersettings_t;
|
|
|
|
static playersettings_t s_playersettings;
|
|
|
|
/*
|
|
=======================
|
|
PlayerSettings_SettingsAreDifferent
|
|
|
|
TiM: Is called each time an action
|
|
event is received so as to check to see if any settings
|
|
have been changed. If they have, make the 'apply changes'
|
|
button appear.
|
|
=======================
|
|
*/
|
|
|
|
static qboolean PlayerSettings_SettingsAreDifferent(void) {
|
|
UI_LogFuncBegin();
|
|
qboolean endResult = qfalse;
|
|
|
|
//Name
|
|
if (Q_stricmp(s_playersettings.name.field.buffer, UI_Cvar_VariableString("name"))) {
|
|
//UI_Logger( LL_DEBUG, "Name changed!\n");
|
|
endResult = qtrue;
|
|
}
|
|
|
|
//Age
|
|
if (Q_stricmp(s_playersettings.age.field.buffer, UI_Cvar_VariableString("age"))) {
|
|
//UI_Logger( LL_DEBUG, "Age changed!\n");
|
|
endResult = qtrue;
|
|
}
|
|
|
|
//Race
|
|
if (Q_stricmp(s_playersettings.race.field.buffer, UI_Cvar_VariableString("race"))) {
|
|
//UI_Logger( LL_DEBUG, "Race changed!\n");
|
|
endResult = qtrue;
|
|
}
|
|
|
|
//playerClass field
|
|
if (s_playersettings.pClass.curvalue != s_playersettings.initData.classIndex) {
|
|
//UI_Logger( LL_DEBUG, "Class changed!\n");
|
|
endResult = qtrue;
|
|
}
|
|
|
|
//playerRank field
|
|
if (s_playersettings.pRank.curvalue != s_playersettings.initData.rankIndex) {
|
|
//UI_Logger( LL_DEBUG, "Rank changed!\n");
|
|
endResult = qtrue;
|
|
}
|
|
|
|
//height... hackily normalized lol
|
|
if (Q_stricmp(va("%2.5f", s_playersettings.height.curvalue), va("%2.5f", atof(UI_Cvar_VariableString("height"))))) {
|
|
//UI_Logger( LL_DEBUG, "Height changed!\n");
|
|
endResult = qtrue;
|
|
}
|
|
|
|
//weight... see above rofl
|
|
if (Q_stricmp(va("%2.5f", s_playersettings.weight.curvalue), va("%2.5f", atof(UI_Cvar_VariableString("weight"))))) {
|
|
//UI_Logger( LL_DEBUG, "Weight changed!\n");
|
|
endResult = qtrue;
|
|
}
|
|
|
|
//Class Text field
|
|
if (s_playersettings.pClass.curvalue == s_playersettings.numClasses && Q_stricmp(s_playersettings.classTxt.field.buffer, UI_Cvar_VariableString("ui_playerClass"))) {
|
|
//UI_Logger( LL_DEBUG, "Class text changed!\n");
|
|
endResult = qtrue;
|
|
}
|
|
|
|
//Rank Text field
|
|
if (s_playersettings.pRank.curvalue == s_playersettings.numRanks && Q_stricmp(s_playersettings.rankTxt.field.buffer, UI_Cvar_VariableString("ui_playerRank"))) {
|
|
//UI_Logger( LL_DEBUG, "Rank text changed!\n");
|
|
endResult = qtrue;
|
|
}
|
|
UI_LogFuncEnd();
|
|
return endResult;
|
|
}
|
|
|
|
/*
|
|
=================
|
|
PlayerSettings_DrawPlayer
|
|
RPG-X: TiM - Modified it so it actually fit in the box,
|
|
and had an appropriately set FOV
|
|
=================
|
|
*/
|
|
static void PlayerSettings_DrawPlayer(void *self)
|
|
{
|
|
UI_LogFuncBegin();
|
|
menubitmap_s *b;
|
|
vec3_t viewangles;
|
|
vec3_t origin = { -40, 2.5, -4 }; //-3.8
|
|
char buf[MAX_QPATH];
|
|
|
|
viewangles[YAW] = uis.lastYaw; //180 - 30
|
|
viewangles[PITCH] = 0;
|
|
viewangles[ROLL] = 0;
|
|
|
|
trap_Cvar_VariableStringBuffer("model", buf, sizeof(buf));
|
|
|
|
if (Q_stricmp(buf, s_playersettings.playerModel)) {
|
|
|
|
UI_PlayerInfo_SetModel(&s_playersettings.playerinfo, buf);
|
|
strcpy(s_playersettings.playerModel, buf);
|
|
|
|
uis.lastYaw = viewangles[YAW] = 180 - 30; //180 - 30
|
|
}
|
|
|
|
UI_PlayerInfo_SetInfo(&s_playersettings.playerinfo, BOTH_WALK1, BOTH_WALK1, viewangles, vec3_origin, WP_0, s_playersettings.height.curvalue, s_playersettings.weight.curvalue, qfalse);
|
|
|
|
b = (menubitmap_s*)self;
|
|
UI_DrawPlayer((float)b->generic.x, (float)b->generic.y, (float)b->width, (float)b->height, origin, &s_playersettings.playerinfo, (int32_t)(uis.realtime / 1.5));
|
|
|
|
UI_LogFuncEnd();
|
|
}
|
|
|
|
|
|
/*
|
|
=================
|
|
PlayerSettings_SaveChanges
|
|
=================
|
|
*/
|
|
static void PlayerSettings_SaveChanges(void)
|
|
{
|
|
UI_LogFuncBegin();
|
|
// name
|
|
trap_Cvar_Set("name", s_playersettings.name.field.buffer);
|
|
|
|
//class
|
|
if (s_playersettings.pClass.curvalue == s_playersettings.numClasses) {
|
|
if (s_playersettings.classTxt.field.buffer[0]) {
|
|
if (!ingameFlag)
|
|
trap_Cvar_Set("ui_playerClass", s_playersettings.classTxt.field.buffer);
|
|
else
|
|
trap_Cmd_ExecuteText(EXEC_APPEND, va("class %s\n", s_playersettings.classTxt.field.buffer));
|
|
}
|
|
}
|
|
else {
|
|
if (!ingameFlag)
|
|
trap_Cvar_Set("ui_playerClass", uis.classData[s_playersettings.pClass.curvalue].classNameConsole);
|
|
else
|
|
trap_Cmd_ExecuteText(EXEC_APPEND, va("class %s\n", uis.classData[s_playersettings.pClass.curvalue].classNameConsole));
|
|
}
|
|
|
|
//Save current class index to the initData
|
|
s_playersettings.initData.classIndex = s_playersettings.pClass.curvalue;
|
|
|
|
|
|
//rank
|
|
if (s_playersettings.pRank.curvalue == s_playersettings.numRanks) {
|
|
if (s_playersettings.rankTxt.field.buffer[0]) {
|
|
if (!ingameFlag)
|
|
trap_Cvar_Set("ui_playerRank", s_playersettings.rankTxt.field.buffer);
|
|
else
|
|
trap_Cmd_ExecuteText(EXEC_APPEND, va("rank %s\n", s_playersettings.rankTxt.field.buffer));
|
|
}
|
|
}
|
|
else {
|
|
if (!ingameFlag)
|
|
trap_Cvar_Set("ui_playerRank", Q_strlwr(uis.rankSet.rankNames[s_playersettings.pRank.curvalue].consoleName));
|
|
else
|
|
trap_Cmd_ExecuteText(EXEC_APPEND, va("rank %s\n", uis.rankSet.rankNames[s_playersettings.pRank.curvalue].consoleName));
|
|
}
|
|
|
|
uis.currentRank = s_playersettings.pRank.curvalue;
|
|
|
|
//Save teh rank index to the init data set
|
|
s_playersettings.initData.rankIndex = s_playersettings.pRank.curvalue;
|
|
|
|
//age
|
|
trap_Cvar_Set("age", s_playersettings.age.field.buffer);
|
|
//race
|
|
trap_Cvar_Set("race", s_playersettings.race.field.buffer);
|
|
|
|
//height
|
|
trap_Cvar_SetValue("height", s_playersettings.height.curvalue);
|
|
//weight
|
|
trap_Cvar_SetValue("weight", s_playersettings.weight.curvalue);
|
|
|
|
//Display the 'applied msg'
|
|
s_playersettings.displayChangedSettings = qtrue;
|
|
|
|
UI_LogFuncEnd();
|
|
}
|
|
|
|
|
|
/*
|
|
=================
|
|
PlayerSettings_MenuKey
|
|
=================
|
|
*/
|
|
static sfxHandle_t PlayerSettings_MenuKey(int32_t key)
|
|
{
|
|
return Menu_DefaultKey(&s_playersettings.menu, key);
|
|
}
|
|
|
|
|
|
/*
|
|
=================
|
|
PlayerSettings_SetMenuItems
|
|
=================
|
|
*/
|
|
static void PlayerSettings_SetMenuItems(void)
|
|
{
|
|
UI_LogFuncBegin();
|
|
int32_t i;
|
|
|
|
// Player Name
|
|
Q_strncpyz(s_playersettings.name.field.buffer, UI_Cvar_VariableString("name"), sizeof(s_playersettings.name.field.buffer));
|
|
|
|
//Player class
|
|
{
|
|
qboolean classFound = qfalse; //If we don't find a match, we'll use this to know
|
|
|
|
s_playersettings.pClass.curvalue = 0;
|
|
|
|
for (i = 0; i < s_playersettings.numClasses; i++) {
|
|
if (!Q_stricmp(uis.classData[i].classNameConsole, UI_Cvar_VariableString("ui_playerClass"))) {
|
|
s_playersettings.pClass.curvalue = i;
|
|
classFound = qtrue;
|
|
break;
|
|
}
|
|
}
|
|
|
|
//No class found. Set the field to 'other' and display the text field
|
|
if (!classFound) {
|
|
s_playersettings.pClass.curvalue = s_playersettings.numClasses;//CLASS_OTHER;
|
|
|
|
s_playersettings.classTxt.generic.flags &= ~QMF_HIDDEN;
|
|
|
|
memset(&s_playersettings.classTxt.field.buffer, 0, sizeof(s_playersettings.classTxt.field.buffer));
|
|
Q_strncpyz(s_playersettings.classTxt.field.buffer, UI_Cvar_VariableString("ui_playerClass"), sizeof(s_playersettings.classTxt.field.buffer));
|
|
}
|
|
|
|
s_playersettings.initData.classIndex = s_playersettings.pClass.curvalue;
|
|
}
|
|
|
|
|
|
//Player Rank
|
|
{
|
|
qboolean foundRank = qfalse; //0 is a valid rank, so we'll use this to test instead.
|
|
//I would have simply set curvalue to -1 to test, but I was unsure how the controls API would react to a negative value there
|
|
|
|
s_playersettings.pRank.curvalue = 0;
|
|
|
|
//Loop thru our rank set, and compare what's in the console to it
|
|
for (i = 0; i < MAX_RANKS; i++) {
|
|
if (!Q_stricmp(UI_Cvar_VariableString("ui_playerRank"), uis.rankSet.rankNames[i].consoleName)) {
|
|
s_playersettings.pRank.curvalue = i;
|
|
foundRank = qtrue;
|
|
break;
|
|
}
|
|
}
|
|
|
|
//TiM - no rank was found, so set our rank field to 'other'
|
|
if (!foundRank) {
|
|
//set value to the last in the cell
|
|
s_playersettings.pRank.curvalue = s_playersettings.numRanks;
|
|
|
|
//Init and show the text field control
|
|
s_playersettings.rankTxt.generic.flags &= ~QMF_HIDDEN;
|
|
|
|
memset(&s_playersettings.rankTxt.field.buffer, 0, sizeof(s_playersettings.rankTxt.field.buffer));
|
|
Q_strncpyz(s_playersettings.rankTxt.field.buffer, UI_Cvar_VariableString("ui_playerRank"), sizeof(s_playersettings.rankTxt.field.buffer));
|
|
}
|
|
|
|
s_playersettings.initData.rankIndex = s_playersettings.pRank.curvalue;
|
|
}
|
|
|
|
|
|
//Player Age
|
|
Q_strncpyz(s_playersettings.age.field.buffer, UI_Cvar_VariableString("age"), sizeof(s_playersettings.age.field.buffer));
|
|
|
|
//Player Race
|
|
Q_strncpyz(s_playersettings.race.field.buffer, UI_Cvar_VariableString("race"), sizeof(s_playersettings.race.field.buffer));
|
|
|
|
//Player Height
|
|
{
|
|
float height = trap_Cvar_VariableValue("height");
|
|
|
|
//If height was defined, but filled with no value
|
|
//We don't want infinitely flat players rofl
|
|
if (!height)
|
|
height = 1.0f;
|
|
|
|
s_playersettings.height.curvalue = height;
|
|
}
|
|
|
|
|
|
//Player Weight
|
|
{
|
|
float weight = trap_Cvar_VariableValue("weight");
|
|
|
|
//If height was defined, but filled with no value
|
|
//We don't want infinitely thin players rofl
|
|
if (!weight)
|
|
weight = 1.0f;
|
|
|
|
s_playersettings.weight.curvalue = weight;
|
|
}
|
|
|
|
UI_LogFuncEnd();
|
|
}
|
|
|
|
/*
|
|
=================
|
|
PlayerSettings_SpinPlayer
|
|
=================
|
|
*/
|
|
static void PlayerSettings_SpinPlayer(void* ptr, int32_t event)
|
|
{
|
|
UI_LogFuncBegin();
|
|
if (event == QM_ACTIVATED)
|
|
{
|
|
uis.spinView = qtrue;
|
|
uis.cursorpx = uis.cursorx;
|
|
}
|
|
UI_LogFuncEnd();
|
|
}
|
|
|
|
/*
|
|
=================
|
|
PlayerSettings_MenuEvent
|
|
=================
|
|
*/
|
|
static void PlayerSettings_MenuEvent(void* ptr, int32_t event)
|
|
{
|
|
UI_LogFuncBegin();
|
|
if (event != QM_ACTIVATED)
|
|
{
|
|
UI_LogFuncEnd();
|
|
return;
|
|
}
|
|
|
|
s_playersettings.displayChangedSettings = qfalse;
|
|
s_playersettings.settingsChanged = PlayerSettings_SettingsAreDifferent();
|
|
|
|
switch (((menucommon_s*)ptr)->id)
|
|
{
|
|
|
|
case ID_MODEL:
|
|
UI_PopMenu();
|
|
//PlayerSettings_SaveChanges();
|
|
UI_PlayerModelMenu(s_playersettings.prevMenu);
|
|
break;
|
|
|
|
case ID_BACK:
|
|
//PlayerSettings_SaveChanges();
|
|
UI_PopMenu();
|
|
break;
|
|
|
|
case ID_MAINMENU:
|
|
//PlayerSettings_SaveChanges();
|
|
UI_MainMenu();
|
|
break;
|
|
|
|
case ID_INGAMEMENU:
|
|
//PlayerSettings_SaveChanges();
|
|
UI_InGameMenu();
|
|
break;
|
|
|
|
case ID_COMMIT:
|
|
PlayerSettings_SaveChanges();
|
|
s_playersettings.settingsChanged = qfalse;
|
|
break;
|
|
|
|
case ID_CLASS:
|
|
if (s_playersettings.pClass.curvalue == s_playersettings.numClasses) {
|
|
s_playersettings.classTxt.generic.flags &= ~QMF_HIDDEN;
|
|
|
|
memset(&s_playersettings.classTxt.field.buffer, 0, sizeof(s_playersettings.classTxt.field.buffer));
|
|
Q_strncpyz(s_playersettings.classTxt.field.buffer, UI_Cvar_VariableString("ui_playerClass"), sizeof(s_playersettings.classTxt.field.buffer));
|
|
}
|
|
else {
|
|
memset(&s_playersettings.classTxt.field.buffer, 0, sizeof(s_playersettings.classTxt.field.buffer));
|
|
s_playersettings.classTxt.generic.flags |= QMF_HIDDEN;
|
|
}
|
|
|
|
break;
|
|
|
|
case ID_RANK:
|
|
if (s_playersettings.pRank.curvalue == s_playersettings.numRanks) {
|
|
s_playersettings.rankTxt.generic.flags &= ~QMF_HIDDEN;
|
|
|
|
memset(&s_playersettings.rankTxt.field.buffer, 0, sizeof(s_playersettings.rankTxt.field.buffer));
|
|
Q_strncpyz(s_playersettings.rankTxt.field.buffer, UI_Cvar_VariableString("ui_playerRank"), sizeof(s_playersettings.rankTxt.field.buffer));
|
|
}
|
|
else {
|
|
memset(&s_playersettings.rankTxt.field.buffer, 0, sizeof(s_playersettings.rankTxt.field.buffer));
|
|
s_playersettings.rankTxt.generic.flags |= QMF_HIDDEN;
|
|
}
|
|
break;
|
|
|
|
case ID_RANKSETS:
|
|
if (!ingameFlag) {
|
|
if (s_playersettings.rankSetList[s_playersettings.rankSets.curvalue][0])
|
|
trap_Cvar_Set("ui_currentRankSet", s_playersettings.rankSetList[s_playersettings.rankSets.curvalue]);
|
|
|
|
UI_InitRanksData(UI_Cvar_VariableString("ui_currentRankSet"));
|
|
s_playersettings.numRanks = UI_PopulateRanksArray(s_playersettings.rankList);
|
|
|
|
s_playersettings.pRank.numitems = s_playersettings.numRanks;
|
|
}
|
|
break;
|
|
|
|
case ID_CLASSSETS:
|
|
if (!ingameFlag) {
|
|
if (s_playersettings.classSetList[s_playersettings.classSets.curvalue][0])
|
|
trap_Cvar_Set("ui_currentClassSet", s_playersettings.classSetList[s_playersettings.classSets.curvalue]);
|
|
|
|
UI_InitClassData(UI_Cvar_VariableString("ui_currentClassSet"));
|
|
s_playersettings.numClasses = UI_PopulateClassArray(s_playersettings.classNameList);
|
|
|
|
s_playersettings.pClass.numitems = s_playersettings.numClasses;
|
|
}
|
|
break;
|
|
|
|
}
|
|
UI_LogFuncEnd();
|
|
}
|
|
|
|
|
|
/*
|
|
=================
|
|
PlayerSettingsMenu_Graphics
|
|
=================
|
|
*/
|
|
void PlayerSettingsMenu_Graphics(void)
|
|
{
|
|
UI_LogFuncBegin();
|
|
// Draw the basic screen layout
|
|
UI_MenuFrame2(&s_playersettings.menu);
|
|
|
|
trap_R_SetColor(colorTable[CT_LTBROWN1]);
|
|
UI_DrawHandlePic(30, 203, 47, 186, uis.whiteShader); // Middle left line
|
|
|
|
//TiM - eh later
|
|
// Frame around model pictures
|
|
trap_R_SetColor(colorTable[CT_LTORANGE]);
|
|
UI_DrawHandlePic(97, 94, 8, -32, s_playersettings.corner_ll_4_18); // UL Corner y = 139 x=114
|
|
UI_DrawHandlePic(97, 312, 8, 32, s_playersettings.corner_ll_4_18); // LL Corner x=114
|
|
UI_DrawHandlePic(421, 94, 8, -32, s_playersettings.corner_lr_4_18); // UR Corner y= 139
|
|
UI_DrawHandlePic(421, 312, 8, 32, s_playersettings.corner_lr_4_18); // LR Corner
|
|
UI_DrawHandlePic(97, 125, 4, 188, uis.whiteShader); // Left side x=114 y=170 h=97
|
|
UI_DrawHandlePic(424, 125, 4, 188, uis.whiteShader); // Right side
|
|
UI_DrawHandlePic(103, 106, 320, 18, uis.whiteShader); // Top y = 151 x =120
|
|
//UI_DrawHandlePic( 103, 314, 310, 18, uis.whiteShader); // Bottom
|
|
UI_DrawHandlePic(103, 314, 90, 18, uis.whiteShader); //Bottom - Left
|
|
UI_DrawHandlePic(332, 314, 90, 18, uis.whiteShader); //Bottom - Right
|
|
|
|
//line
|
|
//UI_DrawHandlePic( 97, 383, 331, 2, uis.whiteShader );
|
|
|
|
UI_DrawProportionalString(109, 108, menu_normal_text[MNT_CHANGEPLAYER], UI_SMALLFONT, colorTable[CT_BLACK]); // Top
|
|
|
|
trap_R_SetColor(colorTable[CT_DKGREY2]);
|
|
UI_DrawHandlePic(439, 79, 151, 295, uis.whiteShader); // Background
|
|
|
|
// Frame around player model
|
|
trap_R_SetColor(colorTable[CT_LTORANGE]);
|
|
UI_DrawHandlePic(435, 50, 8, -32, s_playersettings.corner_ll_4_18); // UL Corner
|
|
UI_DrawHandlePic(435, 369, 8, 8, s_playersettings.corner_ll_4_4); // LL Corner
|
|
UI_DrawHandlePic(440, 62, 150, 18, uis.whiteShader); // Top
|
|
UI_DrawHandlePic(435, 79, 4, 295, uis.whiteShader); // Left side
|
|
UI_DrawHandlePic(440, 371, 150, 4, uis.whiteShader); // Bottom
|
|
|
|
// Left rounded ends for buttons
|
|
trap_R_SetColor(colorTable[s_playersettings.mainmenu.color]);
|
|
UI_DrawHandlePic(s_playersettings.mainmenu.generic.x - 14, s_playersettings.mainmenu.generic.y,
|
|
MENU_BUTTON_MED_HEIGHT, MENU_BUTTON_MED_HEIGHT, uis.graphicButtonLeftEnd);
|
|
|
|
trap_R_SetColor(colorTable[s_playersettings.back.color]);
|
|
UI_DrawHandlePic(s_playersettings.back.generic.x - 14, s_playersettings.back.generic.y,
|
|
MENU_BUTTON_MED_HEIGHT, MENU_BUTTON_MED_HEIGHT, uis.graphicButtonLeftEnd);
|
|
|
|
trap_R_SetColor(colorTable[s_playersettings.data.color]);
|
|
UI_DrawHandlePic(s_playersettings.data.generic.x - 14, s_playersettings.data.generic.y,
|
|
MENU_BUTTON_MED_HEIGHT, MENU_BUTTON_MED_HEIGHT, uis.graphicButtonLeftEnd);
|
|
|
|
trap_R_SetColor(colorTable[s_playersettings.model.color]);
|
|
UI_DrawHandlePic(s_playersettings.model.generic.x - 14, s_playersettings.model.generic.y,
|
|
MENU_BUTTON_MED_HEIGHT, MENU_BUTTON_MED_HEIGHT, uis.graphicButtonLeftEnd);
|
|
|
|
trap_R_SetColor(colorTable[s_playersettings.mainmenu.color]);
|
|
UI_DrawHandlePic(s_playersettings.mainmenu.generic.x - 14, s_playersettings.mainmenu.generic.y,
|
|
MENU_BUTTON_MED_HEIGHT, MENU_BUTTON_MED_HEIGHT, uis.graphicButtonLeftEnd);
|
|
|
|
UI_DrawProportionalString(74, 28, "881", UI_RIGHT | UI_TINYFONT, colorTable[CT_BLACK]);
|
|
UI_DrawProportionalString(74, 150, "2445", UI_RIGHT | UI_TINYFONT, colorTable[CT_BLACK]);
|
|
UI_DrawProportionalString(74, 206, "600", UI_RIGHT | UI_TINYFONT, colorTable[CT_BLACK]);
|
|
UI_DrawProportionalString(74, 395, "3-44", UI_RIGHT | UI_TINYFONT, colorTable[CT_BLACK]);
|
|
|
|
//TiM - Player weight and height parameters
|
|
{
|
|
float ht = s_playersettings.height.curvalue * (float)BASE_HEIGHT;
|
|
float wt = s_playersettings.weight.curvalue * s_playersettings.height.curvalue * (float)BASE_WEIGHT;
|
|
char htStr[12];
|
|
char wtStr[12];
|
|
|
|
if (s_playersettings.playerinfo.gender == GENDER_FEMALE)
|
|
wt *= (float)FEMALE_OFFSET;
|
|
|
|
Com_sprintf(htStr, sizeof(htStr), "%4.2f%s", ht, HEIGHT_UNIT);
|
|
Com_sprintf(wtStr, sizeof(wtStr), "%4.2f%s", wt, WEIGHT_UNIT);
|
|
|
|
UI_DrawProportionalString(359, 259, htStr, UI_LEFT | UI_SMALLFONT, colorTable[CT_LTGOLD1]);
|
|
UI_DrawProportionalString(359, 285, wtStr, UI_LEFT | UI_SMALLFONT, colorTable[CT_LTGOLD1]);
|
|
}
|
|
|
|
if (s_playersettings.settingsChanged) {
|
|
s_playersettings.commit.generic.flags &= ~(QMF_GRAYED | QMF_INACTIVE);
|
|
s_playersettings.commit.generic.flags |= (QMF_HIGHLIGHT_IF_FOCUS);
|
|
}
|
|
else {
|
|
s_playersettings.commit.generic.flags = (QMF_GRAYED | QMF_INACTIVE);
|
|
}
|
|
|
|
{
|
|
int32_t y = 338;
|
|
|
|
if (s_playersettings.rankSets.numitems > 1)
|
|
y += 24;
|
|
|
|
if (s_playersettings.displayChangedSettings)
|
|
UI_DrawProportionalString(260, y, menu_normal_text[MNT_CHANGEAPPLIED], UI_CENTER | UI_SMALLFONT, colorTable[CT_LTGOLD1]);
|
|
}
|
|
|
|
UI_DrawProportionalString(444, 63, s_playersettings.name.field.buffer, UI_LEFT | UI_SMALLFONT, colorTable[CT_WHITE]);
|
|
|
|
UI_LogFuncEnd();
|
|
|
|
}
|
|
|
|
/*
|
|
=================
|
|
PlayerSettings_MenuDraw
|
|
=================
|
|
*/
|
|
static void PlayerSettings_MenuDraw(void)
|
|
{
|
|
UI_LogFuncBegin();
|
|
PlayerSettingsMenu_Graphics();
|
|
Menu_Draw(&s_playersettings.menu);
|
|
UI_LogFuncEnd();
|
|
}
|
|
|
|
|
|
/*
|
|
=================
|
|
PlayerSettings_MenuInit
|
|
=================
|
|
*/
|
|
static void PlayerSettings_MenuInit(int32_t menuFrom)
|
|
{
|
|
UI_LogFuncBegin();
|
|
int32_t y;
|
|
int32_t i;
|
|
|
|
memset(&s_playersettings, 0, sizeof(playersettings_t));
|
|
|
|
s_playersettings.prevMenu = menuFrom;
|
|
|
|
PlayerSettings_Cache();
|
|
|
|
//PlayerSettings_LoadProfiles();
|
|
|
|
if (ingameFlag) {
|
|
char info[MAX_TOKEN_CHARS];
|
|
|
|
trap_GetConfigString(CS_SERVERINFO, info, sizeof(info));
|
|
UI_InitRanksData(Info_ValueForKey(info, "rpg_rankSet"));
|
|
UI_InitClassData(Info_ValueForKey(info, "rpg_classSet"));
|
|
|
|
//UI_LoadClassString();
|
|
}
|
|
|
|
//load classes
|
|
s_playersettings.numClasses = UI_PopulateClassArray(s_playersettings.classNameList);
|
|
|
|
//load class sets
|
|
s_playersettings.numClassSets = UI_PopulateClassSetArray(s_playersettings.classSetList);
|
|
s_playersettings.classSetList[s_playersettings.numClassSets] = 0;
|
|
|
|
//Fill teh ranks array with the current loaded set and add 'other' to the end
|
|
s_playersettings.numRanks = UI_PopulateRanksArray(s_playersettings.rankList);
|
|
//s_playersettings.rankList[s_playersettings.numRanks] = "Other";
|
|
s_playersettings.numRankSets = UI_PopulateRankSetArray(s_playersettings.rankSetList);
|
|
|
|
s_playersettings.menu.key = PlayerSettings_MenuKey;
|
|
s_playersettings.menu.wrapAround = qtrue;
|
|
s_playersettings.menu.fullscreen = qtrue;
|
|
s_playersettings.menu.draw = PlayerSettings_MenuDraw;
|
|
s_playersettings.menu.descX = MENU_DESC_X;
|
|
s_playersettings.menu.descY = MENU_DESC_Y;
|
|
s_playersettings.menu.titleX = MENU_TITLE_X;
|
|
s_playersettings.menu.titleY = MENU_TITLE_Y;
|
|
s_playersettings.menu.titleI = MNT_CHANGEPLAYER_TITLE;
|
|
s_playersettings.menu.footNoteEnum = MNT_CHANGEPLAYER;
|
|
|
|
|
|
s_playersettings.mainmenu.generic.type = MTYPE_BITMAP;
|
|
s_playersettings.mainmenu.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
|
|
s_playersettings.mainmenu.generic.x = 110;
|
|
s_playersettings.mainmenu.generic.y = 391;
|
|
s_playersettings.mainmenu.generic.name = BUTTON_GRAPHIC_LONGRIGHT;
|
|
s_playersettings.mainmenu.generic.callback = PlayerSettings_MenuEvent;
|
|
s_playersettings.mainmenu.width = MENU_BUTTON_MED_WIDTH;
|
|
s_playersettings.mainmenu.height = MENU_BUTTON_MED_HEIGHT;
|
|
s_playersettings.mainmenu.color = CT_DKPURPLE1;
|
|
s_playersettings.mainmenu.color2 = CT_LTPURPLE1;
|
|
|
|
if (!ingameFlag)
|
|
{
|
|
s_playersettings.mainmenu.textEnum = MBT_MAINMENU;
|
|
s_playersettings.mainmenu.generic.id = ID_MAINMENU;
|
|
}
|
|
else
|
|
{
|
|
s_playersettings.mainmenu.textEnum = MBT_INGAMEMENU;
|
|
s_playersettings.mainmenu.generic.id = ID_INGAMEMENU;
|
|
}
|
|
|
|
s_playersettings.mainmenu.textX = MENU_BUTTON_TEXT_X;
|
|
s_playersettings.mainmenu.textY = MENU_BUTTON_TEXT_Y;
|
|
s_playersettings.mainmenu.textcolor = CT_BLACK;
|
|
s_playersettings.mainmenu.textcolor2 = CT_WHITE;
|
|
|
|
s_playersettings.back.generic.type = MTYPE_BITMAP;
|
|
s_playersettings.back.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
|
|
s_playersettings.back.generic.x = 110;
|
|
s_playersettings.back.generic.y = 415;
|
|
s_playersettings.back.generic.name = BUTTON_GRAPHIC_LONGRIGHT;
|
|
s_playersettings.back.generic.id = ID_BACK;
|
|
s_playersettings.back.generic.callback = PlayerSettings_MenuEvent;
|
|
s_playersettings.back.width = MENU_BUTTON_MED_WIDTH;
|
|
s_playersettings.back.height = MENU_BUTTON_MED_HEIGHT;
|
|
s_playersettings.back.color = CT_DKPURPLE1;
|
|
s_playersettings.back.color2 = CT_LTPURPLE1;
|
|
s_playersettings.back.textX = MENU_BUTTON_TEXT_X;
|
|
s_playersettings.back.textY = MENU_BUTTON_TEXT_Y;
|
|
s_playersettings.back.textEnum = MBT_BACK;
|
|
s_playersettings.back.textcolor = CT_BLACK;
|
|
s_playersettings.back.textcolor2 = CT_WHITE;
|
|
|
|
y = 134;//144;
|
|
s_playersettings.name.generic.type = MTYPE_FIELD;
|
|
s_playersettings.name.field.widthInChars = MAX_NAMELENGTH;
|
|
s_playersettings.name.field.maxchars = MAX_NAMELENGTH;
|
|
s_playersettings.name.generic.id = ID_NAME;
|
|
s_playersettings.name.generic.callback = PlayerSettings_MenuEvent;
|
|
s_playersettings.name.generic.x = 115 + 5 + UI_ProportionalStringWidth(menu_button_text[MBT_PLAYER_NAME][0], UI_SMALLFONT);//159;//180;
|
|
s_playersettings.name.generic.y = y;//182;
|
|
s_playersettings.name.field.style = UI_SMALLFONT;
|
|
s_playersettings.name.field.titleEnum = MBT_PLAYER_NAME;
|
|
s_playersettings.name.field.titlecolor = CT_LTGOLD1;
|
|
s_playersettings.name.field.textcolor = CT_DKGOLD1;
|
|
s_playersettings.name.field.textcolor2 = CT_LTGOLD1;
|
|
|
|
y += 25;//3 * PROP_HEIGHT;
|
|
s_playersettings.pClass.generic.type = MTYPE_SPINCONTROL;
|
|
s_playersettings.pClass.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
|
|
s_playersettings.pClass.generic.id = ID_CLASS;
|
|
s_playersettings.pClass.generic.callback = PlayerSettings_MenuEvent;
|
|
s_playersettings.pClass.generic.x = 113;//134;
|
|
s_playersettings.pClass.generic.y = y;//207;
|
|
s_playersettings.pClass.numitems = MAX_CLASSES;
|
|
s_playersettings.pClass.textEnum = MBT_CLASS;
|
|
s_playersettings.pClass.textcolor = CT_BLACK;
|
|
s_playersettings.pClass.textcolor2 = CT_WHITE;
|
|
s_playersettings.pClass.color = CT_DKPURPLE1;
|
|
s_playersettings.pClass.color2 = CT_LTPURPLE1;
|
|
s_playersettings.pClass.width = 60;//80;
|
|
s_playersettings.pClass.textX = 5;
|
|
s_playersettings.pClass.textY = 2;
|
|
s_playersettings.pClass.itemnames = (const char **)s_playersettings.classNameList;//playerClassList;
|
|
|
|
s_playersettings.classTxt.generic.type = MTYPE_FIELD;
|
|
s_playersettings.classTxt.generic.flags = QMF_HIDDEN;
|
|
s_playersettings.classTxt.generic.callback = PlayerSettings_MenuEvent;
|
|
s_playersettings.classTxt.generic.id = ID_CLASSTXT;
|
|
s_playersettings.classTxt.field.widthInChars = 16;
|
|
s_playersettings.classTxt.field.maxchars = MAX_NAMELENGTH;
|
|
s_playersettings.classTxt.generic.x = 205 + 12 + UI_ProportionalStringWidth("Other", UI_SMALLFONT);//315;//159;//180;
|
|
s_playersettings.classTxt.generic.y = y + 3;//118;//182;
|
|
s_playersettings.classTxt.field.style = UI_SMALLFONT;
|
|
s_playersettings.classTxt.field.titleEnum = MBT_OTHER;
|
|
s_playersettings.classTxt.field.titlecolor = CT_LTGOLD1;
|
|
s_playersettings.classTxt.field.textcolor = CT_DKGOLD1;
|
|
s_playersettings.classTxt.field.textcolor2 = CT_LTGOLD1;
|
|
|
|
y += 25;
|
|
s_playersettings.pRank.generic.type = MTYPE_SPINCONTROL;
|
|
s_playersettings.pRank.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
|
|
s_playersettings.pRank.generic.id = ID_RANK;
|
|
s_playersettings.pRank.generic.callback = PlayerSettings_MenuEvent;
|
|
s_playersettings.pRank.generic.x = 113;//134;
|
|
s_playersettings.pRank.generic.y = y;//233;
|
|
s_playersettings.pRank.numitems = s_playersettings.numRanks;
|
|
s_playersettings.pRank.textEnum = MBT_RANK;
|
|
s_playersettings.pRank.textcolor = CT_BLACK;
|
|
s_playersettings.pRank.textcolor2 = CT_WHITE;
|
|
s_playersettings.pRank.color = CT_DKPURPLE1;
|
|
s_playersettings.pRank.color2 = CT_LTPURPLE1;
|
|
s_playersettings.pRank.width = 60;//80;
|
|
s_playersettings.pRank.textX = 5;
|
|
s_playersettings.pRank.textY = 2;
|
|
s_playersettings.pRank.itemnames = (const char**)s_playersettings.rankList; //prank_items_formal3;
|
|
|
|
s_playersettings.rankTxt.generic.type = MTYPE_FIELD;
|
|
s_playersettings.rankTxt.generic.flags = QMF_HIDDEN;
|
|
s_playersettings.rankTxt.generic.callback = PlayerSettings_MenuEvent;
|
|
s_playersettings.rankTxt.generic.id = ID_RANKTXT;
|
|
s_playersettings.rankTxt.field.widthInChars = 16;
|
|
s_playersettings.rankTxt.field.maxchars = MAX_NAMELENGTH;
|
|
s_playersettings.rankTxt.generic.x = 205 + 12 + UI_ProportionalStringWidth(s_playersettings.rankList[s_playersettings.numRanks], UI_SMALLFONT);//315;
|
|
s_playersettings.rankTxt.generic.y = y + 3;
|
|
s_playersettings.rankTxt.field.style = UI_SMALLFONT;
|
|
s_playersettings.rankTxt.field.titleEnum = MBT_OTHER;
|
|
s_playersettings.rankTxt.field.titlecolor = CT_LTGOLD1;
|
|
s_playersettings.rankTxt.field.textcolor = CT_DKGOLD1;
|
|
s_playersettings.rankTxt.field.textcolor2 = CT_LTGOLD1;
|
|
|
|
y += 25;
|
|
s_playersettings.age.generic.type = MTYPE_FIELD;
|
|
s_playersettings.age.generic.id = ID_AGE;
|
|
s_playersettings.age.generic.callback = PlayerSettings_MenuEvent;
|
|
s_playersettings.age.field.widthInChars = MAX_NAMELENGTH;
|
|
s_playersettings.age.field.maxchars = MAX_NAMELENGTH;
|
|
s_playersettings.age.generic.x = 115 + 5 + UI_ProportionalStringWidth(menu_button_text[MBT_AGE][0], UI_SMALLFONT);//159;
|
|
s_playersettings.age.generic.y = y + 3;
|
|
s_playersettings.age.field.style = UI_SMALLFONT;
|
|
s_playersettings.age.field.titleEnum = MBT_AGE;
|
|
s_playersettings.age.field.titlecolor = CT_LTGOLD1;
|
|
s_playersettings.age.field.textcolor = CT_DKGOLD1;
|
|
s_playersettings.age.field.textcolor2 = CT_LTGOLD1;
|
|
|
|
y += 25;
|
|
s_playersettings.race.generic.type = MTYPE_FIELD;
|
|
s_playersettings.race.generic.id = ID_RACE;
|
|
s_playersettings.race.generic.callback = PlayerSettings_MenuEvent;
|
|
s_playersettings.race.field.widthInChars = MAX_NAMELENGTH;
|
|
s_playersettings.race.field.maxchars = MAX_NAMELENGTH;
|
|
s_playersettings.race.generic.x = 115 + 5 + UI_ProportionalStringWidth(menu_button_text[MBT_RACE][0], UI_SMALLFONT);//159;
|
|
s_playersettings.race.generic.y = y;
|
|
s_playersettings.race.field.style = UI_SMALLFONT;
|
|
s_playersettings.race.field.titleEnum = MBT_RACE;
|
|
s_playersettings.race.field.titlecolor = CT_LTGOLD1;
|
|
s_playersettings.race.field.textcolor = CT_DKGOLD1;
|
|
s_playersettings.race.field.textcolor2 = CT_LTGOLD1;
|
|
|
|
y += 25;
|
|
s_playersettings.height.generic.type = MTYPE_SLIDER;
|
|
s_playersettings.height.generic.x = 115 + 90; //162
|
|
s_playersettings.height.generic.y = y;
|
|
s_playersettings.height.generic.flags = QMF_SMALLFONT;
|
|
s_playersettings.height.generic.id = ID_HEIGHT;
|
|
s_playersettings.height.generic.callback = PlayerSettings_MenuEvent;
|
|
s_playersettings.height.defvalue = 1.0;
|
|
s_playersettings.height.minvalue = 0.9;
|
|
s_playersettings.height.maxvalue = 1.15;
|
|
s_playersettings.height.color = CT_DKPURPLE1;
|
|
s_playersettings.height.color2 = CT_LTPURPLE1;
|
|
s_playersettings.height.generic.name = PIC_MONBAR2;
|
|
s_playersettings.height.width = 256;
|
|
s_playersettings.height.height = 32;
|
|
s_playersettings.height.focusWidth = 145; //145
|
|
s_playersettings.height.focusHeight = 18;
|
|
s_playersettings.height.picName = (char*)GRAPHIC_SQUARE;
|
|
s_playersettings.height.picX = 115;
|
|
s_playersettings.height.picY = y;
|
|
s_playersettings.height.picWidth = 85; //MENU_BUTTON_MED_WIDTH + 21;
|
|
s_playersettings.height.picHeight = MENU_BUTTON_MED_HEIGHT;
|
|
s_playersettings.height.textX = MENU_BUTTON_TEXT_X;
|
|
s_playersettings.height.textY = MENU_BUTTON_TEXT_Y;
|
|
s_playersettings.height.textEnum = MBT_HEIGHT;
|
|
s_playersettings.height.textcolor = CT_BLACK;
|
|
s_playersettings.height.textcolor2 = CT_WHITE;
|
|
s_playersettings.height.thumbName = (char*)PIC_SLIDER;
|
|
s_playersettings.height.thumbHeight = 32;
|
|
s_playersettings.height.thumbWidth = 16;
|
|
s_playersettings.height.thumbGraphicWidth = 9;
|
|
s_playersettings.height.thumbColor = CT_DKBLUE1;
|
|
s_playersettings.height.thumbColor2 = CT_LTBLUE1;
|
|
|
|
y += 25;
|
|
s_playersettings.weight.generic.type = MTYPE_SLIDER;
|
|
s_playersettings.weight.generic.x = 115 + 90; //162
|
|
s_playersettings.weight.generic.y = y;
|
|
s_playersettings.weight.generic.flags = QMF_SMALLFONT;
|
|
s_playersettings.weight.generic.callback = PlayerSettings_MenuEvent;
|
|
s_playersettings.weight.generic.id = ID_WEIGHT;
|
|
s_playersettings.weight.defvalue = 1.0;
|
|
s_playersettings.weight.minvalue = 0.9;
|
|
s_playersettings.weight.maxvalue = 1.1;
|
|
s_playersettings.weight.color = CT_DKPURPLE1;
|
|
s_playersettings.weight.color2 = CT_LTPURPLE1;
|
|
s_playersettings.weight.generic.name = PIC_MONBAR2;
|
|
s_playersettings.weight.width = 256;
|
|
s_playersettings.weight.height = 32;
|
|
s_playersettings.weight.focusWidth = 145;
|
|
s_playersettings.weight.focusHeight = 18;
|
|
s_playersettings.weight.picName = (char*)GRAPHIC_SQUARE;
|
|
s_playersettings.weight.picX = 115;
|
|
s_playersettings.weight.picY = y;
|
|
s_playersettings.weight.picWidth = 85; //MENU_BUTTON_MED_WIDTH + 21;
|
|
s_playersettings.weight.picHeight = MENU_BUTTON_MED_HEIGHT;
|
|
s_playersettings.weight.textX = MENU_BUTTON_TEXT_X;
|
|
s_playersettings.weight.textY = MENU_BUTTON_TEXT_Y;
|
|
s_playersettings.weight.textEnum = MBT_WEIGHT;
|
|
s_playersettings.weight.textcolor = CT_BLACK;
|
|
s_playersettings.weight.textcolor2 = CT_WHITE;
|
|
s_playersettings.weight.thumbName = (char*)PIC_SLIDER;
|
|
s_playersettings.weight.thumbHeight = 32;
|
|
s_playersettings.weight.thumbWidth = 16;
|
|
s_playersettings.weight.thumbGraphicWidth = 9;
|
|
s_playersettings.weight.thumbColor = CT_DKBLUE1;
|
|
s_playersettings.weight.thumbColor2 = CT_LTBLUE1;
|
|
|
|
if (s_playersettings.numRankSets > 1) {
|
|
s_playersettings.rankSets.generic.type = MTYPE_SPINCONTROL;
|
|
s_playersettings.rankSets.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
|
|
s_playersettings.rankSets.generic.id = ID_RANKSETS;
|
|
s_playersettings.rankSets.generic.callback = PlayerSettings_MenuEvent;
|
|
s_playersettings.rankSets.generic.x = 257;//134;
|
|
s_playersettings.rankSets.generic.y = 391;//233;
|
|
s_playersettings.rankSets.textEnum = MBT_RANKSETS;
|
|
s_playersettings.rankSets.textcolor = CT_BLACK;
|
|
s_playersettings.rankSets.textcolor2 = CT_WHITE;
|
|
s_playersettings.rankSets.color = CT_DKPURPLE1;
|
|
s_playersettings.rankSets.color2 = CT_LTPURPLE1;
|
|
s_playersettings.rankSets.width = 80;//80;
|
|
s_playersettings.rankSets.textX = 5;
|
|
s_playersettings.rankSets.textY = 2;
|
|
s_playersettings.rankSets.itemnames = (const char**)s_playersettings.rankSetList; //rankSets_items_formal3;
|
|
}
|
|
|
|
if (s_playersettings.numClassSets > 1)
|
|
{
|
|
s_playersettings.classSets.generic.type = MTYPE_SPINCONTROL;
|
|
s_playersettings.classSets.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
|
|
s_playersettings.classSets.generic.id = ID_CLASSSETS;
|
|
s_playersettings.classSets.generic.callback = PlayerSettings_MenuEvent;
|
|
s_playersettings.classSets.generic.x = 257;//134;
|
|
s_playersettings.classSets.generic.y = 415;//233;
|
|
s_playersettings.classSets.textEnum = MBT_CLASSSETS;
|
|
s_playersettings.classSets.textcolor = CT_BLACK;
|
|
s_playersettings.classSets.textcolor2 = CT_WHITE;
|
|
s_playersettings.classSets.color = CT_DKPURPLE1;
|
|
s_playersettings.classSets.color2 = CT_LTPURPLE1;
|
|
s_playersettings.classSets.width = 80;//80;
|
|
s_playersettings.classSets.textX = 5;
|
|
s_playersettings.classSets.textY = 2;
|
|
s_playersettings.classSets.itemnames = (const char**)s_playersettings.classSetList; //rankSets_items_formal3;
|
|
}
|
|
|
|
s_playersettings.commit.generic.type = MTYPE_BITMAP;
|
|
s_playersettings.commit.generic.flags = (QMF_GRAYED | QMF_INACTIVE);
|
|
s_playersettings.commit.generic.x = 196;
|
|
s_playersettings.commit.generic.y = 314;
|
|
s_playersettings.commit.generic.name = GRAPHIC_SQUARE;
|
|
s_playersettings.commit.generic.callback = PlayerSettings_MenuEvent;
|
|
s_playersettings.commit.generic.id = ID_COMMIT;
|
|
s_playersettings.commit.width = 133;
|
|
s_playersettings.commit.height = 18;
|
|
s_playersettings.commit.color = CT_VDKRED1;
|
|
s_playersettings.commit.color2 = CT_DKRED1;
|
|
s_playersettings.commit.textX = MENU_BUTTON_TEXT_X;
|
|
s_playersettings.commit.textY = MENU_BUTTON_TEXT_Y;
|
|
s_playersettings.commit.textcolor = CT_BLACK;
|
|
s_playersettings.commit.textcolor2 = CT_WHITE;
|
|
s_playersettings.commit.textEnum = MBT_COMMIT;
|
|
|
|
s_playersettings.data.generic.type = MTYPE_BITMAP;
|
|
s_playersettings.data.generic.name = BUTTON_GRAPHIC_LONGRIGHT;
|
|
s_playersettings.data.generic.flags = QMF_GRAYED;
|
|
s_playersettings.data.generic.id = ID_DATA;
|
|
s_playersettings.data.generic.callback = PlayerSettings_MenuEvent;
|
|
s_playersettings.data.generic.x = 482;
|
|
s_playersettings.data.generic.y = 391;
|
|
s_playersettings.data.width = 128;
|
|
s_playersettings.data.height = 64;
|
|
s_playersettings.data.width = MENU_BUTTON_MED_WIDTH;
|
|
s_playersettings.data.height = MENU_BUTTON_MED_HEIGHT;
|
|
s_playersettings.data.color = CT_DKPURPLE1;
|
|
s_playersettings.data.color2 = CT_LTPURPLE1;
|
|
s_playersettings.data.textX = 5;
|
|
s_playersettings.data.textY = 2;
|
|
s_playersettings.data.textEnum = MBT_PLAYERDATA;
|
|
s_playersettings.data.textcolor = CT_BLACK;
|
|
s_playersettings.data.textcolor2 = CT_WHITE;
|
|
|
|
s_playersettings.model.generic.type = MTYPE_BITMAP;
|
|
s_playersettings.model.generic.name = BUTTON_GRAPHIC_LONGRIGHT;
|
|
s_playersettings.model.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
|
|
s_playersettings.model.generic.id = ID_MODEL;
|
|
s_playersettings.model.generic.callback = PlayerSettings_MenuEvent;
|
|
s_playersettings.model.generic.x = 482;
|
|
s_playersettings.model.generic.y = 415;
|
|
s_playersettings.model.width = MENU_BUTTON_MED_WIDTH;
|
|
s_playersettings.model.height = MENU_BUTTON_MED_HEIGHT;
|
|
s_playersettings.model.color = CT_DKPURPLE1;
|
|
s_playersettings.model.color2 = CT_LTPURPLE1;
|
|
s_playersettings.model.textX = 5;
|
|
s_playersettings.model.textY = 2;
|
|
s_playersettings.model.textEnum = MBT_CHANGEMODEL;
|
|
s_playersettings.model.textcolor = CT_BLACK;
|
|
s_playersettings.model.textcolor2 = CT_WHITE;
|
|
|
|
s_playersettings.player.generic.type = MTYPE_BITMAP;
|
|
s_playersettings.player.generic.flags = QMF_SILENT;
|
|
s_playersettings.player.generic.ownerdraw = PlayerSettings_DrawPlayer;
|
|
s_playersettings.player.generic.callback = PlayerSettings_SpinPlayer;
|
|
s_playersettings.player.generic.x = 439; //400
|
|
s_playersettings.player.generic.y = 80; //20
|
|
s_playersettings.player.width = 151; //32*7.3
|
|
s_playersettings.player.height = 291; //56*7.3
|
|
|
|
s_playersettings.item_null.generic.type = MTYPE_BITMAP;
|
|
s_playersettings.item_null.generic.flags = QMF_LEFT_JUSTIFY | QMF_MOUSEONLY | QMF_SILENT;
|
|
s_playersettings.item_null.generic.x = 0;
|
|
s_playersettings.item_null.generic.y = 0;
|
|
s_playersettings.item_null.width = 640;
|
|
s_playersettings.item_null.height = 480;
|
|
|
|
Menu_AddItem(&s_playersettings.menu, &s_playersettings.mainmenu);
|
|
Menu_AddItem(&s_playersettings.menu, &s_playersettings.back);
|
|
Menu_AddItem(&s_playersettings.menu, &s_playersettings.name);
|
|
Menu_AddItem(&s_playersettings.menu, &s_playersettings.classTxt);
|
|
Menu_AddItem(&s_playersettings.menu, &s_playersettings.pClass);
|
|
Menu_AddItem(&s_playersettings.menu, &s_playersettings.rankTxt);
|
|
Menu_AddItem(&s_playersettings.menu, &s_playersettings.pRank);
|
|
Menu_AddItem(&s_playersettings.menu, &s_playersettings.age);
|
|
Menu_AddItem(&s_playersettings.menu, &s_playersettings.race);
|
|
Menu_AddItem(&s_playersettings.menu, &s_playersettings.height);
|
|
Menu_AddItem(&s_playersettings.menu, &s_playersettings.weight);
|
|
Menu_AddItem(&s_playersettings.menu, &s_playersettings.commit);
|
|
|
|
Menu_AddItem(&s_playersettings.menu, &s_playersettings.model);
|
|
Menu_AddItem(&s_playersettings.menu, &s_playersettings.data);
|
|
|
|
if (s_playersettings.numRankSets > 1 && !ingameFlag) {
|
|
Menu_AddItem(&s_playersettings.menu, &s_playersettings.rankSets);
|
|
}
|
|
|
|
if (s_playersettings.numClassSets > 1 && !ingameFlag) {
|
|
Menu_AddItem(&s_playersettings.menu, &s_playersettings.classSets);
|
|
}
|
|
|
|
Menu_AddItem(&s_playersettings.menu, &s_playersettings.player);
|
|
|
|
//PlayerSettings_AffectModel();
|
|
|
|
PlayerSettings_SetMenuItems();
|
|
|
|
if (s_playersettings.numRankSets > 1 && !ingameFlag) {
|
|
s_playersettings.rankSets.generic.flags &= ~QMF_HIDDEN;
|
|
|
|
for (i = 0; i < s_playersettings.rankSets.numitems; i++) {
|
|
if (!Q_stricmp(UI_Cvar_VariableString("ui_currentRankSet"), s_playersettings.rankSetList[i])) {
|
|
s_playersettings.rankSets.curvalue = i;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if (s_playersettings.rankSetList[s_playersettings.rankSets.curvalue][0])
|
|
trap_Cvar_Set("ui_currentRankSet", s_playersettings.rankSetList[s_playersettings.rankSets.curvalue]);
|
|
|
|
UI_InitRanksData(UI_Cvar_VariableString("ui_currentRankSet"));
|
|
s_playersettings.numRanks = UI_PopulateRanksArray(s_playersettings.rankList);
|
|
|
|
s_playersettings.pRank.numitems = s_playersettings.numRanks;
|
|
}
|
|
|
|
if (s_playersettings.numClassSets > 1 && !ingameFlag) {
|
|
s_playersettings.classSets.generic.flags &= ~QMF_HIDDEN;
|
|
|
|
for (i = 0; i < s_playersettings.classSets.numitems; i++) {
|
|
if (!Q_stricmp(UI_Cvar_VariableString("ui_currentClassSet"), s_playersettings.classSetList[i])) {
|
|
s_playersettings.classSets.curvalue = i;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if (s_playersettings.classSetList[s_playersettings.rankSets.curvalue][0])
|
|
trap_Cvar_Set("ui_currentClassSet", s_playersettings.classSetList[s_playersettings.classSets.curvalue]);
|
|
|
|
UI_InitRanksData(UI_Cvar_VariableString("ui_currentClassSet"));
|
|
s_playersettings.numClasses = UI_PopulateClassArray(s_playersettings.classNameList);
|
|
|
|
s_playersettings.pClass.numitems = s_playersettings.numClasses;
|
|
}
|
|
UI_LogFuncEnd();
|
|
}
|
|
|
|
|
|
/*
|
|
=================
|
|
PlayerSettings_Cache
|
|
=================
|
|
*/
|
|
void PlayerSettings_Cache(void)
|
|
{
|
|
UI_LogFuncBegin();
|
|
s_playersettings.corner_ul_4_4 = trap_R_RegisterShaderNoMip("menu/common/corner_ul_4_4");
|
|
s_playersettings.corner_ur_4_4 = trap_R_RegisterShaderNoMip("menu/common/corner_ur_4_4");
|
|
s_playersettings.corner_ll_4_4 = trap_R_RegisterShaderNoMip("menu/common/corner_ll_4_4");
|
|
s_playersettings.corner_ll_4_18 = trap_R_RegisterShaderNoMip("menu/common/corner_ll_4_18");
|
|
s_playersettings.corner_lr_4_18 = trap_R_RegisterShaderNoMip("menu/common/corner_lr_4_18");
|
|
|
|
trap_R_RegisterShaderNoMip(PIC_MONBAR2);
|
|
trap_R_RegisterShaderNoMip(PIC_SLIDER);
|
|
UI_LogFuncEnd();
|
|
}
|
|
|
|
|
|
/*
|
|
=================
|
|
UI_PlayerSettingsMenu
|
|
=================
|
|
*/
|
|
void UI_PlayerSettingsMenu(int32_t menuFrom)
|
|
{
|
|
UI_LogFuncBegin();
|
|
PlayerSettings_MenuInit(menuFrom);
|
|
UI_PushMenu(&s_playersettings.menu);
|
|
UI_LogFuncEnd();
|
|
}
|
|
|