📄 ui_playersettings.c
字号:
*/
static void PlayerSettings_SaveChanges( void ) {
// name
trap_Cvar_Set( "name", s_playersettings.name.field.buffer );
// handicap
trap_Cvar_SetValue( "handicap", 100 - s_playersettings.handicap.curvalue * 5 );
// effects color
trap_Cvar_SetValue( "color1", uitogamecode[s_playersettings.effects.curvalue] );
}
/*
=================
PlayerSettings_MenuKey
=================
*/
static sfxHandle_t PlayerSettings_MenuKey( int key ) {
if( key == K_MOUSE2 || key == K_ESCAPE ) {
PlayerSettings_SaveChanges();
}
return Menu_DefaultKey( &s_playersettings.menu, key );
}
/*
=================
PlayerSettings_SetMenuItems
=================
*/
static void PlayerSettings_SetMenuItems( void ) {
vec3_t viewangles;
int c;
int h;
// name
Q_strncpyz( s_playersettings.name.field.buffer, UI_Cvar_VariableString("name"), sizeof(s_playersettings.name.field.buffer) );
// effects color
c = trap_Cvar_VariableValue( "color1" ) - 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_STAND, viewangles, vec3_origin, WP_MACHINEGUN, qfalse );
// handicap
h = Com_Clamp( 5, 100, trap_Cvar_VariableValue("handicap") );
s_playersettings.handicap.curvalue = 20 - h / 5;
}
/*
=================
PlayerSettings_MenuEvent
=================
*/
static void PlayerSettings_MenuEvent( void* ptr, int event ) {
if( event != QM_ACTIVATED ) {
return;
}
switch( ((menucommon_s*)ptr)->id ) {
case ID_HANDICAP:
trap_Cvar_Set( "handicap", va( "%i", 100 - 25 * s_playersettings.handicap.curvalue ) );
break;
case ID_MODEL:
PlayerSettings_SaveChanges();
UI_PlayerModelMenu();
break;
case ID_BACK:
PlayerSettings_SaveChanges();
UI_PopMenu();
break;
}
}
/*
=================
PlayerSettings_MenuInit
=================
*/
static void PlayerSettings_MenuInit( void ) {
int y;
memset(&s_playersettings,0,sizeof(playersettings_t));
PlayerSettings_Cache();
s_playersettings.menu.key = PlayerSettings_MenuKey;
s_playersettings.menu.wrapAround = qtrue;
s_playersettings.menu.fullscreen = qtrue;
s_playersettings.banner.generic.type = MTYPE_BTEXT;
s_playersettings.banner.generic.x = 320;
s_playersettings.banner.generic.y = 16;
s_playersettings.banner.string = "PLAYER SETTINGS";
s_playersettings.banner.color = color_white;
s_playersettings.banner.style = UI_CENTER;
s_playersettings.framel.generic.type = MTYPE_BITMAP;
s_playersettings.framel.generic.name = ART_FRAMEL;
s_playersettings.framel.generic.flags = QMF_LEFT_JUSTIFY|QMF_INACTIVE;
s_playersettings.framel.generic.x = 0;
s_playersettings.framel.generic.y = 78;
s_playersettings.framel.width = 256;
s_playersettings.framel.height = 329;
s_playersettings.framer.generic.type = MTYPE_BITMAP;
s_playersettings.framer.generic.name = ART_FRAMER;
s_playersettings.framer.generic.flags = QMF_LEFT_JUSTIFY|QMF_INACTIVE;
s_playersettings.framer.generic.x = 376;
s_playersettings.framer.generic.y = 76;
s_playersettings.framer.width = 256;
s_playersettings.framer.height = 334;
y = 144;
s_playersettings.name.generic.type = MTYPE_FIELD;
s_playersettings.name.generic.flags = QMF_NODEFAULTINIT;
s_playersettings.name.generic.ownerdraw = PlayerSettings_DrawName;
s_playersettings.name.field.widthInChars = MAX_NAMELENGTH;
s_playersettings.name.field.maxchars = MAX_NAMELENGTH;
s_playersettings.name.generic.x = 192;
s_playersettings.name.generic.y = y;
s_playersettings.name.generic.left = 192 - 8;
s_playersettings.name.generic.top = y - 8;
s_playersettings.name.generic.right = 192 + 200;
s_playersettings.name.generic.bottom = y + 2 * PROP_HEIGHT;
y += 3 * PROP_HEIGHT;
s_playersettings.handicap.generic.type = MTYPE_SPINCONTROL;
s_playersettings.handicap.generic.flags = QMF_NODEFAULTINIT;
s_playersettings.handicap.generic.id = ID_HANDICAP;
s_playersettings.handicap.generic.ownerdraw = PlayerSettings_DrawHandicap;
s_playersettings.handicap.generic.x = 192;
s_playersettings.handicap.generic.y = y;
s_playersettings.handicap.generic.left = 192 - 8;
s_playersettings.handicap.generic.top = y - 8;
s_playersettings.handicap.generic.right = 192 + 200;
s_playersettings.handicap.generic.bottom = y + 2 * PROP_HEIGHT;
s_playersettings.handicap.numitems = 20;
y += 3 * PROP_HEIGHT;
s_playersettings.effects.generic.type = MTYPE_SPINCONTROL;
s_playersettings.effects.generic.flags = QMF_NODEFAULTINIT;
s_playersettings.effects.generic.id = ID_EFFECTS;
s_playersettings.effects.generic.ownerdraw = PlayerSettings_DrawEffects;
s_playersettings.effects.generic.x = 192;
s_playersettings.effects.generic.y = y;
s_playersettings.effects.generic.left = 192 - 8;
s_playersettings.effects.generic.top = y - 8;
s_playersettings.effects.generic.right = 192 + 200;
s_playersettings.effects.generic.bottom = y + 2* PROP_HEIGHT;
s_playersettings.effects.numitems = 7;
s_playersettings.model.generic.type = MTYPE_BITMAP;
s_playersettings.model.generic.name = ART_MODEL0;
s_playersettings.model.generic.flags = QMF_RIGHT_JUSTIFY|QMF_PULSEIFFOCUS;
s_playersettings.model.generic.id = ID_MODEL;
s_playersettings.model.generic.callback = PlayerSettings_MenuEvent;
s_playersettings.model.generic.x = 640;
s_playersettings.model.generic.y = 480-64;
s_playersettings.model.width = 128;
s_playersettings.model.height = 64;
s_playersettings.model.focuspic = ART_MODEL1;
s_playersettings.player.generic.type = MTYPE_BITMAP;
s_playersettings.player.generic.flags = QMF_INACTIVE;
s_playersettings.player.generic.ownerdraw = PlayerSettings_DrawPlayer;
s_playersettings.player.generic.x = 400;
s_playersettings.player.generic.y = -40;
s_playersettings.player.width = 32*10;
s_playersettings.player.height = 56*10;
s_playersettings.back.generic.type = MTYPE_BITMAP;
s_playersettings.back.generic.name = ART_BACK0;
s_playersettings.back.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS;
s_playersettings.back.generic.id = ID_BACK;
s_playersettings.back.generic.callback = PlayerSettings_MenuEvent;
s_playersettings.back.generic.x = 0;
s_playersettings.back.generic.y = 480-64;
s_playersettings.back.width = 128;
s_playersettings.back.height = 64;
s_playersettings.back.focuspic = ART_BACK1;
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.banner );
Menu_AddItem( &s_playersettings.menu, &s_playersettings.framel );
Menu_AddItem( &s_playersettings.menu, &s_playersettings.framer );
Menu_AddItem( &s_playersettings.menu, &s_playersettings.name );
Menu_AddItem( &s_playersettings.menu, &s_playersettings.handicap );
Menu_AddItem( &s_playersettings.menu, &s_playersettings.effects );
Menu_AddItem( &s_playersettings.menu, &s_playersettings.model );
Menu_AddItem( &s_playersettings.menu, &s_playersettings.back );
Menu_AddItem( &s_playersettings.menu, &s_playersettings.player );
Menu_AddItem( &s_playersettings.menu, &s_playersettings.item_null );
PlayerSettings_SetMenuItems();
}
/*
=================
PlayerSettings_Cache
=================
*/
void PlayerSettings_Cache( void ) {
trap_R_RegisterShaderNoMip( ART_FRAMEL );
trap_R_RegisterShaderNoMip( ART_FRAMER );
trap_R_RegisterShaderNoMip( ART_MODEL0 );
trap_R_RegisterShaderNoMip( ART_MODEL1 );
trap_R_RegisterShaderNoMip( ART_BACK0 );
trap_R_RegisterShaderNoMip( ART_BACK1 );
s_playersettings.fxBasePic = trap_R_RegisterShaderNoMip( ART_FX_BASE );
s_playersettings.fxPic[0] = trap_R_RegisterShaderNoMip( ART_FX_RED );
s_playersettings.fxPic[1] = trap_R_RegisterShaderNoMip( ART_FX_YELLOW );
s_playersettings.fxPic[2] = trap_R_RegisterShaderNoMip( ART_FX_GREEN );
s_playersettings.fxPic[3] = trap_R_RegisterShaderNoMip( ART_FX_TEAL );
s_playersettings.fxPic[4] = trap_R_RegisterShaderNoMip( ART_FX_BLUE );
s_playersettings.fxPic[5] = trap_R_RegisterShaderNoMip( ART_FX_CYAN );
s_playersettings.fxPic[6] = trap_R_RegisterShaderNoMip( ART_FX_WHITE );
}
/*
=================
UI_PlayerSettingsMenu
=================
*/
void UI_PlayerSettingsMenu( void ) {
PlayerSettings_MenuInit();
UI_PushMenu( &s_playersettings.menu );
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -