#include "ui/menudef.h" #include "ui_mp/common_macro.inc" #include "ui/framestyle.inc" #include "ui_mp/newframe.inc" #include "ui/frame.inc" #undef CHOICE_X_START #define CHOICE_X_START FRAME_CHOICE_X_START #undef CHOICE_Y_START #define CHOICE_Y_START FRAME_CHOICE_Y_START #define BUTTON_BG_WIDTH FRAME_BUTTON_WIDTH #define CHOICE_SEP_OFFSET_X 20 #define CHOICE_SEP_OFFSET_Y -2 #define CHOICE_GROUP "playercard" #ifdef XENON #define SELECT_ICON "ui_button_xenon_3d_a_32x32" #endif #ifdef PS3 #define SELECT_ICON "ui_button_ps3_x_32x32" #endif #include "ui_mp/menustyle.inc" #include "ui_mp/overlaybg.inc" #include "ui/choices_setup_common.menu" #include "ui_mp/popup_player_info.inc" #include "ui_mp/stats_info.inc" #ifndef BASE_LB_TYPES_COUNT #define BASE_LB_TYPES_COUNT int(tableLookup( "mp/gameTypesTable.csv", 0, "maxnum_gametype", 1 )) #endif #undef CHOICE_TEXTCOLOR #define CHOICE_TEXTCOLOR NEW_FRAME_COMMON_TEXT_COLOR #define PLAYER_EMBLEM_BG_SIZE (190) #define PLAYER_EMBLEM_SIZE (PLAYER_EMBLEM_BG_SIZE - 20) #define PLAYER_EMBLEM_X_START 70 #define PLAYER_EMBLEM_Y_START (CHOICE_Y_START+20) #undef CHOICE_SIZE_X #define CHOICE_SIZE_X BUTTON_BG_WIDTH #undef CHOICE_TEXTSTYLE #define CHOICE_TEXTSTYLE ITEM_TEXTSTYLE_NORMAL #undef CHOICE_HORIZONTAL_ALIGN #define CHOICE_HORIZONTAL_ALIGN HORIZONTAL_ALIGN_CENTER #undef CHOICE_VERTICAL_ALIGN #define CHOICE_VERTICAL_ALIGN VERTICAL_ALIGN_CENTER #define PLAYER_RANK getDStat( "PlayerStatsList", "RANK" ) #define PLAYER_PRESTIGE getDStat( "PlayerStatsList", "PLEVEL" ) #define PLAYER_RANKXP getDStat( "PlayerStatsList", "RANKXP" ) #define PLAYER_CARD_COMMON_ITEMS \ \ /* PLAYER NAME */ \ PLAYER_CLAN_TAG_AND_NAME( PLAYER_EMBLEM_X_START, (PLAYER_EMBLEM_Y_START-18), 1 ) \ /* BACKGROUND FOR EMBLEM */ \ PREPROC_SHADER_DRAW_VIS_EX( PLAYER_EMBLEM_X_START PLAYER_EMBLEM_Y_START PLAYER_EMBLEM_BG_SIZE PLAYER_EMBLEM_BG_SIZE CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, \ "white", 0 0 0 0.4, \ 1, ; ) \ /* PLAYER EMBLEM */ \ PLAYER_EMBLEM_ALL( (PLAYER_EMBLEM_X_START+10), (PLAYER_EMBLEM_Y_START+10), PLAYER_EMBLEM_SIZE, PLAYER_EMBLEM_SIZE, 1 ) #define FRIENDS_PLAYER_CARD_COMMON_ITEMS \ /* PLAYER NAME */ \ FRIEND_NAME( PLAYER_EMBLEM_X_START, (PLAYER_EMBLEM_Y_START-18), 1 ) \ /* BACKGROUND FOR EMBLEM */ \ PREPROC_SHADER_DRAW_VIS_EX( PLAYER_EMBLEM_X_START PLAYER_EMBLEM_Y_START PLAYER_EMBLEM_BG_SIZE PLAYER_EMBLEM_BG_SIZE CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, \ "white", 0 0 0 0.4, \ 1, ; ) \ /* PLAYER EMBLEM */ \ FRIEND_EMBLEM_ALL( (PLAYER_EMBLEM_X_START+10), (PLAYER_EMBLEM_Y_START+10), PLAYER_EMBLEM_SIZE, PLAYER_EMBLEM_SIZE, 1 ) #undef CLOSE_CARD_DROPDOWN_CLANTAG #define CLOSE_CARD_DROPDOWN_CLANTAG \ play CHOICE_FOCUS_SOUND; \ setLocalVarBool ui_show_clan_edit 0; \ execnow ui_animate menu_playercard_self * CloseDropDownList 0; \ #undef ON_ESC_ACTION #define ON_ESC_ACTION \ if( dvarstring( "ui_in_player_card_popup" ) == "clantag" ) \ { \ CLOSE_CARD_DROPDOWN_CLANTAG \ } \ else \ { \ CHANGE_MENU_SLIDE_DIRECTION( menu_playercard_self, MENU_SLIDE_DIRECTION_TOP_TO_BOTTOM, MENU_SLIDE_DIRECTION_TOP_TO_BOTTOM ) ; \ CLEARUIHINT; \ deactivateBlur; \ play uin_navigation_menu_lg_close; \ if( dvarInt( ui_leaderboardOpen ) == 1 ) \ { \ execnow changemenucloseslidedirection menu_playercard_self MENU_SLIDE_DIRECTION_LEFT_TO_RIGHT; \ close self; \ execnow openmenu (dvarString("leaderboard_menu_name")); \ } \ else \ { \ close self; \ setdvar ui_playercard_self_open 0; \ } \ } #define PLAYER_CARD_DROPDOWN_LIST_NAME "player_card_dropdown_list_" #define PLAYER_CARD_BUTTON_NAME "playercard_button_" #undef NEW_FRAME_BUTTON_NAME #define NEW_FRAME_BUTTON_NAME "playercard_button_" #define PLAYER_CARD_SELECTION_FADE_TIME 80 #define PLAYER_CARD_SELECTION_SLIDE_TIME 80 #define PLAYER_CARD_SELECTION_UNROLL_TIME 120 #define PLAYER_CARD_LISTBOX_RECT (CHOICE_X_START-3) (CHOICE_Y_START+NEW_FRAME_BUTTON_HEIGHT+2) (CHOICE_SIZE_X+4) 0 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER #define PLAYER_CARD_LISTBOX_UNROLLED_RECT (CHOICE_X_START-3) (CHOICE_Y_START+NEW_FRAME_BUTTON_HEIGHT+2) (CHOICE_SIZE_X+4) 250 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER #define CHALLENGES_LOCKED ( IS_ITEM_LOCKED( FEATURE_CHALLENGES ) ) { menuDef { name menu_playercard_self rect 0 0 640 480 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN focuscolor COLOR_FOCUSED style WINDOW_STYLE_FILLED priority MENU_PRI_ONTOP control MENU_CONTROL_OPENER openSlideSpeed DEFAULT_SLIDE_IN_SPEED closeSlideSpeed DEFAULT_SLIDE_OUT_SPEED openSlideDirection MENU_SLIDE_DIRECTION_TOP_TO_BOTTOM closeSlideDirection MENU_SLIDE_DIRECTION_TOP_TO_BOTTOM onOpen { activateBlur; setLocalVarBool ui_show_clan_edit 0; play uin_navigation_menu_lg_open; } onFocus { } onClose {deactivateBlur; } onESC { ON_ESC_ACTION } FRAME_DEFAULT FRAME_TITLE_DEFAULT( "@MENU_MY_PLAYERCARD_CAPS", when( dvarString( ui_in_player_card_popup ) != "clantag" ) ) FRAME_TITLE_DEFAULT( "@MPUI_CLAN_TAG_CAPS", when( dvarString( ui_in_player_card_popup ) == "clantag" ) ) PLAYER_INFO_VIS( FRAME_DEFAULT_WIDTH, FRAME_DEFAULT_HEIGHT, 1 ) // This is a dummy itemDef to disable controls. // Used when animating. itemDef { name dummyButton type ITEM_TYPE_BUTTON_NO_TEXT rect 0 0 0 0 visible when( localVarString( "ui_disable_controls" ) == 1 ); execKeyInt APAD_UP {} execKeyInt DPAD_UP {} execKeyInt APAD_DOWN {} execKeyInt DPAD_DOWN {} execKeyInt APAD_LEFT {} execKeyInt DPAD_LEFT {} execKeyInt APAD_RIGHT {} execKeyInt DPAD_RIGHT {} } // This is a dummy itemDef that acts as the central hub for // animation control in the new playercard itemDef { name anim_controller style WINDOW_STYLE_SHADER rect 0 0 0 0 visible 1 decoration // Open dropdown state { name OpenDropDownList onEnter { execnow ui_animate menu_playercard_self * Transparent PLAYER_CARD_SELECTION_FADE_TIME; execnow ui_animate menu_playercard_self (PLAYER_CARD_BUTTON_NAME+localVarInt(ui_playercardButton)) Default 0; execnow ui_animate menu_playercard_self anim_controller OpenDropDownList2 PLAYER_CARD_SELECTION_FADE_TIME; } } state { name OpenDropDownList2 onEnter { execnow ui_animate menu_playercard_self (PLAYER_CARD_BUTTON_NAME+localVarInt(ui_playercardButton)) Top PLAYER_CARD_SELECTION_SLIDE_TIME; execnow ui_animate menu_playercard_self anim_controller OpenDropDownList3 PLAYER_CARD_SELECTION_SLIDE_TIME; } } state { name OpenDropDownList3 onEnter { execnow ui_animate menu_playercard_self (PLAYER_CARD_DROPDOWN_LIST_NAME+localVarInt(ui_playercardButton)) Unrolled PLAYER_CARD_SELECTION_UNROLL_TIME; play uin_navigation_menu_sm_open; exec updateListboxPos menu_playercard_self; } } // Close dropdown state { name CloseDropDownList onEnter { setLocalVarInt ui_disable_controls 1; setFocus dummyButton; if ( localVarString( ui_playercardListboxCloseOverride ) != "" ) { execnow ui_animate menu_playercard_self (anim_controller) (localVarString( ui_playercardListboxCloseOverride )) 0; } else { execnow ui_animate menu_playercard_self (PLAYER_CARD_DROPDOWN_LIST_NAME+localVarInt(ui_playercardButton)) Default PLAYER_CARD_SELECTION_UNROLL_TIME; execnow ui_animate menu_playercard_self anim_controller CloseDropDownList2 (PLAYER_CARD_SELECTION_UNROLL_TIME+30); play uin_navigation_menu_sm_close; } } } state { name CloseDropDownList2 onEnter { execnow "set ui_in_player_card_popup 0"; execnow ui_animate menu_playercard_self (PLAYER_CARD_BUTTON_NAME+localVarInt(ui_playercardButton)) Default PLAYER_CARD_SELECTION_SLIDE_TIME; execnow ui_animate menu_playercard_self anim_controller CloseDropDownList3 (PLAYER_CARD_SELECTION_SLIDE_TIME+30); } } state { name CloseDropDownList3 onEnter { execnow focusItem (PLAYER_CARD_BUTTON_NAME+localVarInt(ui_playercardButton)); setLocalVarInt ui_disable_controls 0; execnow ui_animate menu_playercard_self * Default PLAYER_CARD_SELECTION_FADE_TIME; } } } #define PLAYER_CARD_RECT_STATE( nameArg, rectArg ) \ state \ { \ name nameArg \ rect rectArg \ } #define EMBLEM_EDITOR_BUTTON_ACTION \ CHANGE_MENU_SLIDE_DIRECTION( menu_playercard_self, MENU_SLIDE_DIRECTION_LEFT_TO_RIGHT, MENU_SLIDE_DIRECTION_RIGHT_TO_LEFT ); \ close self; \ execnow assertDWConnection; \ execNow "emblemgetprofile"; \ execNow emblemSelect 0; \ open emblem_edit; // EMBLEM EDITOR BUTTON FRAME_CHOICE_BUTTON_FOCUS_VIS_EX( 1, "@MENU_EMBLEM_EDITOR_CAPS", EMBLEM_EDITOR_BUTTON_ACTION, SET_HINT_TEXT( "@MPUI_EMBLEM_EDITOR_DESC" ) CLEAR_ITEM_NEW( FEATURE_EMBLEM ), CLEARUIHINT, !IS_ITEM_LOCKED( FEATURE_EMBLEM ), ; ) FRAME_CHOICE_DBUTTON_FOCUS_VIS_EX( 1, "@MENU_EMBLEM_EDITOR_CAPS", SET_HINT_TEXT( GET_UNLOCK_LEVEL_STRING( FEATURE_EMBLEM ) ), CLEARUIHINT, IS_ITEM_LOCKED( FEATURE_EMBLEM ), ; ) CHOICE_NEWICON_VIS( 1, "menu_mp_lobby_new", when( IS_ITEM_NEW( FEATURE_EMBLEM ) ) ) CHOICE_LOCKEDICON_VIS( 1, "menu_mp_lobby_locked", when( IS_ITEM_LOCKED( FEATURE_EMBLEM ) ) ) #define PLAYER_CARD_CLANTAG_BUTTON_ACTION \ CHANGE_MENU_SLIDE_DIRECTION( menu_playercard_self, MENU_SLIDE_DIRECTION_LEFT_TO_RIGHT, MENU_SLIDE_DIRECTION_RIGHT_TO_LEFT ); \ close self; \ execnow statsetbyname hasclantag 1; \ execnow changemenuopenslidedirection menu_playercards_clantag MENU_SLIDE_DIRECTION_RIGHT_TO_LEFT; \ open menu_playercards_clantag; // CLAN TAG BUTTON FRAME_CHOICE_BUTTON_FOCUS_VIS_EX( 2, "@MPUI_CLAN_TAG_CAPS", setdvar lb_prestige 0; PLAYER_CARD_CLANTAG_BUTTON_ACTION, SET_HINT_TEXT( "@MPUI_CLAN_TAG_DESC" ) CLEAR_ITEM_NEW( FEATURE_CLAN_TAG ), CLEARUIHINT, !IS_ITEM_LOCKED( FEATURE_CLAN_TAG ), PLAYER_CARD_RECT_STATE( Top, CHOICE_RECT( 1 ) ) ) FRAME_CHOICE_DBUTTON_FOCUS_VIS_EX( 2, "@MPUI_CLAN_TAG_CAPS", SET_HINT_TEXT( GET_UNLOCK_LEVEL_STRING( FEATURE_CLAN_TAG ) ), CLEARUIHINT, IS_ITEM_LOCKED( FEATURE_CLAN_TAG ), ; ) CHOICE_NEWICON_VIS( 2, "menu_mp_lobby_new", when( IS_ITEM_NEW( FEATURE_CLAN_TAG ) ) ) CHOICE_LOCKEDICON_VIS( 2, "menu_mp_lobby_locked", when( IS_ITEM_LOCKED( FEATURE_CLAN_TAG ) ) ) #define CHALLENGES_BUTTON_ACTION \ CHANGE_MENU_SLIDE_DIRECTION( menu_playercard_self, MENU_SLIDE_DIRECTION_LEFT_TO_RIGHT, MENU_SLIDE_DIRECTION_RIGHT_TO_LEFT ); \ close self; \ open menu_playercard_challenges; // CHALLENGES BUTTON FRAME_CHOICE_BUTTON_FOCUS_VIS_EX( 4, "@MENU_CHALLENGES_CAPS", CHALLENGES_BUTTON_ACTION, SET_HINT_TEXT( "@MPUI_CHALLENGES_DESC" ) CLEAR_ITEM_NEW( FEATURE_CHALLENGES ), CLEARUIHINT, !CHALLENGES_LOCKED, ; ) FRAME_CHOICE_DBUTTON_FOCUS_VIS_EX( 4, "@MENU_CHALLENGES_CAPS", SET_HINT_TEXT( GET_UNLOCK_LEVEL_STRING( FEATURE_CHALLENGES ) ), CLEARUIHINT, CHALLENGES_LOCKED, ; ) CHOICE_NEWICON_VIS( 4, "menu_mp_lobby_new", when( ANY_NEW_CHALLENGES ) ) CHOICE_LOCKEDICON_VIS( 4, "menu_mp_lobby_locked", when( CHALLENGES_LOCKED ) ) #define COMBAT_RECORD_BUTTON_ACTION \ setdvar ui_showFriendsCombatRecord 0; \ CHANGE_MENU_SLIDE_DIRECTION( menu_playercard_self, MENU_SLIDE_DIRECTION_LEFT_TO_RIGHT, MENU_SLIDE_DIRECTION_RIGHT_TO_LEFT ); \ close self; \ open menu_cr_career_summary; // COMBAT RECORD BUTTON FRAME_CHOICE_BUTTON_FOCUS_VIS_EX( 5, "@MENU_COMBAT_RECORD_CAPS", COMBAT_RECORD_BUTTON_ACTION, SET_HINT_TEXT( "@MPUI_COMBAT_RECORD_DESC" ) CLEAR_ITEM_NEW( FEATURE_COMBAT_RECORD ), CLEARUIHINT, !IS_ITEM_LOCKED( FEATURE_COMBAT_RECORD ), ; ) FRAME_CHOICE_DBUTTON_FOCUS_VIS_EX( 5, "@MENU_COMBAT_RECORD_CAPS", SET_HINT_TEXT( GET_UNLOCK_LEVEL_STRING( FEATURE_COMBAT_RECORD ) ), CLEARUIHINT, IS_ITEM_LOCKED( FEATURE_COMBAT_RECORD ), ; ) CHOICE_NEWICON_VIS( 5, "menu_mp_lobby_new", when( IS_ITEM_NEW( FEATURE_COMBAT_RECORD ) ) ) CHOICE_LOCKEDICON_VIS( 5, "menu_mp_lobby_locked", when( IS_ITEM_LOCKED( FEATURE_COMBAT_RECORD ) ) ) #define LEADERBOARDS_BUTTON_ACTION \ CHANGE_MENU_SLIDE_DIRECTION( menu_playercard_self, MENU_SLIDE_DIRECTION_LEFT_TO_RIGHT, MENU_SLIDE_DIRECTION_RIGHT_TO_LEFT ); \ close self; \ setdvar lb_prestige 0; \ execnow changemenuopenslidedirection menu_playercards_lb MENU_SLIDE_DIRECTION_RIGHT_TO_LEFT; \ open menu_playercards_lb; // LEADERBOARDS BUTTON FRAME_CHOICE_BUTTON_FOCUS_VIS_EX( 6, "@MPUI_LEADERBOARDS_CAPS", LEADERBOARDS_BUTTON_ACTION, SET_HINT_TEXT( "@MPUI_LEADERBOARDS_DESC" ), CLEARUIHINT, 1, ; ) #define FILE_SHARE_BUTTON_ACTION \ CHANGE_MENU_SLIDE_DIRECTION( menu_playercard_self, MENU_SLIDE_DIRECTION_LEFT_TO_RIGHT, MENU_SLIDE_DIRECTION_RIGHT_TO_LEFT ); \ close self; \ open menu_fileshare_myshare; // FILE SHARE BUTTON FRAME_CHOICE_BUTTON_FOCUS_VIS_EX( 8, "@MENU_FILESHARE_MYSHARE_CAPS", FILE_SHARE_BUTTON_ACTION, SET_HINT_TEXT( "@MPUI_FILE_SHARE_DESC" ), CLEARUIHINT, 1, ; ) #define RECENT_FILMS_BUTTON_ACTION \ CHANGE_MENU_SLIDE_DIRECTION( menu_playercard_self, MENU_SLIDE_DIRECTION_LEFT_TO_RIGHT, MENU_SLIDE_DIRECTION_RIGHT_TO_LEFT ); \ close self; \ open menu_fileshare_myrecentgames; // RECENT FILMS BUTTON FRAME_CHOICE_BUTTON_FOCUS_VIS_EX( 9, "@MENU_FILESHARE_MYRECENTGAMES_CAPS", RECENT_FILMS_BUTTON_ACTION, SET_HINT_TEXT( "@MPUI_MY_RECENT_GAMES_DESC" ), CLEARUIHINT, 1, ; ) #define COMMUNITY_ACTION \ if ( canShowContentFromUser( 0 ) ) \ { \ CHANGE_MENU_SLIDE_DIRECTION( menu_playercard_self, MENU_SLIDE_DIRECTION_LEFT_TO_RIGHT, MENU_SLIDE_DIRECTION_RIGHT_TO_LEFT ) ; \ close self; \ open menu_fileshare_community; \ } \ else \ { \ open menu_community_viewwarning; \ } // COMMUNITY BUTTON FRAME_CHOICE_BUTTON_FOCUS_VIS_EX( 10, "@MENU_FILESHARE_COMMUNITY_CAPS", COMMUNITY_ACTION, SET_HINT_TEXT( "@MPUI_COMMUNITY_DESC" ), CLEARUIHINT, 1, ; ) // PRESTIGE BUTTON FRAME_CHOICE_BUTTON_FOCUS_VIS_EX( 12, "@MPUI_PRESTIGE_MODE_CAPS", open prestige_reset1;, SET_HINT_TEXT( "@MPUI_PRESTIGE_MODE_DESC" ), exec "statsetbyname hasprestiged 1"; CLEARUIHINT, PRESTIGE_AVAIL, ; ) FRAME_CHOICE_DBUTTON_FOCUS_VIS_EX( 12, "@MPUI_PRESTIGE_MODE_CAPS", SET_HINT_TEXT( "@MPUI_DESC_PRESTIGE2" ), CLEARUIHINT, PRESTIGE_AVAIL==0 && PRESTIGE_FINISH==0, ; ) CHOICE_NEWICON_VIS( 12, "menu_mp_lobby_new", when( PRESTIGE_AVAIL && GetStatByName( "HASPRESTIGED" ) == 0 ) ) CHOICE_LOCKEDICON_VIS( 12, "menu_mp_lobby_locked", when( PRESTIGE_AVAIL == 0 && PRESTIGE_FINISH == 0 ) ) PLAYER_CARD_COMMON_ITEMS #define RANKTABLE_COL_MINXP 2 #define RANKTABLE_COL_XP_TO_NEXT 3 #define RANKTABLE_COL_MAX_XP 7 #define XP_BAR_X (CHOICE_X_START+55) #define XP_BAR_Y (FRAME_DEFAULT_HEIGHT/2-32) #define XP_BAR_BG_WIDTH (FRAME_DEFAULT_WIDTH-135) #define XP_BAR_HEIGHT 20 #define XP_TO_NEXT_RANK int( tableLookup( "mp/rankTable.csv", 0, PLAYER_RANK, RANKTABLE_COL_XP_TO_NEXT ) ) #define MINXP_FOR_CURR_RANK int( tableLookup( "mp/rankTable.csv", 0, PLAYER_RANK, RANKTABLE_COL_MINXP ) ) #define NEXT_LEVEL ( tablelookup( "mp/ranktable.csv", 0, getDStat( "PlayerStatsList", "RANK" ) + 1, 14 ) ) #define XP_BAR_WIDTH ( ( ( PLAYER_RANKXP - MINXP_FOR_CURR_RANK ) / XP_TO_NEXT_RANK ) * XP_BAR_BG_WIDTH ) #define XP_NEEDED_TO_LEVEL_UP \ locString( "MPUI_AAR_XP_NEEDED_CAPS",int( tableLookup( "mp/rankTable.csv", 0, PLAYER_RANK, RANKTABLE_COL_MAX_XP ) - PLAYER_RANKXP ) ) /* BACKGROUND FOR XP BAR */ PREPROC_SHADER_DRAW_VIS_EX( XP_BAR_X XP_BAR_Y XP_BAR_BG_WIDTH XP_BAR_HEIGHT CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, "white", BG_BACKCOLOR, when( CAN_RANK_UP ), ; ) PREPROC_SHADER_DRAW_VIS_EX( XP_BAR_X XP_BAR_Y XP_BAR_BG_WIDTH XP_BAR_HEIGHT CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, "menu_mp_bar_shadow", 1 1 1 0.2, when( CAN_RANK_UP ), ; ) /* XP BAR */ PREPROC_SHADER_DRAW_ADV_VIS_EX( XP_BAR_X, XP_BAR_Y, ( XP_BAR_WIDTH ), XP_BAR_HEIGHT, CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, "menu_mp_combatrecord_bar", BAR_COLOR, when( CAN_RANK_UP ), ; ) /* Tiny arrow at xp bar end */ PREPROC_SHADER_DRAW_ADV_VIS_EX( ( XP_BAR_X + XP_BAR_WIDTH - 5 ), (XP_BAR_Y+XP_BAR_HEIGHT), 10, 10, CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, "ui_arrow_right", BAR_COLOR, when( CAN_RANK_UP ), rotation -90; ) /* Label for "NEXT LEVEL" */ PREPROC_TEXT_DRAW( (XP_BAR_X-55) (XP_BAR_Y+4) 10 XP_BAR_HEIGHT CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, 0 0, "@MPUI_NEXT_LEVEL_CAPS", TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_TOP_LEFT, CHOICE_TEXTCOLOR ) /* value for XP NEEDED to next level */ PREPROC_TEXT_DRAW_VIS( (XP_BAR_X+5) (XP_BAR_Y+4) 10 XP_BAR_HEIGHT CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, 0 0, XP_NEEDED_TO_LEVEL_UP, TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_TOP_LEFT, CHOICE_TEXTCOLOR, when( CAN_RANK_UP ) ) /* next level */ PREPROC_TEXT_DRAW_VIS( (XP_BAR_X+XP_BAR_BG_WIDTH+3) (XP_BAR_Y+2) 17 17 CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, 0 0, int( NEXT_LEVEL ), TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_MIDDLE_LEFT, CHOICE_TEXTCOLOR, when( CAN_RANK_UP && PRESTIGE_NEXT==0 ) ) PREPROC_TEXT_DRAW_VIS( (XP_BAR_X+XP_BAR_BG_WIDTH+3) (XP_BAR_Y+2) 17 17 CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, 0 0, "1", TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_MIDDLE_LEFT, CHOICE_TEXTCOLOR, when( CAN_RANK_UP && PRESTIGE_NEXT ) ) /* next level rank icon */ RANK_ICON_ADV( (XP_BAR_X+XP_BAR_BG_WIDTH+6+getTextWidth( NEXT_LEVEL, CHOICE_TEXTFONT, TEXTSIZE_DEFAULT )), (XP_BAR_Y+2), HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, tablelookup( "mp/rankIconTable.csv", 0, PLAYER_RANK+1, PLAYER_PRESTIGE+1 ), when( CAN_RANK_UP && PRESTIGE_NEXT==0 ) ) RANK_ICON_ADV( (XP_BAR_X+XP_BAR_BG_WIDTH+6+getTextWidth( "1", CHOICE_TEXTFONT, TEXTSIZE_DEFAULT )), (XP_BAR_Y+2), HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, tablelookup( "mp/rankIconTable.csv", 0, 0, PLAYER_PRESTIGE+2 ), when( CAN_RANK_UP && PRESTIGE_NEXT ) ) HINT_TEXT_ALL( 13, CHOICE_X_START, 8, CHOICE_SIZE_X, dvarString( ui_hint_text ), 1 1 1 1, dvarBool( ui_show_arrow ), ; ) #ifdef CONSOLE NEW_FRAME_BACK_BUTTON_ACTION( FRAME_DEFAULT_WIDTH, FRAME_DEFAULT_HEIGHT, ON_ESC_ACTION ; ) #else NEW_FRAME_BACK_BUTTON_ACTION( FRAME_DEFAULT_WIDTH, FRAME_DEFAULT_HEIGHT, ON_ESC_ACTION ; ) #endif #include "ui/safearea.menu" } menuDef { name menu_playercard_self_basictraining rect 0 0 640 480 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN focuscolor COLOR_FOCUSED style WINDOW_STYLE_FILLED priority MENU_PRI_ONTOP control MENU_CONTROL_OPENER openSlideSpeed DEFAULT_SLIDE_IN_SPEED closeSlideSpeed DEFAULT_SLIDE_OUT_SPEED openSlideDirection MENU_SLIDE_DIRECTION_TOP_TO_BOTTOM closeSlideDirection MENU_SLIDE_DIRECTION_TOP_TO_BOTTOM onOpen { if( dvarbool(ui_selectlobby) ) { activateBlur; } play uin_navigation_menu_lg_open; if( !dvarBool( ui_playercard_self_basictraining_open ) ) { activateBlur; setdvar ui_playercard_self_basictraining_open "1"; } } onFocus { if( !dvarbool(ui_selectlobby) ) { activateBlur; } } onClose {} #undef ON_ESC_ACTION #define ON_ESC_ACTION \ CHANGE_MENU_SLIDE_DIRECTION( menu_playercard_self_basictraining, MENU_SLIDE_DIRECTION_TOP_TO_BOTTOM, MENU_SLIDE_DIRECTION_TOP_TO_BOTTOM ) ; \ CLEARUIHINT; \ deactivateBlur; \ play uin_navigation_menu_lg_close; \ close self; \ setdvar ui_playercard_self_basictraining_open 0; onESC { ON_ESC_ACTION } FRAME_DEFAULT FRAME_TITLE_DEFAULT( "@MENU_MY_PLAYERCARD_CAPS", 1 ) PLAYER_INFO_VIS( FRAME_DEFAULT_WIDTH, FRAME_DEFAULT_HEIGHT, 1 ) // This is a dummy itemDef to disable controls. // Used when animating. itemDef { name dummyButton type ITEM_TYPE_BUTTON_NO_TEXT rect 0 0 0 0 visible when( localVarString( "ui_disable_controls" ) == 1 ); execKeyInt APAD_UP {} execKeyInt DPAD_UP {} execKeyInt APAD_DOWN {} execKeyInt DPAD_DOWN {} execKeyInt APAD_LEFT {} execKeyInt DPAD_LEFT {} execKeyInt APAD_RIGHT {} execKeyInt DPAD_RIGHT {} } // This is a dummy itemDef that acts as the central hub for // animation control in the new playercard itemDef { name anim_controller style WINDOW_STYLE_SHADER rect 0 0 0 0 visible 1 decoration // Open dropdown state { name OpenDropDownList onEnter { execnow ui_animate menu_playercard_self_basictraining * Transparent PLAYER_CARD_SELECTION_FADE_TIME; execnow ui_animate menu_playercard_self_basictraining (PLAYER_CARD_BUTTON_NAME+localVarInt(ui_playercardButton)) Default 0; execnow ui_animate menu_playercard_self_basictraining anim_controller OpenDropDownList2 PLAYER_CARD_SELECTION_FADE_TIME; } } state { name OpenDropDownList2 onEnter { execnow ui_animate menu_playercard_self_basictraining (PLAYER_CARD_BUTTON_NAME+localVarInt(ui_playercardButton)) Top PLAYER_CARD_SELECTION_SLIDE_TIME; execnow ui_animate menu_playercard_self_basictraining anim_controller OpenDropDownList3 PLAYER_CARD_SELECTION_SLIDE_TIME; } } state { name OpenDropDownList3 onEnter { execnow ui_animate menu_playercard_self_basictraining (PLAYER_CARD_DROPDOWN_LIST_NAME+localVarInt(ui_playercardButton)) Unrolled PLAYER_CARD_SELECTION_UNROLL_TIME; play uin_navigation_menu_sm_open; exec updateListboxPos menu_playercard_self_basictraining; } } // Close dropdown state { name CloseDropDownList onEnter { setLocalVarInt ui_disable_controls 1; setFocus dummyButton; if ( localVarString( ui_playercardListboxCloseOverride ) != "" ) { execnow ui_animate menu_playercard_self_basictraining (anim_controller) (localVarString( ui_playercardListboxCloseOverride )) 0; } else { execnow ui_animate menu_playercard_self_basictraining (PLAYER_CARD_DROPDOWN_LIST_NAME+localVarInt(ui_playercardButton)) Default PLAYER_CARD_SELECTION_UNROLL_TIME; execnow ui_animate menu_playercard_self_basictraining anim_controller CloseDropDownList2 (PLAYER_CARD_SELECTION_UNROLL_TIME+30); play uin_navigation_menu_sm_close; } } } state { name CloseDropDownList2 onEnter { execnow "set ui_in_player_card_popup 0"; execnow ui_animate menu_playercard_self_basictraining (PLAYER_CARD_BUTTON_NAME+localVarInt(ui_playercardButton)) Default PLAYER_CARD_SELECTION_SLIDE_TIME; execnow ui_animate menu_playercard_self_basictraining anim_controller CloseDropDownList3 (PLAYER_CARD_SELECTION_SLIDE_TIME+30); } } state { name CloseDropDownList3 onEnter { execnow focusItem (PLAYER_CARD_BUTTON_NAME+localVarInt(ui_playercardButton)); setLocalVarInt ui_disable_controls 0; execnow ui_animate menu_playercard_self_basictraining * Default PLAYER_CARD_SELECTION_FADE_TIME; } } } // EMBLEM EDITOR BUTTON FRAME_CHOICE_BUTTON_FOCUS_VIS_EX( 1, "@MENU_EMBLEM_EDITOR_CAPS", EMBLEM_EDITOR_BUTTON_ACTION, SET_HINT_TEXT( "@MPUI_EMBLEM_EDITOR_DESC" ) CLEAR_ITEM_NEW( FEATURE_EMBLEM ), CLEARUIHINT, !IS_ITEM_LOCKED( FEATURE_EMBLEM ), ; ) FRAME_CHOICE_DBUTTON_FOCUS_VIS_EX( 1, "@MENU_EMBLEM_EDITOR_CAPS", SET_HINT_TEXT( GET_UNLOCK_LEVEL_STRING( FEATURE_EMBLEM ) ), CLEARUIHINT, IS_ITEM_LOCKED( FEATURE_EMBLEM ), ; ) CHOICE_NEWICON_VIS( 1, "menu_mp_lobby_new", when( IS_ITEM_NEW( FEATURE_EMBLEM ) ) ) CHOICE_LOCKEDICON_VIS( 1, "menu_mp_lobby_locked", when( IS_ITEM_LOCKED( FEATURE_EMBLEM ) ) ) // CLAN TAG BUTTON FRAME_CHOICE_BUTTON_FOCUS_VIS_EX( 2, "@MPUI_CLAN_TAG_CAPS", setdvar lb_prestige 0; PLAYER_CARD_CLANTAG_BUTTON_ACTION, SET_HINT_TEXT( "@MPUI_CLAN_TAG_DESC" ) CLEAR_ITEM_NEW( FEATURE_CLAN_TAG ), CLEARUIHINT, !IS_ITEM_LOCKED( FEATURE_CLAN_TAG ), PLAYER_CARD_RECT_STATE( Top, CHOICE_RECT( 1 ) ) ) FRAME_CHOICE_DBUTTON_FOCUS_VIS_EX( 2, "@MPUI_CLAN_TAG_CAPS", SET_HINT_TEXT( GET_UNLOCK_LEVEL_STRING( FEATURE_CLAN_TAG ) ), CLEARUIHINT, IS_ITEM_LOCKED( FEATURE_CLAN_TAG ), ; ) CHOICE_NEWICON_VIS( 2, "menu_mp_lobby_new", when( IS_ITEM_NEW( FEATURE_CLAN_TAG ) ) ) CHOICE_LOCKEDICON_VIS( 2, "menu_mp_lobby_locked", when( IS_ITEM_LOCKED( FEATURE_CLAN_TAG ) ) ) #undef CHALLENGES_BUTTON_ACTION #define CHALLENGES_BUTTON_ACTION \ CHANGE_MENU_SLIDE_DIRECTION( menu_playercard_self_basictraining, MENU_SLIDE_DIRECTION_LEFT_TO_RIGHT, MENU_SLIDE_DIRECTION_RIGHT_TO_LEFT ); \ close self; \ open menu_playercard_challenges; // CHALLENGES BUTTON FRAME_CHOICE_BUTTON_FOCUS_VIS_EX( 4, "@MENU_CHALLENGES_CAPS", CHALLENGES_BUTTON_ACTION, SET_HINT_TEXT( "@MPUI_CHALLENGES_DESC" ) CLEAR_ITEM_NEW( FEATURE_CHALLENGES ), CLEARUIHINT, !CHALLENGES_LOCKED, ; ) FRAME_CHOICE_DBUTTON_FOCUS_VIS_EX( 4, "@MENU_CHALLENGES_CAPS", SET_HINT_TEXT( GET_UNLOCK_LEVEL_STRING( FEATURE_CHALLENGES ) ), CLEARUIHINT, CHALLENGES_LOCKED, ; ) CHOICE_NEWICON_VIS( 4, "menu_mp_lobby_new", when( ANY_NEW_CHALLENGES ) ) CHOICE_LOCKEDICON_VIS( 4, "menu_mp_lobby_locked", when( CHALLENGES_LOCKED ) ) #undef COMBAT_RECORD_BUTTON_ACTION #define COMBAT_RECORD_BUTTON_ACTION \ setdvar ui_showFriendsCombatRecord 0; \ CHANGE_MENU_SLIDE_DIRECTION( menu_playercard_self_basictraining, MENU_SLIDE_DIRECTION_LEFT_TO_RIGHT, MENU_SLIDE_DIRECTION_RIGHT_TO_LEFT ); \ close self; \ open menu_cr_career_summary; // COMBAT RECORD BUTTON FRAME_CHOICE_BUTTON_FOCUS_VIS_EX( 5, "@MENU_COMBAT_RECORD_CAPS", COMBAT_RECORD_BUTTON_ACTION, SET_HINT_TEXT( "@MPUI_COMBAT_RECORD_DESC" ) CLEAR_ITEM_NEW( FEATURE_COMBAT_RECORD ), CLEARUIHINT, !IS_ITEM_LOCKED( FEATURE_COMBAT_RECORD ), ; ) FRAME_CHOICE_DBUTTON_FOCUS_VIS_EX( 5, "@MENU_COMBAT_RECORD_CAPS", SET_HINT_TEXT( GET_UNLOCK_LEVEL_STRING( FEATURE_COMBAT_RECORD ) ), CLEARUIHINT, IS_ITEM_LOCKED( FEATURE_COMBAT_RECORD ), ; ) CHOICE_NEWICON_VIS( 5, "menu_mp_lobby_new", when( IS_ITEM_NEW( FEATURE_COMBAT_RECORD ) ) ) CHOICE_LOCKEDICON_VIS( 5, "menu_mp_lobby_locked", when( IS_ITEM_LOCKED( FEATURE_COMBAT_RECORD ) ) ) // LEADERBOARDS BUTTON FRAME_CHOICE_DBUTTON_FOCUS_VIS_EX( 6, "@MPUI_LEADERBOARDS_CAPS", SET_HINT_TEXT( "@MPUI_NOT_APPLICABLE_IN_COMBAT_TRAINING" ), CLEARUIHINT, 1, ; ) CHOICE_LOCKEDICON_VIS( 6, "menu_mp_lobby_locked", 1 ) #undef FILE_SHARE_BUTTON_ACTION #define FILE_SHARE_BUTTON_ACTION \ CHANGE_MENU_SLIDE_DIRECTION( menu_playercard_self_basictraining, MENU_SLIDE_DIRECTION_LEFT_TO_RIGHT, MENU_SLIDE_DIRECTION_RIGHT_TO_LEFT ); \ close self; \ open menu_fileshare_myshare; // FILE SHARE BUTTON FRAME_CHOICE_BUTTON_FOCUS_VIS_EX( 8, "@MENU_FILESHARE_MYSHARE_CAPS", FILE_SHARE_BUTTON_ACTION, SET_HINT_TEXT( "@MPUI_FILE_SHARE_DESC" ), CLEARUIHINT, 1, ; ) #undef RECENT_FILMS_BUTTON_ACTION #define RECENT_FILMS_BUTTON_ACTION \ CHANGE_MENU_SLIDE_DIRECTION( menu_playercard_self_basictraining, MENU_SLIDE_DIRECTION_LEFT_TO_RIGHT, MENU_SLIDE_DIRECTION_RIGHT_TO_LEFT ); \ close self; \ open menu_fileshare_myrecentgames; // RECENT FILMS BUTTON FRAME_CHOICE_BUTTON_FOCUS_VIS_EX( 9, "@MENU_FILESHARE_MYRECENTGAMES_CAPS", RECENT_FILMS_BUTTON_ACTION, SET_HINT_TEXT( "@MPUI_MY_RECENT_GAMES_DESC" ), CLEARUIHINT, 1, ; ) #undef COMMUNITY_ACTION #define COMMUNITY_ACTION \ if ( canShowContentFromUser( 0 ) ) \ { \ CHANGE_MENU_SLIDE_DIRECTION( menu_playercard_self_basictraining, MENU_SLIDE_DIRECTION_LEFT_TO_RIGHT, MENU_SLIDE_DIRECTION_RIGHT_TO_LEFT ) ; \ close self; \ open menu_fileshare_community; \ } \ else \ { \ open menu_community_viewwarning; \ } // COMMUNITY BUTTON FRAME_CHOICE_BUTTON_FOCUS_VIS_EX( 10, "@MENU_FILESHARE_COMMUNITY_CAPS", COMMUNITY_ACTION, SET_HINT_TEXT( "@MPUI_COMMUNITY_DESC" ), CLEARUIHINT, 1, ; ) // PRESTIGE BUTTON FRAME_CHOICE_BUTTON_FOCUS_VIS_EX( 12, "@MPUI_PRESTIGE_MODE_CAPS", open prestige_reset1;, SET_HINT_TEXT( "@MPUI_PRESTIGE_MODE_DESC" ), exec "statsetbyname hasprestiged 1"; CLEARUIHINT, PRESTIGE_AVAIL, ; ) FRAME_CHOICE_DBUTTON_FOCUS_VIS_EX( 12, "@MPUI_PRESTIGE_MODE_CAPS", SET_HINT_TEXT( "@MPUI_DESC_PRESTIGE2" ), CLEARUIHINT, PRESTIGE_AVAIL==0 && PRESTIGE_FINISH==0, ; ) CHOICE_NEWICON_VIS( 12, "menu_mp_lobby_new", when( PRESTIGE_AVAIL && GetStatByName( "HASPRESTIGED" ) == 0 ) ) CHOICE_LOCKEDICON_VIS( 12, "menu_mp_lobby_locked", when( PRESTIGE_AVAIL == 0 && PRESTIGE_FINISH == 0 ) ) PLAYER_CARD_COMMON_ITEMS /* BACKGROUND FOR XP BAR */ PREPROC_SHADER_DRAW_VIS_EX( XP_BAR_X XP_BAR_Y XP_BAR_BG_WIDTH XP_BAR_HEIGHT CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, "white", BG_BACKCOLOR, when( CAN_RANK_UP ), ; ) PREPROC_SHADER_DRAW_VIS_EX( XP_BAR_X XP_BAR_Y XP_BAR_BG_WIDTH XP_BAR_HEIGHT CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, "menu_mp_bar_shadow", 1 1 1 0.2, when( CAN_RANK_UP ), ; ) /* XP BAR */ PREPROC_SHADER_DRAW_ADV_VIS_EX( XP_BAR_X, XP_BAR_Y, ( XP_BAR_WIDTH ), XP_BAR_HEIGHT, CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, "menu_mp_combatrecord_bar", BAR_COLOR, when( CAN_RANK_UP ), ; ) /* Tiny arrow at xp bar end */ PREPROC_SHADER_DRAW_ADV_VIS_EX( ( XP_BAR_X + XP_BAR_WIDTH - 5 ), (XP_BAR_Y+XP_BAR_HEIGHT), 10, 10, CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, "ui_arrow_right", BAR_COLOR, 1, rotation -90; ) /* Label for "NEXT LEVEL" */ PREPROC_TEXT_DRAW( (XP_BAR_X-55) (XP_BAR_Y+4) 10 XP_BAR_HEIGHT CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, 0 0, "@MPUI_NEXT_LEVEL_CAPS", TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_TOP_LEFT, CHOICE_TEXTCOLOR ) /* value for XP NEEDED to next level */ PREPROC_TEXT_DRAW_VIS( (XP_BAR_X+5) (XP_BAR_Y+4) 10 XP_BAR_HEIGHT CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, 0 0, XP_NEEDED_TO_LEVEL_UP, TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_TOP_LEFT, CHOICE_TEXTCOLOR, when( CAN_RANK_UP ) ) /* next level */ PREPROC_TEXT_DRAW_VIS( (XP_BAR_X+XP_BAR_BG_WIDTH+3) (XP_BAR_Y+2) 17 17 CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, 0 0, int( NEXT_LEVEL ), TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_MIDDLE_LEFT, CHOICE_TEXTCOLOR, when( CAN_RANK_UP && PRESTIGE_NEXT==0 ) ) PREPROC_TEXT_DRAW_VIS( (XP_BAR_X+XP_BAR_BG_WIDTH+3) (XP_BAR_Y+2) 17 17 CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, 0 0, "1", TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_MIDDLE_LEFT, CHOICE_TEXTCOLOR, when( CAN_RANK_UP && PRESTIGE_NEXT ) ) /* next level rank icon */ RANK_ICON_ADV( (XP_BAR_X+XP_BAR_BG_WIDTH+6+getTextWidth( NEXT_LEVEL, CHOICE_TEXTFONT, TEXTSIZE_DEFAULT )), (XP_BAR_Y+2), HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, tablelookup( "mp/rankIconTable.csv", 0, PLAYER_RANK+1, PLAYER_PRESTIGE+1 ), when( CAN_RANK_UP && PRESTIGE_NEXT==0 ) ) RANK_ICON_ADV( (XP_BAR_X+XP_BAR_BG_WIDTH+6+getTextWidth( "1", CHOICE_TEXTFONT, TEXTSIZE_DEFAULT )), (XP_BAR_Y+2), HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, tablelookup( "mp/rankIconTable.csv", 0, 0, PLAYER_PRESTIGE+2 ), when( CAN_RANK_UP && PRESTIGE_NEXT ) ) HINT_TEXT_ALL( 13, CHOICE_X_START, 8, CHOICE_SIZE_X, dvarString( ui_hint_text ), 1 1 1 1, dvarBool( ui_show_arrow ), ; ) #ifdef CONSOLE NEW_FRAME_BACK_BUTTON( FRAME_DEFAULT_WIDTH, FRAME_DEFAULT_HEIGHT ) #else NEW_FRAME_BACK_BUTTON_ACTION( FRAME_DEFAULT_WIDTH, FRAME_DEFAULT_HEIGHT, ON_ESC_ACTION ) #endif #include "ui/safearea.menu" } #define CAN_JOIN_SESSION \ ( FRIEND_JOINABLE == IsPlayerJoinable( dvarString( "selectedPlayerXuid" ) ) ) #define CAN_AUTOJOIN_SESSION \ ( FRIEND_AUTOJOINABLE == IsPlayerJoinable( dvarString( "selectedPlayerXuid" ) ) ) #define CAN_INVITE_TO_GAME \ ( IsPlayerInvitable( dvarString( "selectedPlayerXuid" ) ) && ( inLobby() || inPrivateParty() ) ) #define CAN_SEND_FRIEND_REQUEST \ ( getxuid() != dvarstring( "selectedPlayerXuid" ) && !isfriendfromxuid() ) #define CAN_MUTE_PLAYER \ ( getMutedStatus(dvarString( "selectedPlayerXuid" ) ) == 0 ) #define COMBAT_RECORD_LOCKED \ ( GetDisplayLevelByXuid( dvarString( "selectedPlayerXuid" ) ) <= GetItemUnlockLevel( GetItemIndex( FEATURE_COMBAT_RECORD ) ) ) #define CAN_KICK_PLAYER \ ( ( ( !InLobby() && !IsInGame() ) || \ dvarBool( xblive_privatematch ) || dvarBool( xblive_theater ) || dvarBool( xblive_basictraining ) ) \ && ( dvarBool( party_host ) || issuperuser() ) && !dvarBool( party_iamhost ) ) #define IS_IN_GAME \ ( IsInGame() ) #undef ON_ESC_ACTION #define ON_ESC_ACTION \ if( dvarBool(ui_friendsListOpen) ) \ { \ execnow changemenucloseslidedirection menu_playercard MENU_SLIDE_DIRECTION_LEFT_TO_RIGHT; \ execnow showmenu menu_friends; \ } \ elseif( dvarBool(ui_playerListOpen) ) \ { \ execnow changemenucloseslidedirection menu_playercard MENU_SLIDE_DIRECTION_LEFT_TO_RIGHT; \ execnow showmenu menu_players; \ } \ elseif( dvarBool(ui_xboxLivePartyListOpen) ) \ { \ execnow changemenucloseslidedirection menu_playercard MENU_SLIDE_DIRECTION_LEFT_TO_RIGHT; \ execnow openmenu menu_xboxLiveParty; \ } \ elseif( dvarBool(ui_leaderboardOpen) ) \ { \ execnow changemenucloseslidedirection menu_playercard MENU_SLIDE_DIRECTION_LEFT_TO_RIGHT; \ execnow openmenu (dvarString("leaderboard_menu_name")); \ } \ elseif( dvarBool(ui_ingamePlayersOpen) ) \ { \ execnow changemenucloseslidedirection menu_playercard MENU_SLIDE_DIRECTION_LEFT_TO_RIGHT; \ execnow showmenu players; \ } \ elseif( dvarBool(ui_aarScoreboardOpen) ) \ { \ execnow changemenucloseslidedirection menu_playercard MENU_SLIDE_DIRECTION_LEFT_TO_RIGHT; \ execnow showmenu menu_aar_scoreboard; \ } \ elseif( dvarBool(ui_aarWagerScoreboardOpen) ) \ { \ execnow changemenucloseslidedirection menu_playercard MENU_SLIDE_DIRECTION_LEFT_TO_RIGHT; \ execnow showmenu menu_aar_wager_scoreboard; \ } \ elseif( dvarBool(ui_nemesisPlayercardOpen) ) \ { \ execnow changemenucloseslidedirection menu_playercard MENU_SLIDE_DIRECTION_LEFT_TO_RIGHT; \ execnow openmenu menu_aar_summary; \ execNow set ui_nemesisPlayercardOpen 0; \ } \ else \ { \ execnow changemenucloseslidedirection menu_playercard MENU_SLIDE_DIRECTION_TOP_TO_BOTTOM; \ execnow changemenuopenslidedirection menu_playercard MENU_SLIDE_DIRECTION_TOP_TO_BOTTOM; \ deactivateBlur; \ } \ setDvar ui_clearFeederWithoutReset "0"; \ play uin_navigation_menu_lg_close; \ close menu_playercard; \ CLEARUIHINT; #undef CHOICE_SIZE_Y #define CHOICE_SIZE_Y (NEW_FRAME_BUTTON_HEIGHT+2) #undef CHOICE_X_START #define CHOICE_X_START (FRAME_CHOICE_X_START-1) #undef CHOICE_Y_START #define CHOICE_Y_START (FRAME_CHOICE_Y_START-4) menuDef { name menu_playercard rect 0 0 640 480 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN focuscolor COLOR_FOCUSED style WINDOW_STYLE_FILLED priority MENU_PRI_ONTOP control MENU_CONTROL_OPENER openSlideSpeed DEFAULT_SLIDE_IN_SPEED closeSlideSpeed DEFAULT_SLIDE_OUT_SPEED openSlideDirection MENU_SLIDE_DIRECTION_TOP_TO_BOTTOM closeSlideDirection MENU_SLIDE_DIRECTION_TOP_TO_BOTTOM onOpen { if( dvarbool(ui_selectlobby) ) { activateBlur; } CLEARUIHINT; play uin_navigation_menu_lg_open; execNow set ui_playercardOpen 1; execnow readFileShare; // This tests if we have to reset the cursor position ( ie. button focus on menu open ) if( dvarBool( "ui_clearFeederWithoutReset" ) ) { execNow raiseFeederEvent ClearWithoutReset; } else { execNow raiseFeederEvent Clear; setDvar ui_clearFeederWithoutReset "1"; } execNow raiseFeederEvent Populate; } onClose { play CHOICE_FOCUS_SOUND; execNow set ui_playercardOpen 0; } onFocus { if( !dvarbool(ui_selectlobby) ) { activateBlur; } } onESC { ON_ESC_ACTION } FRAME_DEFAULT FRAME_TITLE_DEFAULT( GetPlayerCardTitle( dvarString("selectedFriendName") ), 1 ) FRIEND_INFO_VIS( FRAME_DEFAULT_WIDTH, FRAME_DEFAULT_HEIGHT, 1 ) HINT_TEXT_ALL( 13, CHOICE_X_START, 8, CHOICE_SIZE_X, dvarString( ui_hint_text ), 1 1 1 1, dvarBool( ui_show_arrow ), ; ) #ifdef PC #undef CHOICE_TEXTSIZE #define CHOICE_TEXTSIZE TEXTSIZE_SMALL #undef CHOICE_TEXTFONT #define CHOICE_TEXTFONT UI_FONT_NORMAL #undef CHOICE_TEXTSTYLE #define CHOICE_TEXTSTYLE ITEM_TEXTSTYLE_NORMAL #endif //#ifdef PC itemDef { DYNAMIC_MENU_COMMON_FIELDS backgroundItemListbox "white" // omit this if you don't want button background transparency rect CHOICE_X_START CHOICE_Y_START CHOICE_SIZE_X 275 CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN menuItemsDef { maxRows 15 // THESE INCLUDE BACKGROUND, HIGHLIGHT AND SELECT BUTTON. DO NOT OMIT THESE ( THE BUTTONS MAY NOT DISPLAY PROPERLY BECAUSE OF COLUMN MISMATCH ). DYNAMIC_MENU_COMMON_COLUMNS menuColDef { type MENU_ITEM_TYPE_LOC_TEXT rect 0 0 CHOICE_SIZE_X CHOICE_SIZE_Y ITEM_ALIGN_LEFT ITEM_ALIGN_MIDDLE maxChars 50 } } onEvent InviteToGame { if( CAN_INVITE_TO_GAME ) { if( dvarBool( ui_friendsListOpen ) ) { execNow sendInvite ( dvarstring( selectedPlayerXuid ) ) 0; } elseif( dvarBool( ui_playerListOpen ) || dvarBool( ui_ingamePlayersOpen ) ) { execNow sendInvite ( dvarstring( selectedPlayerXuid ) ) 1; } else { execNow sendInvite ( dvarstring( selectedPlayerXuid ) ) 0; } } } onEvent SendFriendRequest { if( CAN_SEND_FRIEND_REQUEST ) { execNow xaddfriend ( dvarstring( selectedPlayerXuid ) ); } } onEvent CombatRecord { if( !COMBAT_RECORD_LOCKED ) { execnow changemenucloseslidedirection menu_playercard MENU_SLIDE_DIRECTION_RIGHT_TO_LEFT; execnow changemenuopenslidedirection menu_playercard MENU_SLIDE_DIRECTION_LEFT_TO_RIGHT; if( getxuid() == dvarstring( selectedPlayerXuid ) ) { close self; setdvar ui_showFriendsCombatRecord "0"; open menu_cr_career_summary; } else { setdvar ui_showFriendsCombatRecord "1"; execnow getServiceRecord ( dvarstring( selectedPlayerXuid ) ); } } } onEvent JoinSessionPlayers { if( CAN_JOIN_SESSION ) { if( IsInGame() ) { setDvar ui_keep_friends_bg_up "0"; execnow set ui_show_friends_list_bg 0; execnow ui_animate class friends_list_bg default 20; } exec JoinsessionInProgress ( dvarString( selectedPlayerXuid ) ); showmenu menu_players; close self; setDvar ui_playerListOpen "0"; setdvar invite_visible "1"; exec set menu_xboxlive_buttons_visible 1; close menu_players; } } onEvent JoinSessionFriends { if ( CAN_AUTOJOIN_SESSION ) { execNow joinSessionInProgress ( dvarString( selectedPlayerXuid ) ); } elseif ( CAN_JOIN_SESSION ) { if( IsInGame() ) { setDvar ui_keep_friends_bg_up "0"; execnow set ui_show_friends_list_bg 0; execnow ui_animate class friends_list_bg default 20; } execNow JoinsessionInProgress ( dvarstring( selectedPlayerXuid ) ); showmenu menu_friends; closeImmediate self; setDvar ui_friendsListOpen "0"; setdvar invite_visible "1"; exec set menu_xboxlive_buttons_visible 1; close menu_friends; } } onEvent ToggleMute { exec mp_toggleMute( dvarString( selectedPlayerXuid ) ) } onEvent KickPlayer { close menu_playercard_lobby; getKickPlayerQuestion; } onEvent ChangeCombatRecordHint { if( !COMBAT_RECORD_LOCKED ) { SET_HINT_TEXT( "@MPUI_COMBAT_RECORD_DESC" ) } else { SET_HINT_TEXT( ( GetCombatRecordLockedString(dvarString("selectedFriendName")) ) ) } } onEvent RecentGames { if( canShowContentFromUser( dvarstring( "selectedPlayerXuid" ) ) ) { execnow changemenucloseslidedirection menu_playercard MENU_SLIDE_DIRECTION_RIGHT_TO_LEFT; execnow changemenuopenslidedirection menu_playercard MENU_SLIDE_DIRECTION_LEFT_TO_RIGHT; close self; open menu_fileshare_recentgames; } else { open menu_recentgames_viewwarning; } } onEvent ReportUser { execnow openmenu menu_reportuser; } onEvent FileShare { if( canShowContentFromUser( dvarstring( "selectedPlayerXuid" ) ) ) { execnow changemenucloseslidedirection menu_playercard MENU_SLIDE_DIRECTION_RIGHT_TO_LEFT; execnow changemenuopenslidedirection menu_playercard MENU_SLIDE_DIRECTION_LEFT_TO_RIGHT; close self; open menu_fileshare_share; } else { open menu_fileshare_viewwarning; } } onEvent ClearHint { CLEARUIHINT; } onEvent Clear { execNow clearFeeder; } onEvent ClearWithoutReset { execNow clearFeederWithoutResetCursor; } // Adding buttons to the menu according to the conditions specified. onEvent Populate { if( isInGame() ) /* playercard in-game */ { if( dvarBool( ui_friendsListOpen ) ) { //onAction event //onFocus Event //disable Button Condition //Text on button execNow addToFeederExtended InviteToGame ClearHint (!CAN_INVITE_TO_GAME) MENU_INVITE_TO_GAME_CAPS; execNow addToFeederExtended JoinSessionFriends ClearHint (!CAN_JOIN_SESSION) MENU_JOIN_IN_PROGRESS_CAPS; } elseif( dvarBool( ui_playerListOpen )) { execNow addToFeederExtended InviteToGame ClearHint (!CAN_INVITE_TO_GAME) MENU_INVITE_TO_GAME_CAPS; execNow addToFeederExtended JoinSessionPlayers ClearHint (!CAN_JOIN_SESSION) MENU_JOIN_IN_PROGRESS_CAPS; } elseif( dvarBool( ui_ingamePlayersOpen ) || dvarBool(ui_aarScoreboardOpen) || dvarBool(ui_aarWagerScoreboardOpen) ) { execNow addToFeederExtended SendFriendRequest ClearHint (!CAN_SEND_FRIEND_REQUEST) MENU_SEND_FRIEND_REQUEST_CAPS; execNow if ( CAN_MUTE_PLAYER ) addToFeederExtended ToggleMute ClearHint 0 MENU_MUTE_CAPS; execNow if ( !CAN_MUTE_PLAYER ) addToFeederExtended ToggleMute ClearHint 0 MENU_UNMUTE_CAPS; execNow if ( CAN_KICK_PLAYER ) addToFeederExtended KickPlayer ClearHint 0 MENU_KICK_PLAYER_CAPS; #ifndef PC execNow addToFeeder noop ""; #endif //#ifndef PC execNow addToFeederExtended ReportUser ClearHint 0 MENU_REPORT_USER_CAPS; } else { execNow addToFeederExtended SendFriendRequest ClearHint (!CAN_SEND_FRIEND_REQUEST) MENU_SEND_FRIEND_REQUEST_CAPS; } } elseif( dvarBool( ui_playerListOpen ) || dvarBool( ui_xboxLivePartyListOpen ) ) /* playercard for anyone selected in the recently met player list */ { execNow addToFeederExtended SendFriendRequest ClearHint (!CAN_SEND_FRIEND_REQUEST) MENU_SEND_FRIEND_REQUEST_CAPS; execNow addToFeederExtended InviteToGame ClearHint (!CAN_INVITE_TO_GAME) MENU_INVITE_TO_GAME_CAPS; #ifndef PC execNow addToFeeder noop ""; #endif //#ifndef PC execNow addToFeederExtended CombatRecord ChangeCombatRecordHint COMBAT_RECORD_LOCKED MENU_COMBAT_RECORD_CAPS; execNow addToFeederExtended FileShare ClearHint 0 MENU_FILESHARE_CAPS; execNow addToFeederExtended RecentGames ClearHint 0 MENU_FILESHARE_RECENTGAMES_CAPS; #ifndef PC execNow addToFeeder noop ""; #endif //#ifndef PC execNow addToFeederExtended ReportUser ClearHint 0 MENU_REPORT_USER_CAPS; } elseif( dvarBool( ui_friendsListOpen ) ) /* playercard for anyone selected in the friends list */ { execNow addToFeederExtended InviteToGame ClearHint (!CAN_INVITE_TO_GAME) MENU_INVITE_TO_GAME_CAPS; if ( CAN_AUTOJOIN_SESSION ) { execNow addToFeederExtended JoinSessionFriends ClearHint (!CAN_AUTOJOIN_SESSION) MENU_AUTOJOIN_CAPS; } else { execNow addToFeederExtended JoinSessionFriends ClearHint (!CAN_JOIN_SESSION) MENU_JOIN_IN_PROGRESS_CAPS; } #ifndef PC execNow addToFeeder noop ""; #endif //#ifndef PC execNow addToFeederExtended CombatRecord ChangeCombatRecordHint COMBAT_RECORD_LOCKED MENU_COMBAT_RECORD_CAPS; execNow addToFeederExtended FileShare ClearHint 0 MENU_FILESHARE_CAPS; execNow addToFeederExtended RecentGames ClearHint 0 MENU_FILESHARE_RECENTGAMES_CAPS; #ifndef PC execNow addToFeeder noop ""; #endif //#ifndef PC execNow addToFeederExtended ReportUser ClearHint 0 MENU_REPORT_USER_CAPS; } elseif( dvarBool( ui_leaderboardOpen ) || dvarbool( ui_nemesisPlayercardOpen ) ) /* playercard for anyone selected in the leaderboards or nemesis in the after action report */ { execNow addToFeederExtended SendFriendRequest ClearHint (!CAN_SEND_FRIEND_REQUEST) MENU_SEND_FRIEND_REQUEST_CAPS; execNow addToFeederExtended InviteToGame ClearHint (!CAN_INVITE_TO_GAME) MENU_INVITE_TO_GAME_CAPS; #ifndef PC execNow addToFeeder noop ""; #endif //#ifndef PC execNow addToFeederExtended CombatRecord ChangeCombatRecordHint COMBAT_RECORD_LOCKED MENU_COMBAT_RECORD_CAPS; execNow addToFeederExtended FileShare ClearHint 0 MENU_FILESHARE_CAPS; execNow addToFeederExtended RecentGames ClearHint 0 MENU_FILESHARE_RECENTGAMES_CAPS; #ifndef PC execNow addToFeeder noop ""; #endif //#ifndef PC execNow addToFeederExtended ReportUser ClearHint 0 MENU_REPORT_USER_CAPS; } else /* playercard for anyone selected in lobby players list */ { execNow addToFeederExtended SendFriendRequest ClearHint (!CAN_SEND_FRIEND_REQUEST) MENU_SEND_FRIEND_REQUEST_CAPS; #ifndef PC execNow addToFeeder noop ""; #endif //#ifndef PC execNow addToFeederExtended CombatRecord ChangeCombatRecordHint COMBAT_RECORD_LOCKED MENU_COMBAT_RECORD_CAPS; execNow addToFeederExtended FileShare ClearHint 0 MENU_FILESHARE_CAPS; execNow addToFeederExtended RecentGames ClearHint 0 MENU_FILESHARE_RECENTGAMES_CAPS; #ifndef PC execNow addToFeeder noop ""; #endif //#ifndef PC execNow addToFeederExtended ReportUser ClearHint 0 MENU_REPORT_USER_CAPS; execNow if ( CAN_MUTE_PLAYER ) addToFeederExtended ToggleMute ClearHint 0 MENU_MUTE_CAPS; execNow if ( !CAN_MUTE_PLAYER ) addToFeederExtended ToggleMute ClearHint 0 MENU_UNMUTE_CAPS; execNow if ( CAN_KICK_PLAYER ) addToFeederExtended KickPlayer ClearHint 0 MENU_KICK_PLAYER_CAPS; } } onfocus { play CHOICE_FOCUS_SOUND; DYNAMIC_MENU_INIT( menu_playercard ) } onListboxSelectionChange { play CHOICE_FOCUS_SOUND; } doubleclick { play CHOICE_FOCUS_SOUND; execNow raiseFeederEvent; } } FRIENDS_PLAYER_CARD_COMMON_ITEMS #ifdef CONSOLE NEW_FRAME_BACK_BUTTON_ACTION( FRAME_DEFAULT_WIDTH, FRAME_DEFAULT_HEIGHT, ON_ESC_ACTION ) #else NEW_FRAME_BACK_BUTTON_ACTION(FRAME_DEFAULT_WIDTH, FRAME_DEFAULT_HEIGHT, ON_ESC_ACTION ) #endif #include "ui/safearea.menu" } } #include "ui_mp/popupstyle.inc" #include "ui/choices_setup_popmenu.menu" menuDef { SYSTEM_POPUP_SETUP_VIS( unmute_error_popup_live, setFocus unmute_error_popup_live2;, ;, 1 ) priority MENU_PRI_ONTOP SYSTEM_POPUP_TITLE_VIS( "@MENU_UNMUTE_ERROR", 1 ) SYSTEM_POPUP_SUBTITLE_VIS( "@MENU_UNMUTE_ERROR_FROM_LIVE", 1 ) FRAME_CHOICE_BUTTON_VIS_EX( 2, "@MENU_CANCEL", close self, 1, name unmute_error_popup_live_2 ) } #undef POPUP_BUTTON_COUNT #define POPUP_BUTTON_COUNT 1 menuDef { SYSTEM_POPUP_SETUP_VIS( unmute_error_popup_friends_only, ;, ;, 1 ) priority MENU_PRI_ONTOP SYSTEM_POPUP_TITLE_VIS( "@MENU_UNMUTE_ERROR", 1 ) SYSTEM_POPUP_SUBTITLE_VIS( "@MENU_UNMUTE_ERROR_FRIENDS_ONLY", 1 ) FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MENU_OK", close self;, 1, ; ) } menuDef { SYSTEM_POPUP_SETUP_VIS( unmute_error_popup_nobody, ;, ;, 1 ) priority MENU_PRI_ONTOP SYSTEM_POPUP_TITLE_VIS( "@MENU_UNMUTE_ERROR", 1 ) SYSTEM_POPUP_SUBTITLE_VIS( "@MENU_UNMUTE_ERROR_NOBODY", 1 ) FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MENU_OK", close self;, 1, ; ) } menuDef { SYSTEM_POPUP_SETUP_VIS( menu_fileshare_viewwarning, ;, ;, 1 ) priority MENU_PRI_ONTOP SYSTEM_POPUP_TITLE_VIS( "@MENU_FILESHARE_ACCESSERROR", 1 ) SYSTEM_POPUP_SUBTITLE_VIS( "@PLATFORM_FILESHARE_ACCESSERROR_MSG", 1 ) FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MENU_OK", close self;, 1, ; ) } menuDef { SYSTEM_POPUP_SETUP_VIS( menu_community_viewwarning, ;, ;, 1 ) priority MENU_PRI_ONTOP SYSTEM_POPUP_TITLE_VIS( "@MENU_COMMUNITY_ACCESSERROR", 1 ) SYSTEM_POPUP_SUBTITLE_VIS( "@PLATFORM_FILESHARE_ACCESSERROR_MSG", 1 ) FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MENU_OK", close self;, 1, ; ) } menuDef { SYSTEM_POPUP_SETUP_VIS( menu_recentgames_viewwarning, ;, ;, 1 ) priority MENU_PRI_ONTOP SYSTEM_POPUP_TITLE_VIS( "@MENU_RECENTGAMES_ACCESSERROR", 1 ) SYSTEM_POPUP_SUBTITLE_VIS( "@PLATFORM_FILESHARE_ACCESSERROR_MSG", 1 ) FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MENU_OK", close self;, 1, ; ) } #undef POPUP_BUTTON_COUNT #define POPUP_BUTTON_COUNT 5 //Report User Dialog menuDef { SYSTEM_POPUP_SETUP_VIS( "menu_reportuser", ;, close self;, 1 ) SYSTEM_POPUP_TITLE_VIS( locString( "@MENU_REPORT_USER_CAPS" ) + ":", 1 ) SYSTEM_POPUP_SUBTITLE_VIS( dvarString( "selectedFriendName" ), 1 ) #define REPORT_USER( offence ) \ execNow reportUser (dvarString("selectedPlayerXuid")) offence 1; \ close self; FRAME_CHOICE_BUTTON_FOCUS_VIS_EX( 1, "@MENU_REPORT_USER_OFFENSIVE_CAPS", REPORT_USER( "offensive" ), setLocalVarString ui_info "@MENU_REPORT_USER_OFFENSIVE_MSG";, ;, 1, ; ) FRAME_CHOICE_BUTTON_FOCUS_VIS_EX( 2, "@MENU_REPORT_USER_OFFENSIVE_EMBLEM_CAPS", REPORT_USER( "offensive_emblem" ), setLocalVarString ui_info "@MENU_REPORT_USER_OFFENSIVE_EMBLEM_MSG";, ;, 1, ; ) FRAME_CHOICE_BUTTON_FOCUS_VIS_EX( 3, "@MENU_REPORT_USER_CHEATER_CAPS", REPORT_USER( "cheater" ), setLocalVarString ui_info "@MENU_REPORT_USER_CHEATER_MSG";, ;, 1, ; ) FRAME_CHOICE_BUTTON_FOCUS_VIS_EX( 4, "@MENU_REPORT_USER_BOOSTER_CAPS", REPORT_USER( "booster" ), setLocalVarString ui_info "@MENU_REPORT_USER_BOOSTER_MSG";, ;, 1, ; ) HINT_TEXT_ALL( 5, CHOICE_X_START, 0, CHOICE_SIZE_X, localVarString( ui_info ), 1 1 1 1, 1, ; ) SYSTEM_POPUP_BACK_BUTTON }