#include "ui/menudef.h" #include "ui_mp/cac_stats.inc" #include "ui_mp/common_macro.inc" #undef ORIGIN_TITLE #define ORIGIN_TITLE 0 0 #ifdef CONSOLE #undef CHOICE_X_START #define CHOICE_X_START 0 #undef CHOICE_Y_START #define CHOICE_Y_START 50 #define RECT_ALIGN ; #else #undef CHOICE_X_START #define CHOICE_X_START 30 #undef CHOICE_Y_START #define CHOICE_Y_START 90 #define RECT_ALIGN HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN; #endif #undef CHOICE_GROUP #define CHOICE_GROUP "cac_weapon" #define BUTTON_BG_WIDTH 210 #include "ui_mp/menustyle.inc" #include "ui/choices_setup_common.menu" #include "ui_mp/cac_viewer.inc" #include "ui_mp/cac_loadout.inc" #include "ui_mp/cac_player_model.inc" #include "ui_mp/cac_weapon_anim_states.inc" #include "ui_mp/grid_common.inc" #include "ui_mp/overlaybg.inc" #include "ui_mp/popup_player_info.inc" #include "ui_mp/stats_info.inc" #include "ui_mp/item_listbox.inc" #include "ui/framestyle.inc" #include "ui_mp/newframe.inc" #undef CHOICE_SIZE_X #define CHOICE_SIZE_X 200 #define TOP_Y_OFFSET_ON 10 #define BOTTOM_Y_OFFSET_ON -110 #define TOP_Y_OFFSET_OFF -20 #define BOTTOM_Y_OFFSET_OFF -60 #define LEFT_X_OFFSET 0 #define MIDDLE_X_OFFSET -100 #define RIGHT_X_OFFSET -200 #define CLASS_BONUS_VALUE GetClassBonus( dvarString( ui_custom_name ) ) #define CAN_GUN_HAVE_CUSTOM_RETICLE ( dvarInt( ui_canHaveCustomReticle ) == 1 ) #define CUSTOMIZING_RETICLE ( localVarInt( "ui_disable_controls" ) == 0 && dvarString( ui_inside_popup ) == "select_reticle" ) #define CUSTOMIZING_RETICLE_COLOR ( localVarInt( "ui_disable_controls" ) == 0 && dvarString( ui_inside_popup ) == "select_reticle_color" ) #define CUSTOMIZING_LENS ( localVarInt( "ui_disable_controls" ) == 0 && dvarString( ui_inside_popup ) == "select_lens" ) #define WEAPON_GROUP_LIST_BUTTON_B_ACTION \ if ( dvarString( selected_loadout_slot ) == "primary" ) \ { \ execnow setCurrentItemIndex ( STAT_CAC_PRIMARY ); \ } \ elseif ( dvarString( selected_loadout_slot ) == "secondary" ) \ { \ execnow setCurrentItemIndex ( STAT_CAC_SECONDARY ); \ } #define WEAPON_LIST_BUTTON_B_ACTION \ execnow set cac_weapon_current_list weapon_group_list; \ execnow set cac_weapon_feeder_count ( GetFeederCount( weapon_group_list ) ); \ execnow set ui_next_inside_popup select_weapon_group; \ if ( dvarString( selected_loadout_slot ) == "primary" ) \ { \ execnow setCurrentItemIndex ( STAT_CAC_PRIMARY ); \ } \ elseif ( dvarString( selected_loadout_slot ) == "secondary" ) \ { \ execnow setCurrentItemIndex ( STAT_CAC_SECONDARY ); \ } #define UPDATE_ATTACH_SLOT_TOP \ if ( dvarString( selected_loadout_slot ) == "primary" ) \ { \ execnow set ui_att_slot_top ( CAC_PRI_ATTACHMENT_SLOT_TOP ); \ } \ elseif ( dvarString( selected_loadout_slot ) == "secondary" ) \ { \ execnow set ui_att_slot_top ( CAC_SEC_ATTACHMENT_SLOT_TOP ); \ } \ if ( IsAttachmentAllowedOnItemIndex( STAT_CAC_PRIMARY, "elbit" ) || IsAttachmentAllowedOnItemIndex( STAT_CAC_PRIMARY, "reflex" ) ) \ { \ setDvar ui_canHaveCustomReticle 1; \ } \ else \ { \ setDvar ui_canHaveCustomReticle 0; \ } #undef ON_ESC #define ON_ESC \ if( dvarString( cac_weapon_current_list ) == "weapon_list" ) \ { \ execnow ui_animate cac_weapon anim_controller CloseDropDownList 0; \ WEAPON_LIST_BUTTON_B_ACTION \ } \ elseif( dvarString( cac_weapon_current_list ) == "weapon_group_list" ) \ { \ execnow ui_animate cac_weapon anim_controller CloseDropDownList 0; \ WEAPON_GROUP_LIST_BUTTON_B_ACTION \ } \ else \ { \ if ( dvarString( selected_loadout_slot ) == "primary" ) \ { \ execnow setCurrentItemIndex ( STAT_CAC_PRIMARY ); \ } \ elseif ( dvarString( selected_loadout_slot ) == "secondary" ) \ { \ execnow setCurrentItemIndex ( STAT_CAC_SECONDARY ); \ } \ \ if ( dvarString( ui_inside_popup ) != "0" ) \ { \ execnow ui_animate cac_weapon anim_controller CloseDropDownList 0; \ } \ else \ { \ closeimmediate self; \ execnow changemenuopenslidedirection menu_cac_custom MENU_SLIDE_DIRECTION_LEFT_TO_RIGHT; \ openimmediate menu_cac_custom; \ } \ } { menuDef { name cac_weapon rect 0 0 640 480 style WINDOW_STYLE_EMPTY control MENU_CONTROL_OPENER soundloop MENU_MUSIC openSlideSpeed DEFAULT_SLIDE_IN_SPEED closeSlideSpeed DEFAULT_SLIDE_OUT_SPEED openSlideDirection MENU_SLIDE_DIRECTION_RIGHT_TO_LEFT closeSlideDirection MENU_SLIDE_DIRECTION_LEFT_TO_RIGHT popup onOpen { if ( dvarString( ui_faction ) == "" ) { setdvar ui_faction FIRST_FACTION; } execnow set ui_cac_weapon_hint_text ""; SHOW_VIEWER; SET_VIEWER_MODE_PLAYER; // set focus to first menu selection setfocus NEW_FRAME_BUTTON_NAME"1"; execnow set cac_weapon_feeder_count 0; UPDATE_ATTACH_SLOT_TOP execNow set ui_numBarPartitions 10; setlocalVarBool ui_inside_dropdown 0; } onFocus { setLocalVarInt ui_highlight -1; execnow set ui_cac_weapon_hint_text ""; setLocalVarString ui_choicegroup CHOICE_GROUP; activateBlur; UPDATE_ATTACH_SLOT_TOP if ( dvarBool( "ui_closeAfterPurchase" ) ) { execnow ui_animate cac_weapon anim_controller CloseDropDownList 0; execnow set ui_closeAfterPurchase 0; } } onEsc { ON_ESC } onClose { deactivateBlur; HIDE_VIEWER; } // Frame setup #define CAC_HEIGHT NEW_FRAME_DEFAULT_HEIGHT #define CAC_WIDTH ( CAC_HEIGHT * FRAME_ASPECT_RATIO ) #define IS_CUSTOM_CLASS_MODE dvarInt( ui_useCustomClassInfo ) == 1 #define IS_ONLINE_GAME ( dvarInt( splitscreen ) == 0 && dvarInt( systemlink ) == 0 ) #define IS_BASICTRAINING_GAME ( dvarInt( xblive_basictraining ) > 0 ) NEW_FRAME( CAC_WIDTH, CAC_HEIGHT ) NEW_FRAME_TITLE( CAC_WIDTH, CAC_HEIGHT, "@MPUI_CREATE_A_CLASS_CAPS", when( !IS_CUSTOM_CLASS_MODE ) ) NEW_FRAME_TITLE( CAC_WIDTH, CAC_HEIGHT, "@CUSTOM_EDIT_CLASS_LOADOUT_CAPS", when( IS_CUSTOM_CLASS_MODE ) ) NEW_FRAME_SUBTITLE( CAC_WIDTH, CAC_HEIGHT, dvarString( dvarString( ui_custom_name ) ) + " / " + locString("@MPUI_PRIMARY_WEAPON_CAPS"), when( dvarString( selected_loadout_slot ) == "primary" && !IS_CUSTOM_CLASS_MODE && ( IS_ONLINE_GAME && !IS_BASICTRAINING_GAME ) ) ) NEW_FRAME_SUBTITLE( CAC_WIDTH, CAC_HEIGHT, dvarString( dvarString( ui_custom_name ) ) + " / " + locString("@MPUI_SECONDARY_WEAPON_CAPS"), when( dvarString( selected_loadout_slot ) == "secondary" && !IS_CUSTOM_CLASS_MODE && ( IS_ONLINE_GAME && !IS_BASICTRAINING_GAME ) ) ) NEW_FRAME_SUBTITLE( CAC_WIDTH, CAC_HEIGHT, dvarString( dvarString( offline_custom_name ) ) + " / " + locString("@MPUI_PRIMARY_WEAPON_CAPS"), when( dvarString( selected_loadout_slot ) == "primary" && !IS_CUSTOM_CLASS_MODE && ( !IS_ONLINE_GAME || IS_BASICTRAINING_GAME ) ) ) NEW_FRAME_SUBTITLE( CAC_WIDTH, CAC_HEIGHT, dvarString( dvarString( offline_custom_name ) ) + " / " + locString("@MPUI_SECONDARY_WEAPON_CAPS"), when( dvarString( selected_loadout_slot ) == "secondary" && !IS_CUSTOM_CLASS_MODE && ( !IS_ONLINE_GAME || IS_BASICTRAINING_GAME ) ) ) NEW_FRAME_SUBTITLE( CAC_WIDTH, CAC_HEIGHT, dvarString( custom_class_name ) + " / " + locString("@MPUI_PRIMARY_WEAPON_CAPS"), when( dvarString( selected_loadout_slot ) == "primary" && IS_CUSTOM_CLASS_MODE ) ) NEW_FRAME_SUBTITLE( CAC_WIDTH, CAC_HEIGHT, dvarString( custom_class_name ) + " / " + locString("@MPUI_SECONDARY_WEAPON_CAPS"), when( dvarString( selected_loadout_slot ) == "secondary" && IS_CUSTOM_CLASS_MODE ) ) PLAYER_INFO_VIS( CAC_WIDTH, CAC_HEIGHT, 1 ) #define DIRT_IMAGE_WIDTH 400 #define DIRT_IMAGE_HEIGHT 128 #define DIRT_IMAGE_X (-DIRT_IMAGE_WIDTH/2) #define DIRT_IMAGE_Y 60 #ifndef PC_INGAME /* dirt image */ PREPROC_SHADER_DRAW( DIRT_IMAGE_X DIRT_IMAGE_Y DIRT_IMAGE_WIDTH DIRT_IMAGE_HEIGHT HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, "menu_mp_lobby_cac_dirt", 1 1 1 0.2 ) CAC_FACTION_MODEL #ifdef PC CAC_ROTATE_ARROWS #endif // #ifdef PC #endif // Button setup #define FEEDER_MAX 10 #define FEEDER_COUNT ( dvarInt( cac_weapon_feeder_count ) ) //#define LIMITED_FEEDER_COUNT ( Select( ( FEEDER_COUNT > FEEDER_MAX ), FEEDER_MAX, FEEDER_COUNT ) ) #define LIMITED_FEEDER_COUNT 1 #define SCROLL_ARROWS_OFFSET ( Select( ( FEEDER_COUNT > FEEDER_MAX ), ( NEW_FRAME_BUTTON_SPACING ), 0 ) ) #undef BUTTON_BG_WIDTH #define BUTTON_BG_WIDTH NEW_FRAME_BUTTON_WIDTH #define WEAPON_BUTTON_HEIGHT NEW_FRAME_BUTTON_HEIGHT #define WEAPON_BUTTON_WIDTH NEW_FRAME_BUTTON_WIDTH #define LEFT_X NEW_FRAME_CHOICE_X_START #define TOP_Y NEW_FRAME_CHOICE_Y_START #define BOTTOM_Y ( CAC_HEIGHT / 2 - WEAPON_BUTTON_HEIGHT - 10 ) #define SELECT_WEAPON_INDEX 1 #define SELECT_WEAPON_INDEX_STRING "1" #define ATTACHMENTS_INDEX 2 #define CAMO_INDEX 3 #define CAMO_INDEX_STRING "3" #define RETICLE_INDEX 4 #define RETICLE_INDEX_STRING "4" #define RETICLE_COLOR_INDEX 5 #define RETICLE_COLOR_INDEX_STRING "5" #define LENS_INDEX 6 #define LENS_INDEX_STRING "6" #define GUN_TAG_INDEX 7 #define GUN_TAG_INDEX_STRING "7" #define GUN_EMBLEM_INDEX 8 #define GUN_EMBLEM_INDEX_STRING "8" #define DUAL_WIELD_INDEX 9 #define SECOND_ATTACHMENT_INDEX 10 #define HINT_INDEX 11 #define SELECT_WEAPON_Y ( TOP_Y ) #define ATTACHMENTS_Y ( SELECT_WEAPON_Y + WEAPON_BUTTON_HEIGHT + NEW_FRAME_BUTTON_SPACING ) #define CAMO_Y ( ATTACHMENTS_Y + WEAPON_BUTTON_HEIGHT + NEW_FRAME_BUTTON_SPACING ) #define RETICLE_Y ( CAMO_Y + WEAPON_BUTTON_HEIGHT + NEW_FRAME_SEPARATED_BUTTON_SPACING ) #define RETICLE_COLOR_Y ( RETICLE_Y + WEAPON_BUTTON_HEIGHT + NEW_FRAME_BUTTON_SPACING ) #define LENS_Y ( RETICLE_COLOR_Y + WEAPON_BUTTON_HEIGHT + NEW_FRAME_BUTTON_SPACING ) #define GUN_TAG_Y ( LENS_Y + WEAPON_BUTTON_HEIGHT + NEW_FRAME_SEPARATED_BUTTON_SPACING ) #define GUN_EMBLEM_Y ( GUN_TAG_Y + WEAPON_BUTTON_HEIGHT + NEW_FRAME_BUTTON_SPACING ) #define DUAL_WIELD_Y ( GUN_EMBLEM_Y + WEAPON_BUTTON_HEIGHT + NEW_FRAME_BUTTON_SPACING ) #define SECOND_ATTACHMENT_Y ( DUAL_WIELD_Y + WEAPON_BUTTON_HEIGHT + NEW_FRAME_BUTTON_SPACING ) #define HINT_Y ( SECOND_ATTACHMENT_Y + WEAPON_BUTTON_HEIGHT + NEW_FRAME_BUTTON_SPACING ) #define LAST_Y HINT_Y #define ACCORDION_HEIGHT ( BOTTOM_Y - LAST_Y ) // Listbox setup #define LIST_X_START LEFT_X #define LIST_HEIGHT 0 #define LIST_UNROLLED_HEIGHT ( FEEDER_MAX * 17 + 5 ) #define LIST_WIDTH WEAPON_BUTTON_WIDTH #define LIST_ELEM_HEIGHT 17 #undef CHOICE_HORIZONTAL_ALIGN #define CHOICE_HORIZONTAL_ALIGN HORIZONTAL_ALIGN_CENTER #undef CHOICE_VERTICAL_ALIGN #define CHOICE_VERTICAL_ALIGN VERTICAL_ALIGN_CENTER // Animation states #define BUTTONS_FADE_TIME 90 #define ACCORDION_EXPAND_TIME 150 #define ACCORDION_ROLLUP_TIME 150 #define INTERIM_ANIM_TIME 15 #define GET_SLOT_STAT \ ( Select( dvarString( selected_loadout_slot ) == "primary", STAT_CAC_PRIMARY, STAT_CAC_SECONDARY ) ) #define LISTBOX_STATES \ state \ { \ name Unrolled \ rect LIST_X_START LIST_Y_START LIST_WIDTH LIST_UNROLLED_HEIGHT CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN \ } // 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( localVarInt( "ui_disable_controls" ) == 1 ); execKeyInt BUTTON_B {} execKeyInt APAD_UP {} execKeyInt DPAD_UP {} execKeyInt APAD_DOWN {} execKeyInt DPAD_DOWN {} execKeyInt APAD_LEFT {} execKeyInt DPAD_LEFT {} execKeyInt APAD_RIGHT {} execKeyInt DPAD_RIGHT {} } // Animation controller itemDef { name anim_controller style WINDOW_STYLE_SHADER rect 0 0 0 0 visible 1 decoration // Open drop down list state { name OpenDropDownList onEnter { setLocalVarInt ui_disable_controls 1; setFocus dummyButton; execNow if ( localVarInt( ui_weaponButton ) < 8 ) ui_animate cac_weapon NEW_FRAME_BUTTON_NAME"8" Transparent BUTTONS_FADE_TIME; execNow if ( localVarInt( ui_weaponButton ) < 7 ) ui_animate cac_weapon NEW_FRAME_BUTTON_NAME"7" Transparent BUTTONS_FADE_TIME; execNow if ( localVarInt( ui_weaponButton ) < 6 ) ui_animate cac_weapon NEW_FRAME_BUTTON_NAME"6" Transparent BUTTONS_FADE_TIME; execNow if ( localVarInt( ui_weaponButton ) < 5 ) ui_animate cac_weapon NEW_FRAME_BUTTON_NAME"5" Transparent BUTTONS_FADE_TIME; execNow if ( localVarInt( ui_weaponButton ) < 4 ) ui_animate cac_weapon NEW_FRAME_BUTTON_NAME"4" Transparent BUTTONS_FADE_TIME; execNow if ( localVarInt( ui_weaponButton ) < 3 ) ui_animate cac_weapon NEW_FRAME_BUTTON_NAME"3" Transparent BUTTONS_FADE_TIME; execNow if ( localVarInt( ui_weaponButton ) < 2 ) ui_animate cac_weapon NEW_FRAME_BUTTON_NAME"2" Transparent BUTTONS_FADE_TIME; execnow ui_animate cac_weapon menu_hint Transparent BUTTONS_FADE_TIME; execnow ui_animate cac_weapon list_hint Transparent 0; execnow ui_animate cac_weapon anim_controller OpenDropDownList2 ( BUTTONS_FADE_TIME + INTERIM_ANIM_TIME ); } } state { name OpenDropDownList2 onEnter { setLocalVarBool ui_inside_dropdown 1; execnow ui_animate cac_weapon (dvarString( cac_weapon_current_list )) Unrolled ACCORDION_EXPAND_TIME; execnow ui_animate cac_weapon list_hint Default ACCORDION_EXPAND_TIME; play uin_navigation_menu_sm_open; execnow ui_animate cac_weapon anim_controller OpenDropDownList3 ( ( LIMITED_FEEDER_COUNT * ACCORDION_EXPAND_TIME ) + INTERIM_ANIM_TIME ); } } state { name OpenDropDownList3 onEnter { execnow focusitem ( dvarString( cac_weapon_current_list ) ); setLocalVarInt ui_disable_controls 0; } } // Close drop down list state { name CloseDropDownList onEnter { UPDATE_ATTACH_SLOT_TOP setLocalVarInt ui_disable_controls 1; setFocus dummyButton; execnow ui_animate cac_weapon (dvarString( cac_weapon_current_list )) Default ( LIMITED_FEEDER_COUNT * ACCORDION_ROLLUP_TIME ); execnow ui_animate cac_weapon list_hint Transparent ACCORDION_ROLLUP_TIME; execnow ui_animate cac_weapon anim_controller CloseDropDownList2 ( ( LIMITED_FEEDER_COUNT * ACCORDION_ROLLUP_TIME ) + INTERIM_ANIM_TIME ); execnow set cac_weapon_current_list ""; execnow set cac_weapon_feeder_count 0; play uin_navigation_menu_sm_close; } } state { name CloseDropDownList2 onEnter { setLocalVarInt ui_inside_dropdown 0; if ( dvarString( cac_weapon_current_list ) != "" ) { execnow set ui_inside_popup (dvarString(ui_next_inside_popup)); if( dvarString(ui_next_inside_popup) == "select_weapon_group" ) { execnow setCurrentItemIndex ( GET_SLOT_STAT ); } execnow ui_animate cac_weapon anim_controller OpenDropDownList 0; } else { execnow ui_animate cac_weapon * Default BUTTONS_FADE_TIME; execnow ui_animate cac_weapon list_hint Transparent 0; execnow ui_animate cac_weapon anim_controller CloseDropDownList3 ( BUTTONS_FADE_TIME + INTERIM_ANIM_TIME ); } } } state { name CloseDropDownList3 onEnter { execnow focusitem (NEW_FRAME_BUTTON_NAME+localVarInt( ui_weaponButton )); setLocalVarInt ui_disable_controls 0; execnow set ui_inside_popup "0"; } } } #define IS_PRI ( dvarString( selected_loadout_slot ) == "primary" ) #define IS_SEC ( dvarString( selected_loadout_slot ) == "secondary" ) // Button actions #define COMMON_BUTTON_ACTION \ execnow ui_animate cac_weapon anim_controller OpenDropDownList 0; #define SELECT_WEAPON_ACTION \ if ( dvarString( ui_inside_popup ) != "0" ) \ { \ ON_ESC \ } \ else \ { \ setDvar ui_inside_popup select_weapon_group; \ execnow set cac_weapon_current_list weapon_group_list; \ execnow set cac_weapon_feeder_count ( GetFeederCount( weapon_group_list ) );\ setLocalVarInt ui_weaponButton SELECT_WEAPON_INDEX; \ COMMON_BUTTON_ACTION \ } #define SELECT_WEAPON_VIS \ ( !localVarBool( ui_inside_dropdown ) || ( localVarInt( ui_weaponButton ) >= SELECT_WEAPON_INDEX ) ) #define ATTACHMENTS_ACTION \ if ( dvarString( ui_inside_popup ) != "0" ) \ { \ ON_ESC \ } \ else \ { \ if ( dvarString( selected_loadout_slot ) == "primary" ) \ { \ execnow setCurrentItemIndex ( STAT_CAC_PRIMARY ); \ } \ elseif ( dvarString( selected_loadout_slot ) == "secondary" ) \ { \ execnow setCurrentItemIndex ( STAT_CAC_SECONDARY ); \ } \ setDvar ui_inside_popup attachments; \ execnow set cac_weapon_current_list attachments_list; \ execnow set cac_weapon_feeder_count ( GetFeederCount( attachments_list ) ); \ setLocalVarInt ui_weaponButton ATTACHMENTS_INDEX; \ COMMON_BUTTON_ACTION \ } #define ATTACHMENTS_VIS \ ( !localVarBool( ui_inside_dropdown ) || ( localVarInt( ui_weaponButton ) >= ATTACHMENTS_INDEX ) ) #define WEAPON_OPTION_ACTION( popupName, currentList, index, group ) \ if ( dvarString( ui_inside_popup ) != "0" ) \ { \ ON_ESC \ } \ else \ { \ execNow set ui_currentWeaponOptionGroup group; \ if ( dvarString( selected_loadout_slot ) == "primary" ) \ { \ execNow set selected_group GetItemGroup( STAT_CAC_PRIMARY ); \ execnow setCurrentItemIndex ( STAT_CAC_PRIMARY ); \ } \ elseif ( dvarString( selected_loadout_slot ) == "secondary" ) \ { \ execNow set selected_group GetItemGroup( STAT_CAC_SECONDARY ); \ execnow setCurrentItemIndex ( STAT_CAC_SECONDARY ); \ } \ setDvar ui_inside_popup popupName; \ execnow set cac_weapon_current_list currentList; \ execnow set cac_weapon_feeder_count ( GetFeederCount( currentList ) ); \ setLocalVarInt ui_weaponButton index; \ COMMON_BUTTON_ACTION \ } #define CAMO_ACTION \ WEAPON_OPTION_ACTION( select_camo, camo_list, CAMO_INDEX, 0 ) \ #define CAMO_VIS \ ( !localVarBool( ui_inside_dropdown ) || ( localVarInt( ui_weaponButton ) >= CAMO_INDEX ) ) #define RETICLE_ACTION \ WEAPON_OPTION_ACTION( select_reticle, reticle_list, RETICLE_INDEX, 1 ) \ #define RETICLE_VIS \ ( !localVarBool( ui_inside_dropdown ) || ( localVarInt( ui_weaponButton ) >= RETICLE_INDEX ) ) #define RETICLE_COLOR_ACTION \ WEAPON_OPTION_ACTION( select_reticle_color, reticle_color_list, RETICLE_COLOR_INDEX, 5 ) #define RETICLE_COLOR_VIS \ ( !localVarBool( ui_inside_dropdown ) || ( localVarInt( ui_weaponButton ) >= RETICLE_COLOR_INDEX ) ) #define LENS_ACTION \ WEAPON_OPTION_ACTION( select_lens, lens_list, LENS_INDEX, 2 ) \ #define LENS_VIS \ ( !localVarBool( ui_inside_dropdown ) || ( localVarInt( ui_weaponButton ) >= LENS_INDEX ) ) // Conditions #include "ui_mp/cac_attachment_conditions.inc" #define IS_NO_LIST_OPEN ( dvarString( "ui_inside_popup" ) == "0" ) #define IS_WEAPON_LIST_OPEN ( dvarString( "ui_inside_popup" ) == "select_weapon_group" || dvarString( "ui_inside_popup" ) == "select_weapon" ) #define IS_ATTACHMENT_LIST_OPEN ( dvarString( "ui_inside_popup" ) == "attachments" ) #define ATTACHMENTS_AVAILABLE ( GetCurrentItemNumAttachments() > 1 ) // None counts as an attachment. #define IS_CAMO_LIST_OPEN ( dvarString( "ui_inside_popup" ) == "select_camo" ) #define IS_RETICLE_LIST_OPEN ( dvarString( "ui_inside_popup" ) == "select_reticle" ) #define IS_LENS_LIST_OPEN ( dvarString( "ui_inside_popup" ) == "select_lens" || dvarString( "ui_inside_popup" ) == "select_lens_color" ) #define ACCORDION_BUTTON_RECT( yPos ) \ LEFT_X yPos WEAPON_BUTTON_WIDTH WEAPON_BUTTON_HEIGHT HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER // Accordion buttons NEW_FRAME_BUTTON( 1, ACCORDION_BUTTON_RECT( SELECT_WEAPON_Y ), "@MPUI_PRIMARY_WEAPON_CAPS", SELECT_WEAPON_ACTION, ;, ;, dvarString( selected_loadout_slot ) == "primary" && SELECT_WEAPON_VIS, ;, ; ) NEW_FRAME_BUTTON( 1, ACCORDION_BUTTON_RECT( SELECT_WEAPON_Y ), "@MPUI_SECONDARY_WEAPON_CAPS", SELECT_WEAPON_ACTION, ;, ;, dvarString( selected_loadout_slot ) == "secondary" && SELECT_WEAPON_VIS, ;, ; ) NEW_FRAME_NEWICON_RECT_VIS( LEFT_X, SELECT_WEAPON_Y, WEAPON_BUTTON_WIDTH, WEAPON_BUTTON_HEIGHT, HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, ( ANY_NEW_PRIMARIES && dvarString( selected_loadout_slot ) == "primary" && dvarString( "ui_inside_popup" ) == "0" ), name NEW_FRAME_BUTTON_NAME SELECT_WEAPON_INDEX_STRING; ) NEW_FRAME_NEWICON_RECT_VIS( LEFT_X, SELECT_WEAPON_Y, WEAPON_BUTTON_WIDTH, WEAPON_BUTTON_HEIGHT, HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, ( ANY_NEW_SECONDARIES && dvarString( selected_loadout_slot ) == "secondary" && dvarString( "ui_inside_popup" ) == "0" ), name NEW_FRAME_BUTTON_NAME SELECT_WEAPON_INDEX_STRING; ) NEW_FRAME_BUTTON( 2, ACCORDION_BUTTON_RECT( ATTACHMENTS_Y ), "@MPUI_ATTACHMENTS_CAPS", ATTACHMENTS_ACTION, ;, ;, ATTACHMENTS_AVAILABLE && ATTACHMENTS_VIS, ;, ; ) NEW_FRAME_BUTTON_COLOR( 2, ACCORDION_BUTTON_RECT( ATTACHMENTS_Y ), "@MPUI_ATTACHMENTS_CAPS", MEDIUM_GRAY_RGB, MEDIUM_GRAY_ALPHA, MEDIUM_GRAY, ;, execnow set ui_cac_weapon_hint_text "@MPUI_GUN_HAS_NO_ATTACHMENTS";, execnow set ui_cac_weapon_hint_text "";, !ATTACHMENTS_AVAILABLE && ATTACHMENTS_VIS, ;, ; ) NEW_FRAME_BUTTON( 3, ACCORDION_BUTTON_RECT( CAMO_Y ), "@MPUI_CAMO_CAPS", CAMO_ACTION, CLEAR_ITEM_NEW( FEATURE_CAMO ), ;, ( IS_PRI && !CAMO_LOCKED ) && CAMO_VIS, ;, ; ) NEW_FRAME_BUTTON_COLOR( 3, ACCORDION_BUTTON_RECT( CAMO_Y ), "@MPUI_CAMO_CAPS", MEDIUM_GRAY_RGB, MEDIUM_GRAY_ALPHA, MEDIUM_GRAY, ;, execnow set ui_cac_weapon_hint_text GET_UNLOCK_LEVEL_STRING( FEATURE_CAMO );, execnow set ui_cac_weapon_hint_text "";, ( IS_PRI && CAMO_LOCKED ) && CAMO_VIS, ;, ; ) NEW_FRAME_NEWICON_RECT_VIS( LEFT_X, CAMO_Y, WEAPON_BUTTON_WIDTH, WEAPON_BUTTON_HEIGHT, HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, ( IS_ITEM_NEW( FEATURE_CAMO ) && IS_PRI ), name NEW_FRAME_BUTTON_NAME CAMO_INDEX_STRING; ) NEW_FRAME_LOCKEDICON_RECT_VIS( LEFT_X, CAMO_Y, WEAPON_BUTTON_WIDTH, WEAPON_BUTTON_HEIGHT, HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, ( IS_PRI && CAMO_LOCKED ), name NEW_FRAME_BUTTON_NAME CAMO_INDEX_STRING; ) NEW_FRAME_BUTTON( 4, ACCORDION_BUTTON_RECT( RETICLE_Y ), "@MPUI_RETICLE_CAPS", RETICLE_ACTION, CLEAR_ITEM_NEW( FEATURE_RETICLES ), ;, ( LENSESORRETICLES_AVAILABLE && IS_PRI && !RETICLES_LOCKED ) && RETICLE_VIS, ;, ; ) NEW_FRAME_BUTTON_COLOR( 4, ACCORDION_BUTTON_RECT( RETICLE_Y ), "@MPUI_RETICLE_CAPS", MEDIUM_GRAY_RGB, MEDIUM_GRAY_ALPHA, MEDIUM_GRAY, ;, execnow set ui_cac_weapon_hint_text "@MPUI_NEED_RETICLE_ATTACHMENT"; CLEAR_ITEM_NEW( FEATURE_RETICLES ), execnow set ui_cac_weapon_hint_text "";, ( !LENSESORRETICLES_AVAILABLE && !RETICLES_LOCKED && IS_PRI && CAN_GUN_HAVE_CUSTOM_RETICLE ) && RETICLE_VIS, ;, ; ) NEW_FRAME_BUTTON_COLOR( 4, ACCORDION_BUTTON_RECT( RETICLE_Y ), "@MPUI_RETICLE_CAPS", MEDIUM_GRAY_RGB, MEDIUM_GRAY_ALPHA, MEDIUM_GRAY, ;, execnow set ui_cac_weapon_hint_text GET_UNLOCK_LEVEL_STRING( FEATURE_RETICLES );, execnow set ui_cac_weapon_hint_text "";, ( RETICLES_LOCKED && IS_PRI && CAN_GUN_HAVE_CUSTOM_RETICLE ) && RETICLE_VIS, ;, ; ) NEW_FRAME_NEWICON_RECT_VIS( LEFT_X, RETICLE_Y, WEAPON_BUTTON_WIDTH, WEAPON_BUTTON_HEIGHT, HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, ( IS_ITEM_NEW( FEATURE_RETICLES ) && IS_PRI && CAN_GUN_HAVE_CUSTOM_RETICLE ), name NEW_FRAME_BUTTON_NAME RETICLE_INDEX_STRING; ) NEW_FRAME_LOCKEDICON_RECT_VIS( LEFT_X, RETICLE_Y, WEAPON_BUTTON_WIDTH, WEAPON_BUTTON_HEIGHT, HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, ( IS_PRI && CAN_GUN_HAVE_CUSTOM_RETICLE && RETICLES_LOCKED ), name NEW_FRAME_BUTTON_NAME RETICLE_INDEX_STRING; ) NEW_FRAME_BUTTON( 5, ACCORDION_BUTTON_RECT( RETICLE_COLOR_Y ), "@MPUI_RETICLE_COLOR_CAPS", RETICLE_COLOR_ACTION, CLEAR_ITEM_NEW( FEATURE_RETICLE_COLOR ), ;, ( LENSESORRETICLES_AVAILABLE && IS_PRI && !RETICLE_COLOR_LOCKED ) && RETICLE_COLOR_VIS, ;, ; ) NEW_FRAME_BUTTON_COLOR( 5, ACCORDION_BUTTON_RECT( RETICLE_COLOR_Y ), "@MPUI_RETICLE_COLOR_CAPS", MEDIUM_GRAY_RGB, MEDIUM_GRAY_ALPHA, MEDIUM_GRAY, ;, execnow set ui_cac_weapon_hint_text "@MPUI_NEED_RETICLE_COLOR_ATTACHMENT"; CLEAR_ITEM_NEW( FEATURE_RETICLE_COLOR ), execnow set ui_cac_weapon_hint_text "";, ( !LENSESORRETICLES_AVAILABLE && !RETICLE_COLOR_LOCKED && IS_PRI && CAN_GUN_HAVE_CUSTOM_RETICLE ) && RETICLE_COLOR_VIS, ;, ; ) NEW_FRAME_BUTTON_COLOR( 5, ACCORDION_BUTTON_RECT( RETICLE_COLOR_Y ), "@MPUI_RETICLE_COLOR_CAPS", MEDIUM_GRAY_RGB, MEDIUM_GRAY_ALPHA, MEDIUM_GRAY, ;, execnow set ui_cac_weapon_hint_text GET_UNLOCK_LEVEL_STRING( FEATURE_RETICLES );, execnow set ui_cac_weapon_hint_text "";, ( RETICLE_COLOR_LOCKED && IS_PRI && CAN_GUN_HAVE_CUSTOM_RETICLE ) && RETICLE_COLOR_VIS, ;, ; ) NEW_FRAME_NEWICON_RECT_VIS( LEFT_X, RETICLE_COLOR_Y, WEAPON_BUTTON_WIDTH, WEAPON_BUTTON_HEIGHT, HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, ( IS_ITEM_NEW( FEATURE_RETICLE_COLOR ) && IS_PRI && CAN_GUN_HAVE_CUSTOM_RETICLE ), name NEW_FRAME_BUTTON_NAME RETICLE_COLOR_INDEX_STRING; ) NEW_FRAME_LOCKEDICON_RECT_VIS( LEFT_X, RETICLE_COLOR_Y, WEAPON_BUTTON_WIDTH, WEAPON_BUTTON_HEIGHT, HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, ( IS_PRI && CAN_GUN_HAVE_CUSTOM_RETICLE && RETICLE_COLOR_LOCKED ), name NEW_FRAME_BUTTON_NAME RETICLE_COLOR_INDEX_STRING; ) NEW_FRAME_BUTTON( 6, ACCORDION_BUTTON_RECT( LENS_Y ), "@MPUI_LENS_CAPS", LENS_ACTION, CLEAR_ITEM_NEW( FEATURE_LENSES ), ;, ( LENSESORRETICLES_AVAILABLE && !LENSES_LOCKED && IS_PRI ) && LENS_VIS, ;, ; ) NEW_FRAME_BUTTON_COLOR( 6, ACCORDION_BUTTON_RECT( LENS_Y ), "@MPUI_LENS_CAPS", MEDIUM_GRAY_RGB, MEDIUM_GRAY_ALPHA, MEDIUM_GRAY, ;, execnow set ui_cac_weapon_hint_text "@MPUI_NEED_LENS_ATTACHMENT"; CLEAR_ITEM_NEW( FEATURE_LENSES ), execnow set ui_cac_weapon_hint_text "";, ( IS_PRI && !LENSESORRETICLES_AVAILABLE && !LENSES_LOCKED && CAN_GUN_HAVE_CUSTOM_RETICLE ) && LENS_VIS, ;, ; ) NEW_FRAME_BUTTON_COLOR( 6, ACCORDION_BUTTON_RECT( LENS_Y ), "@MPUI_LENS_CAPS", MEDIUM_GRAY_RGB, MEDIUM_GRAY_ALPHA, MEDIUM_GRAY, ;, execnow set ui_cac_weapon_hint_text GET_UNLOCK_LEVEL_STRING( FEATURE_LENSES ); , execnow set ui_cac_weapon_hint_text "";, ( IS_PRI && LENSES_LOCKED && CAN_GUN_HAVE_CUSTOM_RETICLE ) && LENS_VIS, ;, ; ) NEW_FRAME_NEWICON_RECT_VIS( LEFT_X, LENS_Y, WEAPON_BUTTON_WIDTH, WEAPON_BUTTON_HEIGHT, HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, ( IS_ITEM_NEW( FEATURE_LENSES ) && IS_PRI && CAN_GUN_HAVE_CUSTOM_RETICLE ), name NEW_FRAME_BUTTON_NAME LENS_INDEX_STRING; ) NEW_FRAME_LOCKEDICON_RECT_VIS( LEFT_X, LENS_Y, WEAPON_BUTTON_WIDTH, WEAPON_BUTTON_HEIGHT, HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, ( IS_PRI && CAN_GUN_HAVE_CUSTOM_RETICLE && LENSES_LOCKED ), name NEW_FRAME_BUTTON_NAME LENS_INDEX_STRING; ) // Fixed buttons // --------------------------------------------------------------------------------------------------------------------- #define IS_FIXED_BUTTON_ACTIVE ( dvarInt( ui_useCustomClassInfo ) == 0 && ( dvarString( "ui_inside_popup" ) == "0" ) ) // Gun Tag Button #define HAVE_ENOUGH_FOR_GUN_TAG ( GetWeaponOptionCost( GetItemOptionByName( "tag" ) ) <= GetStatByName( "CODPOINTS" ) ) #define CAN_NOT_AFFORD_GUN_TAG ( !GUN_TAG_LOCKED && !GUN_TAG_PURCHASED && !HAVE_ENOUGH_FOR_GUN_TAG ) #define CAN_AFFORD_GUN_TAG ( !GUN_TAG_LOCKED && !GUN_TAG_PURCHASED && HAVE_ENOUGH_FOR_GUN_TAG ) #define CAN_TOGGLE_GUN_TAG ( GUN_TAG_PURCHASED ) #define IS_PRI_GUN_TAG_EQUIPPED ( IS_PRI && (STAT_CAC_PRIMARY_TAG) ) #define IS_SEC_GUN_TAG_EQUIPPED ( IS_SEC && (STAT_CAC_SECONDARY_TAG) ) #define GUN_TAG_X LEFT_X #define GUN_TAG_W WEAPON_BUTTON_WIDTH #define GUN_TAG_H WEAPON_BUTTON_HEIGHT #define GUN_TAG_ALIGN HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER #define GUN_TAG_RECT GUN_TAG_X GUN_TAG_Y GUN_TAG_W GUN_TAG_H GUN_TAG_ALIGN #define GUN_TAG_COST_W 50 #define GUN_TAG_COST_RECT (GUN_TAG_X+GUN_TAG_W-GUN_TAG_COST_W-2) GUN_TAG_Y GUN_TAG_COST_W GUN_TAG_H GUN_TAG_ALIGN #define GUN_TAG_EQUIP_W GUN_TAG_H #define GUN_TAG_EQUIP_RECT (GUN_TAG_X+GUN_TAG_W-GUN_TAG_EQUIP_W-2) GUN_TAG_Y GUN_TAG_EQUIP_W GUN_TAG_EQUIP_W GUN_TAG_ALIGN #define PURCHASE_GUN_TAG_ACTION \ execnow set weaponOptionIndex ( GetItemIndex( FEATURE_GUN_TAG ) ); \ execnow set weaponOptionRef "tag"; \ open PurchaseWeaponOptionConfirmation; #define TOGGLE_GUN_TAG_ACTION \ execnow toggleWeaponOption (dvarString( ui_custom_name )) tag; #define GUN_TAG_VIS \ ( !localVarBool( ui_inside_dropdown ) ) #define GUN_TAG_BUTTONS( xArg, yArg, wArg, hArg, alignArg, visArg ) \ /* Buttons */ \ NEW_FRAME_DBUTTON( 7, xArg yArg wArg hArg alignArg, "@MPUI_GUN_TAG_CAPS", \ ;, \ execnow set ui_cac_weapon_hint_text GET_UNLOCK_LEVEL_STRING( FEATURE_GUN_TAG );, \ execnow set ui_cac_weapon_hint_text "";, \ ( IS_PRI && GUN_TAG_LOCKED && dvarInt( ui_useCustomClassInfo ) == 0 && visArg ), ;, ; ) \ NEW_FRAME_BUTTON_COLOR( 7, xArg yArg wArg hArg alignArg, "@MPUI_GUN_TAG_CAPS", NEW_FRAME_RED_RGB, NEW_FRAME_RED_ALPHA, NEW_FRAME_RED, \ ;, \ CLEAR_ITEM_NEW( FEATURE_GUN_TAG ), \ ;, \ ( IS_PRI && CAN_NOT_AFFORD_GUN_TAG && visArg ), ;, ; ) \ NEW_FRAME_BUTTON_COLOR( 7, xArg yArg wArg hArg alignArg, "@MPUI_GUN_TAG_CAPS", NEW_FRAME_GREEN_RGB, NEW_FRAME_GREEN_ALPHA, NEW_FRAME_GREEN, \ PURCHASE_GUN_TAG_ACTION, \ CLEAR_ITEM_NEW( FEATURE_GUN_TAG ), \ ;, \ ( IS_PRI && CAN_AFFORD_GUN_TAG && visArg ), ;, ; ) \ NEW_FRAME_BUTTON_COLOR( 7, xArg yArg wArg hArg alignArg, "@MPUI_GUN_TAG_CAPS", WHITE_RGB, WHITE_ALPHA, BLACK, \ TOGGLE_GUN_TAG_ACTION, \ CLEAR_ITEM_NEW( FEATURE_GUN_TAG ), \ ;, \ ( IS_PRI && CAN_TOGGLE_GUN_TAG && visArg ), ;, ; ) \ /* New Icon */ \ NEW_FRAME_NEWICON_RECT_VIS( xArg, yArg, wArg, hArg, alignArg, \ ( IS_ITEM_NEW( FEATURE_GUN_TAG ) && IS_PRI && visArg ), \ name NEW_FRAME_BUTTON_NAME GUN_TAG_INDEX_STRING; ) \ /* Locked Icon */ \ NEW_FRAME_LOCKEDICON_RECT_VIS( xArg, yArg, wArg, hArg, alignArg, \ (IS_PRI && GUN_TAG_LOCKED && visArg), \ name NEW_FRAME_BUTTON_NAME GUN_TAG_INDEX_STRING; ) \ /* Cost */ \ PREPROC_TEXT_DRAW_VIS_EX( (xArg+wArg-GUN_TAG_COST_W-10) yArg GUN_TAG_COST_W hArg alignArg, 0 0, \ locString( "@MENU_POINTS", GetWeaponOptionCost( GetItemOptionByName( "tag" ) ) ), \ CHOICE_TEXTSIZE, 0, 0, ITEM_ALIGN_MIDDLE_RIGHT, NEW_FRAME_RED, \ when( IS_PRI && CAN_NOT_AFFORD_GUN_TAG && visArg );, \ name NEW_FRAME_BUTTON_NAME GUN_TAG_INDEX_STRING; NEW_FRAME_TRANSPARENT_STATE( NEW_FRAME_RED_RGB ) ) \ PREPROC_TEXT_DRAW_VIS_EX( (xArg+wArg-GUN_TAG_COST_W-10) yArg GUN_TAG_COST_W hArg alignArg, 0 0, \ locString( "@MENU_POINTS", GetWeaponOptionCost( GetItemOptionByName( "tag" ) ) ), \ CHOICE_TEXTSIZE, 0, 0, ITEM_ALIGN_MIDDLE_RIGHT, NEW_FRAME_GREEN, \ when( IS_PRI && CAN_AFFORD_GUN_TAG && visArg );, \ name NEW_FRAME_BUTTON_NAME GUN_TAG_INDEX_STRING; NEW_FRAME_TRANSPARENT_STATE( NEW_FRAME_GREEN_RGB ) ) \ /* Equipped Icon */ \ PREPROC_SHADER_DRAW_VIS_EX( (xArg+wArg-GUN_TAG_EQUIP_W-2) yArg GUN_TAG_EQUIP_W GUN_TAG_EQUIP_W alignArg, \ "menu_mp_killstreak_select", 1 1 1 1, \ when( IS_PRI && IS_PRI_GUN_TAG_EQUIPPED && visArg );, \ name NEW_FRAME_BUTTON_NAME GUN_TAG_INDEX_STRING; NEW_FRAME_TRANSPARENT_STATE( 1 1 1 ) ) \ PREPROC_SHADER_DRAW_VIS_EX( (xArg+wArg-GUN_TAG_EQUIP_W-2) yArg GUN_TAG_EQUIP_W GUN_TAG_EQUIP_W alignArg, \ "menu_mp_killstreak_select", 1 1 1 1, \ when( IS_PRI && IS_SEC_GUN_TAG_EQUIPPED && visArg );, \ name NEW_FRAME_BUTTON_NAME GUN_TAG_INDEX_STRING; NEW_FRAME_TRANSPARENT_STATE( 1 1 1 ) ) GUN_TAG_BUTTONS( GUN_TAG_X, GUN_TAG_Y, GUN_TAG_W, GUN_TAG_H, GUN_TAG_ALIGN, CAN_GUN_HAVE_CUSTOM_RETICLE && GUN_TAG_VIS ) GUN_TAG_BUTTONS( GUN_TAG_X, RETICLE_Y, GUN_TAG_W, GUN_TAG_H, GUN_TAG_ALIGN, !CAN_GUN_HAVE_CUSTOM_RETICLE && GUN_TAG_VIS ) // Gun Emblem Button #define HAVE_ENOUGH_FOR_GUN_EMBLEM ( GetWeaponOptionCost( GetItemOptionByName( "emblem" ) ) <= GetStatByName( "CODPOINTS" ) ) #define CAN_NOT_AFFORD_GUN_EMBLEM ( !GUN_EMBLEM_LOCKED && !GUN_EMBLEM_PURCHASED && !HAVE_ENOUGH_FOR_GUN_EMBLEM ) #define CAN_AFFORD_GUN_EMBLEM ( !GUN_EMBLEM_LOCKED && !GUN_EMBLEM_PURCHASED && HAVE_ENOUGH_FOR_GUN_EMBLEM ) #define CAN_TOGGLE_GUN_EMBLEM ( GUN_EMBLEM_PURCHASED ) #define IS_PRI_GUN_EMBLEM_EQUIPPED ( IS_PRI && (STAT_CAC_PRIMARY_EMBLEM) ) #define IS_SEC_GUN_EMBLEM_EQUIPPED ( IS_SEC && (STAT_CAC_SECONDARY_EMBLEM) ) #define GUN_EMBLEM_X LEFT_X #define GUN_EMBLEM_W WEAPON_BUTTON_WIDTH #define GUN_EMBLEM_H WEAPON_BUTTON_HEIGHT #define GUN_EMBLEM_ALIGN HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER #define GUN_EMBLEM_RECT GUN_EMBLEM_X GUN_EMBLEM_Y GUN_EMBLEM_W GUN_EMBLEM_H GUN_EMBLEM_ALIGN #define GUN_EMBLEM_COST_W 50 #define GUN_EMBLEM_COST_RECT (GUN_EMBLEM_X+GUN_EMBLEM_W-GUN_EMBLEM_COST_W-2) GUN_EMBLEM_Y GUN_EMBLEM_COST_W GUN_EMBLEM_H GUN_EMBLEM_ALIGN #define GUN_EMBLEM_EQUIP_W GUN_EMBLEM_H #define GUN_EMBLEM_EQUIP_RECT (GUN_EMBLEM_X+GUN_EMBLEM_W-GUN_EMBLEM_EQUIP_W-2) GUN_EMBLEM_Y GUN_EMBLEM_EQUIP_W GUN_EMBLEM_EQUIP_W GUN_EMBLEM_ALIGN #define PURCHASE_GUN_EMBLEM_ACTION \ execnow set weaponOptionIndex ( GetItemIndex( FEATURE_GUN_EMBLEM ) ); \ execnow set weaponOptionRef "emblem"; \ open PurchaseWeaponOptionConfirmation; #define TOGGLE_GUN_EMBLEM_ACTION \ execnow toggleWeaponOption (dvarString( ui_custom_name )) emblem; #define GUN_EMBLEM_VIS \ ( !localVarBool( ui_inside_dropdown ) ) #define GUN_EMBLEM_BUTTONS( xArg, yArg, wArg, hArg, alignArg, visArg ) \ /* Buttons */ \ NEW_FRAME_DBUTTON( 8, xArg yArg wArg hArg alignArg, "@MPUI_GUN_EMBLEM_CAPS", \ ;, \ execnow set ui_cac_weapon_hint_text GET_UNLOCK_LEVEL_STRING( FEATURE_GUN_EMBLEM );, \ execnow set ui_cac_weapon_hint_text "";, \ ( IS_PRI && GUN_EMBLEM_LOCKED && dvarInt( ui_useCustomClassInfo ) == 0 && visArg ), ;, ; ) \ NEW_FRAME_BUTTON_COLOR( 8, xArg yArg wArg hArg alignArg, "@MPUI_GUN_EMBLEM_CAPS", NEW_FRAME_RED_RGB, NEW_FRAME_RED_ALPHA, NEW_FRAME_RED, \ ;, \ CLEAR_ITEM_NEW( FEATURE_GUN_EMBLEM ), \ ;, \ (IS_PRI && CAN_NOT_AFFORD_GUN_EMBLEM && visArg), ;, ; ) \ NEW_FRAME_BUTTON_COLOR( 8, xArg yArg wArg hArg alignArg, "@MPUI_GUN_EMBLEM_CAPS", NEW_FRAME_GREEN_RGB, NEW_FRAME_GREEN_ALPHA, NEW_FRAME_GREEN, \ PURCHASE_GUN_EMBLEM_ACTION, \ CLEAR_ITEM_NEW( FEATURE_GUN_EMBLEM ), \ ;, \ (IS_PRI && CAN_AFFORD_GUN_EMBLEM && visArg), ;, ; ) \ NEW_FRAME_BUTTON_COLOR( 8, xArg yArg wArg hArg alignArg, "@MPUI_GUN_EMBLEM_CAPS", WHITE_RGB, WHITE_ALPHA, BLACK, \ TOGGLE_GUN_EMBLEM_ACTION, \ CLEAR_ITEM_NEW( FEATURE_GUN_EMBLEM ), \ ;, \ (IS_PRI && CAN_TOGGLE_GUN_EMBLEM && visArg), ;, ; ) \ /* New Icon */ \ NEW_FRAME_NEWICON_RECT_VIS( xArg, yArg, wArg, hArg, alignArg, \ ( IS_ITEM_NEW( FEATURE_GUN_EMBLEM ) && IS_PRI && visArg ), \ name NEW_FRAME_BUTTON_NAME GUN_EMBLEM_INDEX_STRING; ) \ /* Locked Icon */ \ NEW_FRAME_LOCKEDICON_RECT_VIS( xArg, yArg, wArg, hArg, alignArg, \ (IS_PRI && GUN_EMBLEM_LOCKED && visArg), \ name NEW_FRAME_BUTTON_NAME GUN_EMBLEM_INDEX_STRING; ) \ /* Cost */ \ PREPROC_TEXT_DRAW_VIS_EX( (xArg+wArg-GUN_EMBLEM_COST_W-10) yArg GUN_TAG_COST_W hArg alignArg, 0 0, \ locString( "@MENU_POINTS", GetWeaponOptionCost( GetItemOptionByName( "emblem" ) ) ), \ CHOICE_TEXTSIZE, 0, 0, ITEM_ALIGN_MIDDLE_RIGHT, NEW_FRAME_RED, \ when( IS_PRI && CAN_NOT_AFFORD_GUN_EMBLEM && visArg );, \ name NEW_FRAME_BUTTON_NAME GUN_EMBLEM_INDEX_STRING; NEW_FRAME_TRANSPARENT_STATE( NEW_FRAME_RED_RGB ) ) \ PREPROC_TEXT_DRAW_VIS_EX( (xArg+wArg-GUN_EMBLEM_COST_W-10) yArg GUN_TAG_COST_W hArg alignArg, 0 0, \ locString( "@MENU_POINTS", GetWeaponOptionCost( GetItemOptionByName( "emblem" ) ) ), \ CHOICE_TEXTSIZE, 0, 0, ITEM_ALIGN_MIDDLE_RIGHT, NEW_FRAME_GREEN, \ when( IS_PRI && CAN_AFFORD_GUN_EMBLEM && visArg );, \ name NEW_FRAME_BUTTON_NAME GUN_EMBLEM_INDEX_STRING; NEW_FRAME_TRANSPARENT_STATE( NEW_FRAME_GREEN_RGB ) ) \ /* Equipped Icon */ \ PREPROC_SHADER_DRAW_VIS_EX( (xArg+wArg-GUN_EMBLEM_EQUIP_W-2) yArg GUN_TAG_EQUIP_W GUN_TAG_EQUIP_W alignArg, \ "menu_mp_killstreak_select", 1 1 1 1, \ when( IS_PRI && IS_PRI_GUN_EMBLEM_EQUIPPED && visArg );, \ name NEW_FRAME_BUTTON_NAME GUN_EMBLEM_INDEX_STRING; NEW_FRAME_TRANSPARENT_STATE( 1 1 1 ) ) \ PREPROC_SHADER_DRAW_VIS_EX( (xArg+wArg-GUN_EMBLEM_EQUIP_W-2) yArg GUN_TAG_EQUIP_W GUN_TAG_EQUIP_W alignArg, \ "menu_mp_killstreak_select", 1 1 1 1, \ when( IS_PRI && IS_SEC_GUN_EMBLEM_EQUIPPED && visArg );, \ name NEW_FRAME_BUTTON_NAME GUN_EMBLEM_INDEX_STRING; NEW_FRAME_TRANSPARENT_STATE( 1 1 1 ) ) GUN_EMBLEM_BUTTONS( GUN_EMBLEM_X, GUN_EMBLEM_Y, GUN_EMBLEM_W, GUN_EMBLEM_H, GUN_EMBLEM_ALIGN, CAN_GUN_HAVE_CUSTOM_RETICLE && GUN_EMBLEM_VIS ) GUN_EMBLEM_BUTTONS( GUN_EMBLEM_X, RETICLE_COLOR_Y, GUN_EMBLEM_W, GUN_EMBLEM_H, GUN_EMBLEM_ALIGN, !CAN_GUN_HAVE_CUSTOM_RETICLE && GUN_EMBLEM_VIS ) // Hint text #define HINT_EX_ARGS( yArg, listArg ) \ name list_hint; \ NEW_FRAME_TRANSPARENT_STATE( 1 1 1 ) \ exp rect Y( yArg + WEAPON_BUTTON_HEIGHT*2 + min( getFeederCount( listArg ), FEEDER_MAX ) * 17 ); // Weapon list hint HINT_TEXT_ALL( 1, LEFT_X, 0, CHOICE_SIZE_X, dvarString( ui_cac_weapon_hint_text ), 1 1 1 1, ( ( dvarString( ui_cac_weapon_hint_text ) != "" ) && ( dvarString( "ui_inside_popup" ) == "select_weapon" ) ), HINT_EX_ARGS( SELECT_WEAPON_Y, weapon_list ) ) // Menu-level without reticle customization hint HINT_TEXT_ALL( 6, LEFT_X, 0, CHOICE_SIZE_X, dvarString( ui_cac_weapon_hint_text ), 1 1 1 1, ( ( dvarString( ui_cac_weapon_hint_text ) != "" ) && !CAN_GUN_HAVE_CUSTOM_RETICLE ), name menu_hint; NEW_FRAME_TRANSPARENT_STATE( 1 1 1 ) ) // Menu-level with reticle customization hint HINT_TEXT_ALL( 10, LEFT_X, 0, CHOICE_SIZE_X, dvarString( ui_cac_weapon_hint_text ), 1 1 1 1, ( ( dvarString( ui_cac_weapon_hint_text ) != "" ) && CAN_GUN_HAVE_CUSTOM_RETICLE ), name menu_hint; NEW_FRAME_TRANSPARENT_STATE( 1 1 1 ) ) // camo list hint HINT_TEXT_ALL( 1, LEFT_X, 0, CHOICE_SIZE_X, dvarString( ui_cac_weapon_hint_text ), 1 1 1 1, ( ( dvarString( ui_cac_weapon_hint_text ) != "" ) && ( dvarString( "ui_inside_popup" ) == "select_camo" ) ), HINT_EX_ARGS( CAMO_Y, camo_list ) ) // Dual wield has been moved to attachments. #if 0 // Dual Wield Button #define PRI_HAS_DW ( ItemHasDualWield( STAT_CAC_PRIMARY ) ) #define SEC_HAS_DW ( ItemHasDualWield( STAT_CAC_SECONDARY ) ) #define PRI_IS_DW ( ItemIsDualWield( STAT_CAC_PRIMARY ) ) #define SEC_IS_DW ( ItemIsDualWield( STAT_CAC_SECONDARY ) ) #define IS_PRI_DW_LOCKED ( IsItemDualWieldLocked( STAT_CAC_PRIMARY ) ) #define IS_SEC_DW_LOCKED ( IsItemDualWieldLocked( STAT_CAC_SECONDARY ) ) #define IS_PRI_DW_PURCHASED ( IsItemDualWieldPurchased( STAT_CAC_PRIMARY ) ) #define IS_SEC_DW_PURCHASED ( IsItemDualWieldPurchased( STAT_CAC_SECONDARY ) ) #define HAVE_ENOUGH_FOR_PRI_DW ( GetItemDualWieldCost( STAT_CAC_PRIMARY ) <= GetStatByName( "CODPOINTS" ) ) #define HAVE_ENOUGH_FOR_SEC_DW ( GetItemDualWieldCost( STAT_CAC_SECONDARY ) <= GetStatByName( "CODPOINTS" ) ) #define IS_PRI_NA_OR_LOCKED ( IS_PRI && ( !PRI_HAS_DW || (PRI_HAS_DW && IS_PRI_DW_LOCKED) ) ) #define IS_SEC_NA_OR_LOCKED ( IS_SEC && ( !SEC_HAS_DW || (SEC_HAS_DW && IS_SEC_DW_LOCKED) ) ) #define CAN_NOT_AFFORD_PRI_DW ( IS_PRI && PRI_HAS_DW && !IS_PRI_DW_LOCKED && !IS_PRI_DW_PURCHASED && !HAVE_ENOUGH_FOR_PRI_DW ) #define CAN_NOT_AFFORD_SEC_DW ( IS_SEC && SEC_HAS_DW && !IS_SEC_DW_LOCKED && !IS_SEC_DW_PURCHASED && !HAVE_ENOUGH_FOR_SEC_DW ) #define CAN_AFFORD_PRI_DW ( IS_PRI && PRI_HAS_DW && !IS_PRI_DW_LOCKED && !IS_PRI_DW_PURCHASED && HAVE_ENOUGH_FOR_PRI_DW ) #define CAN_AFFORD_SEC_DW ( IS_SEC && SEC_HAS_DW && !IS_SEC_DW_LOCKED && !IS_SEC_DW_PURCHASED && HAVE_ENOUGH_FOR_SEC_DW ) #define CAN_TOGGLE_PRI_DW ( IS_PRI && ( (PRI_IS_DW) || (!PRI_IS_DW && PRI_HAS_DW && IS_PRI_DW_PURCHASED) ) ) #define CAN_TOGGLE_SEC_DW ( IS_SEC && ( (SEC_IS_DW) || (!SEC_IS_DW && SEC_HAS_DW && IS_SEC_DW_PURCHASED) ) ) #define DW_RECT_X LEFT_X #define DW_RECT_Y DUAL_WIELD_Y #define DW_RECT_W WEAPON_BUTTON_WIDTH #define DW_RECT_H WEAPON_BUTTON_HEIGHT #define DW_RECT_ALIGN HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER #define DW_RECT DW_RECT_X DW_RECT_Y DW_RECT_W DW_RECT_H DW_RECT_ALIGN #define DW_COST_W 50 #define DW_COST_RECT (DW_RECT_X+DW_RECT_W-DW_COST_W-2) DW_RECT_Y DW_COST_W DW_RECT_H DW_RECT_ALIGN #define DW_EQUIP_W DW_RECT_H #define DW_EQUIP_RECT (DW_RECT_X+DW_RECT_W-DW_EQUIP_W-2) DW_RECT_Y DW_EQUIP_W DW_EQUIP_W DW_RECT_ALIGN #define DW_BUTTON_STATES WEAPON_BUTTON_STATES( DUAL_WIELD_INDEX, DUAL_WIELD_Y ) #define TOGGLE_PRI_DUAL_WIELD_ACTION \ if( !PRI_IS_DW ) \ { \ execnow equipclassitem (dvarString( ui_custom_name )) ( GetItemDualWieldIndex( STAT_CAC_PRIMARY ) ); \ } \ else \ { \ execnow equipclassitem (dvarString( ui_custom_name )) ( GetItemDualWieldBaseIndex( STAT_CAC_PRIMARY ) ); \ } #define TOGGLE_SEC_DUAL_WIELD_ACTION \ if( !SEC_IS_DW ) \ { \ execnow equipclassitem (dvarString( ui_custom_name )) ( GetItemDualWieldIndex( STAT_CAC_SECONDARY ) ); \ } \ else \ { \ execnow equipclassitem (dvarString( ui_custom_name )) ( GetItemDualWieldBaseIndex( STAT_CAC_SECONDARY ) ); \ } // Primary Weapon NEW_FRAME_DBUTTON( 8, DW_RECT, "@MPUI_BUY_DUAL_WIELD_CAPS", ;, ;, ;, ( !IS_FIXED_BUTTON_ACTIVE && IS_PRI && !PRI_IS_DW && !IS_PRI_DW_PURCHASED ), ;, decoration; DW_BUTTON_STATES ) NEW_FRAME_DBUTTON( 8, DW_RECT, "@MPUI_DUAL_WIELD_CAPS", ;, ;, ;, ( !IS_FIXED_BUTTON_ACTIVE && CAN_TOGGLE_PRI_DW ), ;, decoration; DW_BUTTON_STATES ) NEW_FRAME_DBUTTON( 8, DW_RECT, "@MPUI_BUY_DUAL_WIELD_CAPS", ;, ;, ;, ( IS_FIXED_BUTTON_ACTIVE && IS_PRI && !PRI_IS_DW && IS_PRI_NA_OR_LOCKED ), ;, DW_BUTTON_STATES ) NEW_FRAME_BUTTON_COLOR( 8, DW_RECT, "@MPUI_BUY_DUAL_WIELD_CAPS", NEW_FRAME_RED, NEW_FRAME_RED, ;, ;, ;, ( IS_FIXED_BUTTON_ACTIVE && !PRI_IS_DW && CAN_NOT_AFFORD_PRI_DW ), ;, DW_BUTTON_STATES ) NEW_FRAME_BUTTON_COLOR( 8, DW_RECT, "@MPUI_BUY_DUAL_WIELD_CAPS", NEW_FRAME_GREEN, NEW_FRAME_GREEN, open PurchaseDualWieldConfirmation;, ;, ;, ( IS_FIXED_BUTTON_ACTIVE && !PRI_IS_DW && CAN_AFFORD_PRI_DW ), ;, DW_BUTTON_STATES ) NEW_FRAME_BUTTON_COLOR( 8, DW_RECT, "@MPUI_DUAL_WIELD_CAPS", WHITE_RGB, WHITE_ALPHA, BLACK, TOGGLE_PRI_DUAL_WIELD_ACTION, ;, ;, ( IS_FIXED_BUTTON_ACTIVE && CAN_TOGGLE_PRI_DW ), ;, DW_BUTTON_STATES ) NEW_FRAME_LOCKEDICON_RECT_VIS( DW_RECT_X, DW_RECT_Y, DW_RECT_W, DW_RECT_H, DW_RECT_ALIGN, (IS_FIXED_BUTTON_ACTIVE && IS_PRI && !PRI_IS_DW && PRI_HAS_DW && IS_PRI_DW_LOCKED), DW_BUTTON_STATES ) // Cost PREPROC_TEXT_DRAW_VIS_EX( DW_COST_RECT, 0 0, locString( "@MENU_POINTS", GetItemDualWieldCost( STAT_CAC_PRIMARY ) ), CHOICE_TEXTSIZE, 0, 0, ITEM_ALIGN_MIDDLE_RIGHT, NEW_FRAME_RED, when( IS_FIXED_BUTTON_ACTIVE && CAN_NOT_AFFORD_PRI_DW );, DW_BUTTON_STATES; NEW_FRAME_TRANSPARENT_STATE( 1 1 1 ) ) PREPROC_TEXT_DRAW_VIS_EX( DW_COST_RECT, 0 0, locString( "@MENU_POINTS", GetItemDualWieldCost( STAT_CAC_PRIMARY ) ), CHOICE_TEXTSIZE, 0, 0, ITEM_ALIGN_MIDDLE_RIGHT, NEW_FRAME_GREEN, when( IS_FIXED_BUTTON_ACTIVE && CAN_AFFORD_PRI_DW );, DW_BUTTON_STATES; NEW_FRAME_TRANSPARENT_STATE( 1 1 1 ) ) // Equipped icon PREPROC_SHADER_DRAW_VIS_EX( DW_EQUIP_RECT, "menu_mp_killstreak_select", 1 1 1 1, when( IS_FIXED_BUTTON_ACTIVE && IS_PRI && PRI_IS_DW );, DW_BUTTON_STATES; NEW_FRAME_TRANSPARENT_STATE( 1 1 1 ) ) // Secondary Weapon NEW_FRAME_DBUTTON( 8, DW_RECT, "@MPUI_BUY_DUAL_WIELD_CAPS", ;, ;, ;, ( !IS_FIXED_BUTTON_ACTIVE && IS_SEC && !SEC_IS_DW && !IS_SEC_DW_PURCHASED ), ;, decoration; DW_BUTTON_STATES ) NEW_FRAME_DBUTTON( 8, DW_RECT, "@MPUI_DUAL_WIELD_CAPS", ;, ;, ;, ( !IS_FIXED_BUTTON_ACTIVE && CAN_TOGGLE_SEC_DW ), ;, decoration; DW_BUTTON_STATES ) NEW_FRAME_DBUTTON( 8, DW_RECT, "@MPUI_BUY_DUAL_WIELD_CAPS", ;, ;, ;, ( IS_FIXED_BUTTON_ACTIVE && IS_SEC && !SEC_IS_DW && IS_SEC_NA_OR_LOCKED ), ;, DW_BUTTON_STATES ) NEW_FRAME_BUTTON_COLOR( 8, DW_RECT, "@MPUI_BUY_DUAL_WIELD_CAPS", NEW_FRAME_RED, NEW_FRAME_RED, ;, ;, ;, ( IS_FIXED_BUTTON_ACTIVE && !SEC_IS_DW && CAN_NOT_AFFORD_SEC_DW ), ;, DW_BUTTON_STATES ) NEW_FRAME_BUTTON_COLOR( 8, DW_RECT, "@MPUI_BUY_DUAL_WIELD_CAPS", NEW_FRAME_GREEN, NEW_FRAME_GREEN, open PurchaseDualWieldConfirmation;, ;, ;, ( IS_FIXED_BUTTON_ACTIVE && !SEC_IS_DW && CAN_AFFORD_SEC_DW ), ;, DW_BUTTON_STATES ) NEW_FRAME_BUTTON_COLOR( 8, DW_RECT, "@MPUI_DUAL_WIELD_CAPS", WHITE_RGB, WHITE_ALPHA, BLACK, TOGGLE_SEC_DUAL_WIELD_ACTION, ;, ;, ( IS_FIXED_BUTTON_ACTIVE && CAN_TOGGLE_SEC_DW ), ;, DW_BUTTON_STATES ) NEW_FRAME_LOCKEDICON_RECT_VIS( DW_RECT_X, DW_RECT_Y, DW_RECT_W, DW_RECT_H, DW_RECT_ALIGN, (IS_FIXED_BUTTON_ACTIVE && IS_SEC && !SEC_IS_DW && SEC_HAS_DW && IS_SEC_DW_LOCKED), DW_BUTTON_STATES ) // Cost PREPROC_TEXT_DRAW_VIS_EX( DW_COST_RECT, 0 0, locString( "@MENU_POINTS", GetItemDualWieldCost( STAT_CAC_SECONDARY ) ), CHOICE_TEXTSIZE, 0, 0, ITEM_ALIGN_MIDDLE_RIGHT, NEW_FRAME_RED, when( IS_FIXED_BUTTON_ACTIVE && CAN_NOT_AFFORD_SEC_DW );, DW_BUTTON_STATES; NEW_FRAME_TRANSPARENT_STATE( 1 1 1 ) ) PREPROC_TEXT_DRAW_VIS_EX( DW_COST_RECT, 0 0, locString( "@MENU_POINTS", GetItemDualWieldCost( STAT_CAC_SECONDARY ) ), CHOICE_TEXTSIZE, 0, 0, ITEM_ALIGN_MIDDLE_RIGHT, NEW_FRAME_GREEN, when( IS_FIXED_BUTTON_ACTIVE && CAN_AFFORD_SEC_DW );, DW_BUTTON_STATES; NEW_FRAME_TRANSPARENT_STATE( 1 1 1 ) ) // Equipped icon PREPROC_SHADER_DRAW_VIS_EX( DW_EQUIP_RECT, "menu_mp_killstreak_select", 1 1 1 1, when( IS_FIXED_BUTTON_ACTIVE && IS_SEC && SEC_IS_DW );, DW_BUTTON_STATES; NEW_FRAME_TRANSPARENT_STATE( 1 1 1 ) ) // Second Attachment Button #define SEC_ATTACH_AVAILABLE ( GetCurrentItemNumAttachments() > 2 ) // None counts as an attachment. Need at least 2 attachments. #define HAVE_ENOUGH_FOR_SEC_ATTACH ( GetWeaponOptionCost( GetItemOptionByName( "2ndattach" ) ) <= GetStatByName( "CODPOINTS" ) ) #define CAN_NOT_AFFORD_SEC_ATTACH ( SEC_ATTACH_AVAILABLE && !GUN_2NDATTACH_LOCKED && !GUN_2NDATTACH_PURCHASED && !HAVE_ENOUGH_FOR_SEC_ATTACH ) #define CAN_AFFORD_SEC_ATTACH ( SEC_ATTACH_AVAILABLE && !GUN_2NDATTACH_LOCKED && !GUN_2NDATTACH_PURCHASED && HAVE_ENOUGH_FOR_SEC_ATTACH ) #define SEC_ATTACH_X LEFT_X #define SEC_ATTACH_Y SECOND_ATTACHMENT_Y #define SEC_ATTACH_W WEAPON_BUTTON_WIDTH #define SEC_ATTACH_H WEAPON_BUTTON_HEIGHT #define SEC_ATTACH_ALIGN HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER #define SEC_ATTACH_RECT SEC_ATTACH_X SEC_ATTACH_Y SEC_ATTACH_W SEC_ATTACH_H SEC_ATTACH_ALIGN #define SEC_ATTACH_COST_W 50 #define SEC_ATTACH_COST_RECT (SEC_ATTACH_X+SEC_ATTACH_W-SEC_ATTACH_COST_W-2) SEC_ATTACH_Y SEC_ATTACH_COST_W SEC_ATTACH_H SEC_ATTACH_ALIGN #define SEC_ATTACH_BUTTON_STATES WEAPON_BUTTON_STATES( SECOND_ATTACHMENT_INDEX, SECOND_ATTACHMENT_Y ) #define PURCHASE_2ND_ATTACH_ACTION \ execnow set weaponOptionIndex ( GetItemIndex( FEATURE_SECOND_ATTACHMENT ) ); \ execnow set weaponOptionRef "2ndAttach"; \ open PurchaseWeaponOptionConfirmation; NEW_FRAME_DBUTTON( 9, SEC_ATTACH_RECT, "@MPUI_BUY_SECOND_ATTACHMENT_CAPS", ;, ;, ;, (!IS_FIXED_BUTTON_ACTIVE || GUN_2NDATTACH_PURCHASED || GUN_2NDATTACH_LOCKED || !SEC_ATTACH_AVAILABLE ), ;, SEC_ATTACH_BUTTON_STATES ) NEW_FRAME_BUTTON_COLOR( 9, SEC_ATTACH_RECT, "@MPUI_BUY_SECOND_ATTACHMENT_CAPS", NEW_FRAME_RED_RGB, NEW_FRAME_RED_ALPHA, NEW_FRAME_RED, ;, ;, ;, (IS_FIXED_BUTTON_ACTIVE && CAN_NOT_AFFORD_SEC_ATTACH ), ;, SEC_ATTACH_BUTTON_STATES ) NEW_FRAME_BUTTON_COLOR( 9, SEC_ATTACH_RECT, "@MPUI_BUY_SECOND_ATTACHMENT_CAPS", NEW_FRAME_GREEN_RGB, NEW_FRAME_GREEN_ALPHA, NEW_FRAME_GREEN, PURCHASE_2ND_ATTACH_ACTION, ;, ;, (IS_FIXED_BUTTON_ACTIVE && CAN_AFFORD_SEC_ATTACH ), ;, SEC_ATTACH_BUTTON_STATES ) NEW_FRAME_LOCKEDICON_RECT_VIS( SEC_ATTACH_X, SEC_ATTACH_Y, SEC_ATTACH_W, SEC_ATTACH_H, SEC_ATTACH_ALIGN, (IS_FIXED_BUTTON_ACTIVE && GUN_2NDATTACH_LOCKED), SEC_ATTACH_BUTTON_STATES ) // Cost PREPROC_TEXT_DRAW_VIS_EX( SEC_ATTACH_COST_RECT, 0 0, locString( "@MENU_POINTS", GetWeaponOptionCost( GetItemOptionByName( "2ndAttach" ) ) ), CHOICE_TEXTSIZE, 0, 0, ITEM_ALIGN_MIDDLE_RIGHT, NEW_FRAME_RED, when( IS_FIXED_BUTTON_ACTIVE && CAN_NOT_AFFORD_SEC_ATTACH );, SEC_ATTACH_BUTTON_STATES; NEW_FRAME_TRANSPARENT_STATE( 1 1 1 ) ) PREPROC_TEXT_DRAW_VIS_EX( SEC_ATTACH_COST_RECT, 0 0, locString( "@MENU_POINTS", GetWeaponOptionCost( GetItemOptionByName( "2ndAttach" ) ) ), CHOICE_TEXTSIZE, 0, 0, ITEM_ALIGN_MIDDLE_RIGHT, NEW_FRAME_GREEN, when( IS_FIXED_BUTTON_ACTIVE && CAN_AFFORD_SEC_ATTACH );, SEC_ATTACH_BUTTON_STATES; NEW_FRAME_TRANSPARENT_STATE( 1 1 1 ) ) #endif #ifdef PC #define COMMON_LIST_EX_PC \ modal \ usepaging #else //#ifdef PC #define COMMON_LIST_EX_PC #endif //#ifdef PC // Listbox actions #define COMMON_LIST_EX( buttonBActionArg ) \ LISTBOX_STATES \ execKeyInt BUTTON_B \ { \ play CHOICE_FOCUS_SOUND; \ execnow ui_animate cac_weapon anim_controller CloseDropDownList 0; \ buttonBActionArg \ } \ COMMON_LIST_EX_PC #define WEAPON_GROUP_LIST_ACTION \ play CHOICE_ACTION_SOUND; \ execnow ui_animate cac_weapon anim_controller CloseDropDownList 0; \ execnow set cac_weapon_current_list weapon_list; \ execnow buildItemListForSlotNameAndGroup (dvarString(selected_loadout_slot)) (dvarString(selected_group)); \ execnow set cac_weapon_feeder_count ( GetFeederCount( weapon_list ) ); \ execnow set ui_next_inside_popup select_weapon; #define WEAPON_LIST_ACTION \ if ( IsCurrentItemPurchased() ) \ { \ play CHOICE_ACTION_SOUND; \ execnow equipclasscurrentitem (dvarString( ui_custom_name )); \ execnow ui_animate cac_weapon anim_controller CloseDropDownList 0; \ } \ elseif ( !IsItemLocked( GetCurrentItemIndex() ) && \ ( GetCurrentItemCost() <= GetStatByName( "CODPOINTS" ) ) && \ !IsCurrentItemClassified() ) \ { \ play CHOICE_ACTION_SOUND; \ open "PurchaseConfirmation"; \ } #define WEAPON_LIST_ONSELECTION \ if ( IsCurrentItemClassified() ) \ { \ execnow set ui_cac_weapon_hint_text (GetCurrentItemClassifiedHintText()); \ } \ elseif ( IsItemLocked( GetCurrentItemIndex() ) ) \ { \ execnow set ui_cac_weapon_hint_text (GET_UNLOCK_LEVEL_STRING(GetItemName(GetCurrentItemIndex()))); \ } \ else \ { \ if( IsItemNew( GetCurrentItemIndex() ) ) \ { \ CLEAR_ITEM_NEW( ( GetItemName( GetCurrentItemIndex() ) ) ); \ } \ execnow set ui_cac_weapon_hint_text ""; \ } #define CAN_EQUIP_TWO_ATTACHMENTS \ ( ( IS_PRI ) && ( isItemEquipped( getitemindex("PERKS_PROFESSIONAL"), dvarString( ui_custom_name ) ) || isItemEquipped( getitemindex("PERKS_PROFESSIONAL_PRO"), dvarString( ui_custom_name ) ) ) ) #define NUM_EQUIPPED_ATTACHMENTS \ GetItemNumAttachmentsEquipped( dvarString( ui_custom_name ), GET_SLOT_STAT ) #define IS_CURRENT_ATTACHMENT_EQUIPPED \ ( getItemAttachment( getCurrentItemIndex(), getCurrentItemAttachmentNum() ) == GetItemEquippedAttachment( dvarString( ui_custom_name ), GET_SLOT_STAT, 0 ) || \ getItemAttachment( getCurrentItemIndex(), getCurrentItemAttachmentNum() ) == GetItemEquippedAttachment( dvarString( ui_custom_name ), GET_SLOT_STAT, 1 ) ) #define ATTACHMENTS_LIST_ACTION \ if ( isCurrentItemAttachmentPurchased() ) \ { \ if( IS_CURRENT_ATTACHMENT_EQUIPPED ) \ { \ execNow clearAttachmentForItemAtPoint (dvarString( ui_custom_name )) (GET_SLOT_STAT) (getCurrentItemAttachmentPoint()); \ } \ elseif( ( NUM_EQUIPPED_ATTACHMENTS < 1 ) || ( NUM_EQUIPPED_ATTACHMENTS == 1 && CAN_EQUIP_TWO_ATTACHMENTS ) ) \ { \ play CHOICE_ACTION_SOUND; \ execnow equipclasscurrentattachment ( dvarString( ui_custom_name ) ); \ } \ } \ elseif ( !isItemlocked( GetCurrentItemIndex() ) && ( getCurrentItemAttachmentCost() <= GetStatByName( "CODPOINTS" ) ) ) \ { \ open "PurchaseAttachmentConfirmation"; \ } #define CLEAR_CAC_HINT \ exec "set ui_cac_weapon_hint_text @NULL_EMPTY;" #define SET_OPTION_HINT \ if ( GetWeaponOptionUnlockPLevel( GetCurrentItemOption() ) > PRESTIGE ) \ { \ exec set ui_cac_weapon_hint_text ( locString( CLASS_PRESTIGE_UNCLASSIFY_DESC, GetWeaponOptionUnlockPLevel( GetCurrentItemOption() ) ) ); \ } \ else \ { \ CLEAR_CAC_HINT \ } #define OPTION_LIST_ACTION( optionGroup ) \ if ( GetWeaponOptionUnlockPLevel( GetCurrentItemOption() ) <= PRESTIGE ) \ { \ if ( isCurrentItemOptionPurchased() ) \ { \ play CHOICE_ACTION_SOUND; \ execnow "equipclasscurrentoption ( dvarString( ui_custom_name ) ) "optionGroup; \ execnow ui_animate cac_weapon anim_controller CloseDropDownList 0; \ } \ elseif ( !isItemlocked( GetCurrentItemIndex() ) && ( GetWeaponOptionCost( GetCurrentItemOption() ) <= GetStatByName( "CODPOINTS" ) ) ) \ { \ setDvar ui_optiongroup_name optionGroup; \ open "PurchaseCurrentWeaponOptionConfirmation"; \ } \ } // Listboxes #undef LIST_Y_START #define LIST_Y_START (SELECT_WEAPON_Y+WEAPON_BUTTON_HEIGHT) ITEM_LISTBOX_EX( "weapon_group_list", FEEDER_WEAPON_GROUPS, WEAPON_GROUP_LIST_ACTION, CLEAR_CAC_HINT, ;, when( dvarString( "ui_inside_popup" ) == "select_weapon_group" ), COMMON_LIST_EX( WEAPON_GROUP_LIST_BUTTON_B_ACTION ) ) ITEM_LISTBOX_EX( "weapon_list", FEEDER_ITEMSINSLOTANDGROUP, WEAPON_LIST_ACTION, WEAPON_LIST_ONSELECTION, WEAPON_LIST_ONSELECTION, when( dvarString( "ui_inside_popup" ) == "select_weapon" ), COMMON_LIST_EX( WEAPON_LIST_BUTTON_B_ACTION ) ) #undef LIST_X_START #define LIST_X_START (LEFT_X-3) #undef LIST_Y_START #define LIST_Y_START (ATTACHMENTS_Y+WEAPON_BUTTON_HEIGHT) #undef LIST_WIDTH #define LIST_WIDTH (WEAPON_BUTTON_WIDTH+4) ATTACHMENTS_LISTBOX_EX( "attachments_list", FEEDER_ATTACHMENTS, ATTACHMENTS_LIST_ACTION, ;, ;, when( dvarString( "ui_inside_popup" ) == "attachments" ), COMMON_LIST_EX( UPDATE_ATTACH_SLOT_TOP ) ) #undef LIST_X_START #define LIST_X_START LEFT_X #ifdef PC #undef LIST_WIDTH #define LIST_WIDTH (WEAPON_BUTTON_WIDTH+16) #else //#ifdef PC #undef LIST_WIDTH #define LIST_WIDTH WEAPON_BUTTON_WIDTH #endif //#ifdef PC #undef LIST_Y_START #define LIST_Y_START (CAMO_Y+WEAPON_BUTTON_HEIGHT) ITEM_LISTBOX_EX( "camo_list", FEEDER_WEAPONOPTIONS, OPTION_LIST_ACTION( "camo" ), SET_OPTION_HINT, SET_OPTION_HINT, when( dvarString( "ui_inside_popup" ) == "select_camo" ), COMMON_LIST_EX( ; ) ) #undef LIST_Y_START #define LIST_Y_START (RETICLE_Y+WEAPON_BUTTON_HEIGHT) #ifdef PC #undef LIST_WIDTH #define LIST_WIDTH (WEAPON_BUTTON_WIDTH+16) #endif //#ifdef PC ITEM_LISTBOX_EX( "reticle_list", FEEDER_WEAPONOPTIONS, OPTION_LIST_ACTION( "reticle" ), ;, ;, when( dvarString( "ui_inside_popup" ) == "select_reticle" ), COMMON_LIST_EX( ; ) ) #undef LIST_Y_START #define LIST_Y_START (RETICLE_COLOR_Y+WEAPON_BUTTON_HEIGHT) ITEM_LISTBOX_EX( "reticle_color_list", FEEDER_WEAPONOPTIONS, OPTION_LIST_ACTION( "reticlecolor" ), ;, ;, when( dvarString( "ui_inside_popup" ) == "select_reticle_color" ), COMMON_LIST_EX( ; ) ) #undef LIST_Y_START #define LIST_Y_START (LENS_Y+WEAPON_BUTTON_HEIGHT) ITEM_LISTBOX_EX( "lens_list", FEEDER_WEAPONOPTIONS, OPTION_LIST_ACTION( "lens" ), ;, ;, when( dvarString( "ui_inside_popup" ) == "select_lens" ), COMMON_LIST_EX( ; ) ) #define PLAYER_WEAPON_IMAGE_X 85 #define PLAYER_WEAPON_IMAGE_Y -130 #define PLAYER_WEAPON_CLASSIFIED_Y -180 #define PLAYER_WEAPON_IMAGE_WIDTH 180 #define PLAYER_WEAPON_IMAGE_HEIGHT 90 /* Camo */ PREPROC_SHADER_DRAW_ADV_VIS_EX( (PLAYER_WEAPON_IMAGE_X-10), (PLAYER_WEAPON_IMAGE_Y-5), ( PLAYER_WEAPON_IMAGE_WIDTH+20 ), (PLAYER_WEAPON_IMAGE_HEIGHT+10), HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, getWeaponOptionImage( STAT_CAC_PRIMARY_CAMO ), 1 1 1 1, when( IS_PRI && ( dvarString(ui_inside_popup ) != "select_camo" || localVarInt( "ui_disable_controls" ) != 0 ) && dvarString(ui_inside_popup ) != "select_weapon" && dvarString(ui_inside_popup ) != "select_weapon_group"), ; ) /* Camo when camo list open */ PREPROC_SHADER_DRAW_ADV_VIS_EX( (PLAYER_WEAPON_IMAGE_X-10), (PLAYER_WEAPON_IMAGE_Y-5), ( PLAYER_WEAPON_IMAGE_WIDTH+20 ), (PLAYER_WEAPON_IMAGE_HEIGHT+10), HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, getWeaponOptionImage( GetCurrentItemOption() ), 1 1 1 1, when ( ( IS_PRI && dvarString(ui_inside_popup ) == "select_camo" && dvarString(ui_inside_popup ) != "select_weapon" && dvarString(ui_inside_popup ) != "select_weapon_group" && localVarInt( "ui_disable_controls" ) == 0 ) && ( GetWeaponOptionUnlockPLevel( GetCurrentItemOption() ) <= PRESTIGE ) ), ; ) /* Weapon Image when not selecting weapon */ PREPROC_SHADER_DRAW_ADV_VIS_EX( PLAYER_WEAPON_IMAGE_X, PLAYER_WEAPON_IMAGE_Y, ( PLAYER_WEAPON_IMAGE_WIDTH ), PLAYER_WEAPON_IMAGE_HEIGHT, HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, GetItemImage( GET_SLOT_STAT ), 1 1 1 1, when( dvarString(ui_inside_popup ) != "select_weapon" ), ; ) /* Weapon Image when inside weapon list */ PREPROC_SHADER_DRAW_ADV_VIS_EX( PLAYER_WEAPON_IMAGE_X, PLAYER_WEAPON_IMAGE_Y, ( PLAYER_WEAPON_IMAGE_WIDTH ), PLAYER_WEAPON_IMAGE_HEIGHT, HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, GetItemImage( GetCurrentItemIndex() ), 1 1 1 1, when( !IsCurrentItemClassified() && dvarString(ui_inside_popup ) == "select_weapon" ), ; ) /* Dark Weapon Image when inside weapon list and weapon is classified */ PREPROC_SHADER_DRAW_ADV_VIS_EX( PLAYER_WEAPON_IMAGE_X, PLAYER_WEAPON_IMAGE_Y, ( PLAYER_WEAPON_IMAGE_WIDTH ), PLAYER_WEAPON_IMAGE_HEIGHT, HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, GetItemImage( GetCurrentItemIndex() ), 0 0 0 0.8, when( !isCurrentItemPurchased() && IsCurrentItemClassified() && dvarString(ui_inside_popup ) == "select_weapon" ), ; ) /* classified image when inside weapon list and weapon is classified */ PREPROC_SHADER_DRAW_ADV_VIS_EX( PLAYER_WEAPON_IMAGE_X, PLAYER_WEAPON_CLASSIFIED_Y, PLAYER_WEAPON_IMAGE_WIDTH, PLAYER_WEAPON_IMAGE_WIDTH, HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, "menu_mp_lobby_classified", 1 1 1 1, when( !isCurrentItemPurchased() && IsCurrentItemClassified() && dvarString(ui_inside_popup ) == "select_weapon" ), ; ) #define CURRENT_ATTACHMENT_VIS \ (dvarString( ui_inside_popup ) == "attachments") #define HAS_X_ATTACHMENTS( minAttachments ) \ ( GetItemNumAttachmentsEquipped( dvarString( ui_custom_name ), GET_SLOT_STAT ) >= minAttachments ) #define GET_ITEM_EQUIPPED_ATTACHMENT( index ) \ ( GetItemEquippedAttachment( dvarString( ui_custom_name ), GET_SLOT_STAT, index ) ) #define LOADOUT_SUMMARY_VIS ( ( dvarString( ui_inside_popup ) != "select_weapon" ) && \ ( dvarString( ui_inside_popup ) != "attachments" ) ) #define LOADOUT_SUMMARY_WIDTH PLAYER_WEAPON_IMAGE_WIDTH #define LOADOUT_SUMMARY_ICON_WIDTH 32 #define LOADOUT_SUMMARY_ICON_HEIGHT LOADOUT_SUMMARY_ICON_WIDTH #define LOADOUT_SUMMARY_X PLAYER_WEAPON_IMAGE_X #define LOADOUT_SUMMARY_Y (PLAYER_WEAPON_IMAGE_Y+PLAYER_WEAPON_IMAGE_HEIGHT-LOADOUT_SUMMARY_ICON_HEIGHT/2+2) #define LOADOUT_ATTACHMENT1_X (LOADOUT_SUMMARY_X+16) #define LOADOUT_ATTACHMENT2_X (LOADOUT_SUMMARY_X+LOADOUT_SUMMARY_WIDTH-16) #define LOADOUT_LENS_ICON_WIDTH 29 #define LOADOUT_LENS_ICON_HEIGHT LOADOUT_LENS_ICON_WIDTH #define LOADOUT_RETICLE_ICON_WIDTH 20 #define LOADOUT_RETICLE_ICON_HEIGHT LOADOUT_RETICLE_ICON_WIDTH #define LOADOUT_SUMMARY_VERT_SPACING 7 #define LOADOUT_SUMMARY_TEXT_X( imageX ) ( imageX+LOADOUT_SUMMARY_ICON_WIDTH+5 ) #define LOADOUT_SUMMARY_TEXT_WIDTH (LOADOUT_SUMMARY_WIDTH-LOADOUT_SUMMARY_ICON_WIDTH-10) #define WEAPON_NAME_X 90 #define WEAPON_NAME_Y ( PLAYER_WEAPON_IMAGE_Y + PLAYER_WEAPON_IMAGE_HEIGHT + 15 ) #define WEAPON_GROUP_NAME_Y ( WEAPON_NAME_Y + 20 ) /* Weapon Name */ PREPROC_TEXT_DRAW_VIS_EX( WEAPON_NAME_X WEAPON_NAME_Y 170 10 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 0 0, toUpper( locString( "@"+GetCurrentItemName() ) ), TEXTSIZE_DEFAULT, 0, 0, ITEM_ALIGN_MIDDLE_CENTER, NEW_FRAME_COMMON_TEXT_COLOR, when( !IsCurrentItemClassified() && LOADOUT_SUMMARY_VIS );, ; ) /* Underline Image */ PREPROC_SHADER_DRAW_VIS_EX( PLAYER_WEAPON_IMAGE_X (WEAPON_NAME_Y-3) PLAYER_WEAPON_IMAGE_WIDTH 16 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, "menu_mp_lobby_cac_line_2_prong", 1 1 1 1, when( LOADOUT_SUMMARY_VIS && !LENSESORRETICLES_AVAILABLE );, ; ) PREPROC_SHADER_DRAW_VIS_EX( PLAYER_WEAPON_IMAGE_X (WEAPON_NAME_Y-3) PLAYER_WEAPON_IMAGE_WIDTH 16 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, "menu_mp_lobby_cac_line_2_prong_left", 1 1 1 1, when( LOADOUT_SUMMARY_VIS && LENSESORRETICLES_AVAILABLE );, ; ) /* Attachment 1 Name */ /*PREPROC_TEXT_DRAW_VIS_EX( (LOADOUT_SUMMARY_TEXT_X(LOADOUT_SUMMARY_X)) LOADOUT_SUMMARY_Y LOADOUT_SUMMARY_TEXT_WIDTH LOADOUT_SUMMARY_ICON_HEIGHT HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 0 0, "@" + GetAttachmentName( GET_ITEM_EQUIPPED_ATTACHMENT( 0 ) ), TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_MIDDLE_LEFT, NEW_FRAME_COMMON_TEXT_COLOR, when( LOADOUT_SUMMARY_VIS && HAS_X_ATTACHMENTS( 1 ) );, autoWrapped; )*/ /* Attachment 1 Image */ PREPROC_SHADER_DRAW_VIS_EX( (LOADOUT_ATTACHMENT1_X-LOADOUT_SUMMARY_ICON_WIDTH/2) LOADOUT_SUMMARY_Y LOADOUT_SUMMARY_ICON_WIDTH LOADOUT_SUMMARY_ICON_HEIGHT HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, GetAttachmentImage( GET_ITEM_EQUIPPED_ATTACHMENT( 0 ) ), 1 1 1 1, when( LOADOUT_SUMMARY_VIS && HAS_X_ATTACHMENTS( 1 ) && GetAttachmentName( GET_ITEM_EQUIPPED_ATTACHMENT( 0 ) ) != MPUI_DW );, ; ) /* Attachment 1 DW Images */ PREPROC_SHADER_DRAW_VIS_EX( (LOADOUT_ATTACHMENT1_X-LOADOUT_SUMMARY_ICON_WIDTH/2+6) (LOADOUT_SUMMARY_Y+3) LOADOUT_SUMMARY_ICON_WIDTH (LOADOUT_SUMMARY_ICON_HEIGHT/2) HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, GetItemImage( GetCurrentItemIndex() ), 0.6 0.6 0.6 0.6, when( LOADOUT_SUMMARY_VIS && HAS_X_ATTACHMENTS( 1 ) && GetAttachmentName( GET_ITEM_EQUIPPED_ATTACHMENT( 0 ) ) == MPUI_DW );, rotation 45; ) PREPROC_SHADER_DRAW_VIS_EX( (LOADOUT_ATTACHMENT1_X-LOADOUT_SUMMARY_ICON_WIDTH/2) (LOADOUT_SUMMARY_Y+3) LOADOUT_SUMMARY_ICON_WIDTH (LOADOUT_SUMMARY_ICON_HEIGHT/2) HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, GetItemImage( GetCurrentItemIndex() ), 1 1 1 1, when( LOADOUT_SUMMARY_VIS && HAS_X_ATTACHMENTS( 1 ) && GetAttachmentName( GET_ITEM_EQUIPPED_ATTACHMENT( 0 ) ) == MPUI_DW );, rotation 45; ) /* Lens Backing */ PREPROC_SHADER_DRAW_VIS_EX( (LOADOUT_ATTACHMENT1_X-LOADOUT_LENS_ICON_WIDTH/2) (LOADOUT_SUMMARY_Y+LOADOUT_SUMMARY_ICON_HEIGHT+LOADOUT_SUMMARY_VERT_SPACING+LOADOUT_SUMMARY_ICON_HEIGHT/2-LOADOUT_LENS_ICON_HEIGHT/2) LOADOUT_LENS_ICON_WIDTH LOADOUT_LENS_ICON_HEIGHT HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, "menu_mp_weapons_attach_lens", 1 1 1 1, when( LOADOUT_SUMMARY_VIS && LENSESORRETICLES_AVAILABLE );, ; ) /* Reticle Image For Summary */ PREPROC_OWNERDRAW_ALL( (LOADOUT_ATTACHMENT1_X-LOADOUT_RETICLE_ICON_WIDTH/2) (LOADOUT_SUMMARY_Y+LOADOUT_SUMMARY_ICON_HEIGHT+LOADOUT_SUMMARY_VERT_SPACING+LOADOUT_SUMMARY_ICON_HEIGHT/2-LOADOUT_RETICLE_ICON_HEIGHT/2) LOADOUT_RETICLE_ICON_WIDTH LOADOUT_RETICLE_ICON_HEIGHT HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 1 1 1 1, UI_RETICLE_PREVIEW, when( LOADOUT_SUMMARY_VIS && LENSESORRETICLES_AVAILABLE && !CUSTOMIZING_RETICLE && !CUSTOMIZING_RETICLE_COLOR );, exp ownerdata( GetWeaponOptionImage( GetWeaponOptionGroupIndex( STAT_CAC_PRIMARY_RETICLE, 1 ) ), STAT_CAC_PRIMARY_RETICLE_COLOR ); ) /* Reticle Image While Customizing Reticle */ PREPROC_OWNERDRAW_ALL( (LOADOUT_ATTACHMENT1_X-LOADOUT_RETICLE_ICON_WIDTH/2) (LOADOUT_SUMMARY_Y+LOADOUT_SUMMARY_ICON_HEIGHT+LOADOUT_SUMMARY_VERT_SPACING+LOADOUT_SUMMARY_ICON_HEIGHT/2-LOADOUT_RETICLE_ICON_HEIGHT/2) LOADOUT_RETICLE_ICON_WIDTH LOADOUT_RETICLE_ICON_HEIGHT HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 1 1 1 1, UI_RETICLE_PREVIEW, when( LOADOUT_SUMMARY_VIS && CUSTOMIZING_RETICLE );, exp ownerdata( GetWeaponOptionImage( GetCurrentItemOption() ), STAT_CAC_PRIMARY_RETICLE_COLOR ); ) /* Reticle Image While Customizing Reticle Color */ PREPROC_OWNERDRAW_ALL( (LOADOUT_ATTACHMENT1_X-LOADOUT_RETICLE_ICON_WIDTH/2) (LOADOUT_SUMMARY_Y+LOADOUT_SUMMARY_ICON_HEIGHT+LOADOUT_SUMMARY_VERT_SPACING+LOADOUT_SUMMARY_ICON_HEIGHT/2-LOADOUT_RETICLE_ICON_HEIGHT/2) LOADOUT_RETICLE_ICON_WIDTH LOADOUT_RETICLE_ICON_HEIGHT HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 1 1 1 1, UI_RETICLE_PREVIEW, when( LOADOUT_SUMMARY_VIS && CUSTOMIZING_RETICLE_COLOR );, exp ownerdata( GetWeaponOptionImage( GetWeaponOptionGroupIndex( STAT_CAC_PRIMARY_RETICLE, 1 ) ), GetCurrentItemOption() - GetWeaponOptionGroupIndex( 0, 5 ) ); ) /* Lens Image For Summary */ PREPROC_OWNERDRAW_ALL( (LOADOUT_ATTACHMENT1_X-LOADOUT_LENS_ICON_WIDTH/2) (LOADOUT_SUMMARY_Y+LOADOUT_SUMMARY_ICON_HEIGHT+LOADOUT_SUMMARY_VERT_SPACING+LOADOUT_SUMMARY_ICON_HEIGHT/2-LOADOUT_LENS_ICON_HEIGHT/2) LOADOUT_LENS_ICON_WIDTH LOADOUT_LENS_ICON_HEIGHT HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 1 1 1 1, UI_LENS_PREVIEW, when( LOADOUT_SUMMARY_VIS && LENSESORRETICLES_AVAILABLE && !CUSTOMIZING_LENS );, exp ownerdata( "menu_mp_weapons_color_lens", STAT_CAC_PRIMARY_LENS ); ) /* Lens Image While Customizing Lens */ PREPROC_OWNERDRAW_ALL( (LOADOUT_ATTACHMENT1_X-LOADOUT_LENS_ICON_WIDTH/2) (LOADOUT_SUMMARY_Y+LOADOUT_SUMMARY_ICON_HEIGHT+LOADOUT_SUMMARY_VERT_SPACING+LOADOUT_SUMMARY_ICON_HEIGHT/2-LOADOUT_LENS_ICON_HEIGHT/2) LOADOUT_LENS_ICON_WIDTH LOADOUT_LENS_ICON_HEIGHT HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 1 1 1 1, UI_LENS_PREVIEW, when( LOADOUT_SUMMARY_VIS && CAN_GUN_HAVE_CUSTOM_RETICLE && CUSTOMIZING_LENS );, exp ownerdata( "menu_mp_weapons_color_lens", GetCurrentItemOption() - GetWeaponOptionGroupIndex( 0, 2 ) ); ) /* Lens Highlight */ PREPROC_SHADER_DRAW_VIS_EX( (LOADOUT_ATTACHMENT1_X-LOADOUT_LENS_ICON_WIDTH/2) (LOADOUT_SUMMARY_Y+LOADOUT_SUMMARY_ICON_HEIGHT+LOADOUT_SUMMARY_VERT_SPACING+LOADOUT_SUMMARY_ICON_HEIGHT/2-LOADOUT_LENS_ICON_HEIGHT/2) LOADOUT_LENS_ICON_WIDTH LOADOUT_LENS_ICON_HEIGHT HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, "menu_mp_weapons_lens_hilight", 1 1 1 1, when( LOADOUT_SUMMARY_VIS && LENSESORRETICLES_AVAILABLE );, ; ) /* Attachment 2 Name */ /*PREPROC_TEXT_DRAW_VIS_EX( (LOADOUT_SUMMARY_TEXT_X(LOADOUT_SUMMARY_X+LOADOUT_SUMMARY_WIDTH/2)) LOADOUT_SUMMARY_Y LOADOUT_SUMMARY_TEXT_WIDTH LOADOUT_SUMMARY_ICON_HEIGHT HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 0 0, "@" + GetAttachmentName( GET_ITEM_EQUIPPED_ATTACHMENT( 1 ) ), TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_MIDDLE_LEFT, NEW_FRAME_COMMON_TEXT_COLOR, when( LOADOUT_SUMMARY_VIS && HAS_X_ATTACHMENTS( 2 ) );, autoWrapped; )*/ /* Attachment 2 Image */ PREPROC_SHADER_DRAW_VIS_EX( (LOADOUT_ATTACHMENT2_X-LOADOUT_SUMMARY_ICON_WIDTH/2) LOADOUT_SUMMARY_Y LOADOUT_SUMMARY_ICON_WIDTH LOADOUT_SUMMARY_ICON_HEIGHT HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, GetAttachmentImage( GET_ITEM_EQUIPPED_ATTACHMENT( 1 ) ), 1 1 1 1, when( LOADOUT_SUMMARY_VIS && HAS_X_ATTACHMENTS( 2 ) );, ; ) #define CURRENT_ATTACHMENT_NAME_X PLAYER_WEAPON_IMAGE_X #define CURRENT_ATTACHMENT_NAME_Y (PLAYER_WEAPON_IMAGE_Y+PLAYER_WEAPON_IMAGE_HEIGHT+5) #define CURRENT_ATTACHMENT_NAME_WIDTH PLAYER_WEAPON_IMAGE_WIDTH #define CURRENT_ATTACHMENT_NAME_HEIGHT 32 /* Weapon Attachment Name */ PREPROC_TEXT_DRAW_VIS_EX( CURRENT_ATTACHMENT_NAME_X CURRENT_ATTACHMENT_NAME_Y CURRENT_ATTACHMENT_NAME_WIDTH CURRENT_ATTACHMENT_NAME_HEIGHT HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 0 0, "@" + GetCurrentItemAttachmentName() + "_CAPS", TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_MIDDLE_CENTER, NEW_FRAME_COMMON_TEXT_COLOR, when( CURRENT_ATTACHMENT_VIS && !IsCurrentItemClassified() ), autoWrapped; ) #define CURRENT_ATTACHMENT_IMAGE_WIDTH 50 #define CURRENT_ATTACHMENT_IMAGE_HEIGHT 50 #define CURRENT_ATTACHMENT_IMAGE_X (CURRENT_ATTACHMENT_NAME_X+CURRENT_ATTACHMENT_NAME_WIDTH/2 - CURRENT_ATTACHMENT_IMAGE_WIDTH/2 ) #define CURRENT_ATTACHMENT_IMAGE_Y (CURRENT_ATTACHMENT_NAME_Y+25) /* Weapon Attachment Image */ PREPROC_SHADER_DRAW_VIS_EX( CURRENT_ATTACHMENT_IMAGE_X CURRENT_ATTACHMENT_IMAGE_Y CURRENT_ATTACHMENT_IMAGE_WIDTH CURRENT_ATTACHMENT_IMAGE_HEIGHT HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, GetAttachmentImage( GetItemAttachment( GetCurrentItemIndex(), GetCurrentItemAttachmentNum() ) ), 1 1 1 1, when( CURRENT_ATTACHMENT_VIS && !IsCurrentItemClassified() && GetAttachmentName( GetItemAttachment( GetCurrentItemIndex(), GetCurrentItemAttachmentNum() ) ) != MPUI_DW ), ; ) /* Weapon Attachment DW Images */ PREPROC_SHADER_DRAW_VIS_EX( (CURRENT_ATTACHMENT_IMAGE_X+5) (CURRENT_ATTACHMENT_IMAGE_Y+10) CURRENT_ATTACHMENT_IMAGE_WIDTH (CURRENT_ATTACHMENT_IMAGE_HEIGHT/2) HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, GetItemImage( GetCurrentItemIndex() ), 0.6 0.6 0.6 0.6, when( CURRENT_ATTACHMENT_VIS && !IsCurrentItemClassified() && GetAttachmentName( GetItemAttachment( GetCurrentItemIndex(), GetCurrentItemAttachmentNum() ) ) == MPUI_DW ), rotation 45 ) PREPROC_SHADER_DRAW_VIS_EX( (CURRENT_ATTACHMENT_IMAGE_X-5) (CURRENT_ATTACHMENT_IMAGE_Y+10) CURRENT_ATTACHMENT_IMAGE_WIDTH (CURRENT_ATTACHMENT_IMAGE_HEIGHT/2) HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, GetItemImage( GetCurrentItemIndex() ), 1 1 1 1, when( CURRENT_ATTACHMENT_VIS && !IsCurrentItemClassified() && GetAttachmentName( GetItemAttachment( GetCurrentItemIndex(), GetCurrentItemAttachmentNum() ) ) == MPUI_DW ), rotation 45 ) #define CURRENT_ATTACHMENT_DESC_X CURRENT_ATTACHMENT_NAME_X #define CURRENT_ATTACHMENT_DESC_Y (CURRENT_ATTACHMENT_IMAGE_Y+CURRENT_ATTACHMENT_IMAGE_HEIGHT+5) #define CURRENT_ATTACHMENT_DESC_WIDTH CURRENT_ATTACHMENT_NAME_WIDTH #define CURRENT_ATTACHMENT_DESC_HEIGHT 20 PREPROC_TEXT_DRAW_VIS_EX( CURRENT_ATTACHMENT_DESC_X CURRENT_ATTACHMENT_DESC_Y CURRENT_ATTACHMENT_DESC_WIDTH CURRENT_ATTACHMENT_DESC_HEIGHT HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 0 0, "@" + GetCurrentItemAttachmentDesc(), TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_TOP_CENTER, CHOICE_TEXTCOLOR, when( CURRENT_ATTACHMENT_VIS && !IsCurrentItemClassified() ), autoWrapped; ) #define WEAPON_STAT_NAMES_X 95 #define WEAPON_STATS_X (WEAPON_STAT_NAMES_X+110) #define WEAPON_DESC_WIDTH ( CAC_WIDTH/2 - 25 ) #define WEAPON_STATS_Y 85 #define GET_WEAPON_STAT( statName ) \ getDStat( "ItemStats", GetCurrentItemIndex(), "stats", statName, "statValue" ) #define WEAPON_KDRATIO \ GET_WEAPON_STAT( "kills" ) / max( 1, GET_WEAPON_STAT( "deathsDuringUse" ) ) #define WEAPON_ACCURACY \ ( ( GET_WEAPON_STAT( "hits" ) / max( 1, GET_WEAPON_STAT( "shots" ) ) ) * 100 ) #define WEAPON_STAT_SPACING 17 #define GUN_STATS_VIS when( dvarBool( ui_cac_gun_attributes_vis ) && !IsCurrentItemClassified() ) /* WEAPON STAT NAMES */ /* Weapon kdratio */ PREPROC_TEXT_DRAW_VIS_EX( WEAPON_STAT_NAMES_X WEAPON_STATS_Y 10 10 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 0 0, "@MPUI_KILL_DEATH_RATIO_CAPS", TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_TOP_LEFT, NEW_FRAME_COMMON_TEXT_COLOR, GUN_STATS_VIS, ; ) /* Weapon accuracy */ PREPROC_TEXT_DRAW_VIS_EX( WEAPON_STAT_NAMES_X (WEAPON_STATS_Y+WEAPON_STAT_SPACING) 10 10 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 0 0, "@MPUI_ACCURACY_CAPS", TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_TOP_LEFT, NEW_FRAME_COMMON_TEXT_COLOR, GUN_STATS_VIS, ; ) /* Weapon kills */ PREPROC_TEXT_DRAW_VIS_EX( WEAPON_STAT_NAMES_X (WEAPON_STATS_Y+WEAPON_STAT_SPACING*2) 10 10 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 0 0, "@MPUI_KILLS_CAPS", TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_TOP_LEFT, NEW_FRAME_COMMON_TEXT_COLOR, GUN_STATS_VIS, ; ) /* Weapon deaths */ PREPROC_TEXT_DRAW_VIS_EX( WEAPON_STAT_NAMES_X (WEAPON_STATS_Y+WEAPON_STAT_SPACING*3) 10 10 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 0 0, "@MPUI_DEATHS_CAPS", TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_TOP_LEFT, NEW_FRAME_COMMON_TEXT_COLOR, GUN_STATS_VIS, ; ) /* Weapon headshots */ PREPROC_TEXT_DRAW_VIS_EX( WEAPON_STAT_NAMES_X (WEAPON_STATS_Y+WEAPON_STAT_SPACING*4) 10 10 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 0 0, "@MPUI_HEADSHOTS_CAPS", TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_TOP_LEFT, NEW_FRAME_COMMON_TEXT_COLOR, GUN_STATS_VIS, ; ) /* WEAPON STATS */ /* Weapon kdratio */ PREPROC_TEXT_DRAW_VIS_EX( WEAPON_STATS_X WEAPON_STATS_Y 10 10 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 0 0, getFloatAsFormattedString( WEAPON_KDRATIO, 2 ) , TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_TOP_LEFT, NEW_FRAME_ORANGE_RGB 1, GUN_STATS_VIS, ; ) /* Weapon accuracy */ PREPROC_TEXT_DRAW_VIS_EX( WEAPON_STATS_X (WEAPON_STATS_Y+WEAPON_STAT_SPACING) 10 10 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 0 0, getFloatAsFormattedString( WEAPON_ACCURACY, 2 ) + " %", TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_TOP_LEFT, NEW_FRAME_ORANGE_RGB 1, GUN_STATS_VIS, ; ) /* Weapon kills */ PREPROC_TEXT_DRAW_VIS_EX( WEAPON_STATS_X (WEAPON_STATS_Y+WEAPON_STAT_SPACING*2) 10 10 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 0 0, GET_WEAPON_STAT( "kills" ), TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_TOP_LEFT, NEW_FRAME_ORANGE_RGB 1, GUN_STATS_VIS, ; ) /* Weapon deaths */ PREPROC_TEXT_DRAW_VIS_EX( WEAPON_STATS_X (WEAPON_STATS_Y+WEAPON_STAT_SPACING*3) 10 10 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 0 0, GET_WEAPON_STAT( "deathsDuringUse" ), TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_TOP_LEFT, NEW_FRAME_ORANGE_RGB 1, GUN_STATS_VIS, ; ) /* Weapon headshots */ PREPROC_TEXT_DRAW_VIS_EX( WEAPON_STATS_X (WEAPON_STATS_Y+WEAPON_STAT_SPACING*4) 10 10 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 0 0, GET_WEAPON_STAT( "headshots" ), TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_TOP_LEFT, NEW_FRAME_ORANGE_RGB 1, GUN_STATS_VIS, ; ) #define GUN_ATTRIBUTES_VIS ( !dvarBool( ui_cac_gun_attributes_vis ) && !IsCurrentItemClassified() ) #define WEAPON_ATTRIBUTE_NAMES_X WEAPON_STAT_NAMES_X #define WEAPON_ATTRIBUTE_BAR_X (WEAPON_ATTRIBUTE_NAMES_X+60) #define WEAPON_ATTRIBUTE_BAR_HEIGHT 9 #define WEAPON_ATTRIBUTE_BAR_WIDTH (WEAPON_ATTRIBUTE_BAR_HEIGHT*10) #define ATTRIBUTES_TABLE_COL_REF 1 #define ATTRIBUTES_TABLE_COL_ACCURACY 2 #define ATTRIBUTES_TABLE_COL_DAMAGE 3 #define ATTRIBUTES_TABLE_COL_RANGE 4 #define ATTRIBUTES_TABLE_COL_FIRE_RATE 5 #define ATTRIBUTES_TABLE_COL_MOBILITY 6 #define ATTRIBUTES_TABLE_COL_FIRE_TYPE 8 /* WEAPON ATTRIBUTES */ #define DAMAGE_BAR_Y (WEAPON_STATS_Y+2) /* Weapon damage label */ PREPROC_TEXT_DRAW_VIS_EX( WEAPON_ATTRIBUTE_NAMES_X (DAMAGE_BAR_Y-2) 10 10 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 0 0, "@MPUI_DAMAGE_CAPS", TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_TOP_LEFT, NEW_FRAME_COMMON_TEXT_COLOR, when( GUN_ATTRIBUTES_VIS ), ; ) /* Weapon damage bar */ itemDef { name "damageBar" type ITEM_TYPE_OWNERDRAW rect WEAPON_ATTRIBUTE_BAR_X DAMAGE_BAR_Y WEAPON_ATTRIBUTE_BAR_WIDTH WEAPON_ATTRIBUTE_BAR_HEIGHT HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER forecolor 1 1 1 1 ownerdraw UI_DRAW_ATTRIBUTE_BAR dvar ui_numBarPartitions exp ownerdata( ATTRIBUTES_TABLE_COL_DAMAGE ); visible when( GUN_ATTRIBUTES_VIS ) decoration } #define RANGE_BAR_Y (DAMAGE_BAR_Y+WEAPON_STAT_SPACING) /* Weapon range label */ PREPROC_TEXT_DRAW_VIS_EX( WEAPON_ATTRIBUTE_NAMES_X (RANGE_BAR_Y-2) 10 10 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 0 0, "@MPUI_RANGE_CAPS", TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_TOP_LEFT, NEW_FRAME_COMMON_TEXT_COLOR, when( GUN_ATTRIBUTES_VIS ), ; ) /* Weapon damage bar */ itemDef { name "rangeBar" type ITEM_TYPE_OWNERDRAW rect WEAPON_ATTRIBUTE_BAR_X RANGE_BAR_Y WEAPON_ATTRIBUTE_BAR_WIDTH WEAPON_ATTRIBUTE_BAR_HEIGHT HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER forecolor 1 1 1 1 ownerdraw UI_DRAW_ATTRIBUTE_BAR dvar ui_numBarPartitions exp ownerdata( ATTRIBUTES_TABLE_COL_RANGE ); visible when( GUN_ATTRIBUTES_VIS ) decoration } #define ACCURACY_BAR_Y (RANGE_BAR_Y+WEAPON_STAT_SPACING) /* Weapon accuracy label */ PREPROC_TEXT_DRAW_VIS_EX( WEAPON_ATTRIBUTE_NAMES_X (ACCURACY_BAR_Y-2) 10 10 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 0 0, "@MPUI_ACCURACY_CAPS", TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_TOP_LEFT, NEW_FRAME_COMMON_TEXT_COLOR, when( GUN_ATTRIBUTES_VIS ), ; ) /* Weapon accuracy bar */ itemDef { name "accuracyBar" type ITEM_TYPE_OWNERDRAW rect WEAPON_ATTRIBUTE_BAR_X ACCURACY_BAR_Y WEAPON_ATTRIBUTE_BAR_WIDTH WEAPON_ATTRIBUTE_BAR_HEIGHT HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER forecolor 1 1 1 1 ownerdraw UI_DRAW_ATTRIBUTE_BAR dvar ui_numBarPartitions exp ownerdata( ATTRIBUTES_TABLE_COL_ACCURACY ); visible when( GUN_ATTRIBUTES_VIS ) decoration } #define MOBILITY_BAR_Y (ACCURACY_BAR_Y+WEAPON_STAT_SPACING) /* Weapon mobility label */ PREPROC_TEXT_DRAW_VIS_EX( WEAPON_ATTRIBUTE_NAMES_X (MOBILITY_BAR_Y-2) 10 10 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 0 0, "@MPUI_MOBILITY_CAPS", TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_TOP_LEFT, NEW_FRAME_COMMON_TEXT_COLOR, when( GUN_ATTRIBUTES_VIS ), ; ) /* Weapon mobility bar */ itemDef { name "mobilityBar" type ITEM_TYPE_OWNERDRAW rect WEAPON_ATTRIBUTE_BAR_X MOBILITY_BAR_Y WEAPON_ATTRIBUTE_BAR_WIDTH WEAPON_ATTRIBUTE_BAR_HEIGHT HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER forecolor 1 1 1 1 ownerdraw UI_DRAW_ATTRIBUTE_BAR dvar ui_numBarPartitions exp ownerdata( ATTRIBUTES_TABLE_COL_MOBILITY ); visible when( GUN_ATTRIBUTES_VIS ) decoration } #ifndef PC // ROTATE ============================================================= PREPROC_TEXT_DRAW( 95 (CAC_HEIGHT/2) 50 17 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 0 0, "@PLATFORM_ROTATE", TEXTSIZE_DEFAULT, 0, 0, ITEM_ALIGN_BOTTOM_LEFT, 1 1 1 1 ) #endif #define WEAPON_FIRE_TYPE \ tablelookup( "mp/attributesTable.csv", ATTRIBUTES_TABLE_COL_REF, GetItemRef( GetCurrentItemIndex() ), ATTRIBUTES_TABLE_COL_FIRE_TYPE ) #define FULL_AUTO_ATTACHMENT \ ( ( ( GetAttachmentName( GetItemAttachment( GetCurrentItemIndex(), GetCurrentItemAttachmentNum() ) ) == "MPUI_AUTO" ) && ( IS_ATTACHMENT_LIST_OPEN ) ) || ( ( GetAttachmentName( GetItemEquippedAttachment( dvarString( ui_custom_name ), GET_SLOT_STAT, 0 ) ) == "MPUI_AUTO" ) && ( IS_NO_LIST_OPEN ) ) ) #define FIRE_RATE_Y (MOBILITY_BAR_Y+WEAPON_STAT_SPACING) /* Weapon FIRE RATE */ PREPROC_TEXT_DRAW_VIS_EX( WEAPON_ATTRIBUTE_NAMES_X (FIRE_RATE_Y-2) 10 10 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 0 0, "@MPUI_FIRE_RATE_CAPS", TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_TOP_LEFT, NEW_FRAME_COMMON_TEXT_COLOR, when( GUN_ATTRIBUTES_VIS ), ; ) /* Weapon fire rate bar shown only when weapon is full auto */ itemDef { name "fireRateBar" type ITEM_TYPE_OWNERDRAW rect WEAPON_ATTRIBUTE_BAR_X FIRE_RATE_Y WEAPON_ATTRIBUTE_BAR_WIDTH WEAPON_ATTRIBUTE_BAR_HEIGHT HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER forecolor 1 1 1 1 ownerdraw UI_DRAW_ATTRIBUTE_BAR dvar ui_numBarPartitions exp ownerdata( ATTRIBUTES_TABLE_COL_FIRE_RATE ); visible when( GUN_ATTRIBUTES_VIS && WEAPON_FIRE_TYPE == "MPUI_FULL_AUTO" ) decoration } PREPROC_TEXT_DRAW_VIS_EX( WEAPON_ATTRIBUTE_BAR_X (FIRE_RATE_Y-2) 10 10 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 0 0, "@"+WEAPON_FIRE_TYPE, TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_TOP_LEFT, NEW_FRAME_ORANGE_RGB 1, when( GUN_ATTRIBUTES_VIS && WEAPON_FIRE_TYPE != "MPUI_FULL_AUTO" && !FULL_AUTO_ATTACHMENT ), ; ) PREPROC_TEXT_DRAW_VIS_EX( WEAPON_ATTRIBUTE_BAR_X (FIRE_RATE_Y-2) 10 10 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 0 0, "@MPUI_FULL_AUTO", TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_TOP_LEFT, NEW_FRAME_ORANGE_RGB 1, when( GUN_ATTRIBUTES_VIS && WEAPON_FIRE_TYPE != "MPUI_FULL_AUTO" && FULL_AUTO_ATTACHMENT ), ; ) #define TOGGLE_ATTRIBUTES_AND_STATS \ if( dvarBool( ui_cac_gun_attributes_vis ) ) \ { \ setDvar ui_cac_gun_attributes_vis 0; } \ else \ { \ setDvar ui_cac_gun_attributes_vis 1; \ } // Gun Stats #ifdef PC #undef CHOICE_TEXTSIZE #define CHOICE_TEXTSIZE TEXTSIZE_DEFAULT #undef CHOICE_TEXTFONT #define CHOICE_TEXTFONT UI_FONT_NORMAL #define BUTTON_SPACING 20 #define GUN_STATS_BUTTON_OFFSET ( getTextWidth( locString( "@PLATFORM_BACK" ), CHOICE_TEXTFONT, TEXTSIZE_DEFAULT ) + 8 + BUTTON_SPACING ) NEW_FRAME_BUTTON_PC_LEFT_OFFSET( CAC_WIDTH, CAC_HEIGHT, GUN_STATS_BUTTON_OFFSET, "@PLATFORM_GUN_STATS", TOGGLE_ATTRIBUTES_AND_STATS, when( !dvarBool( ui_cac_gun_attributes_vis ) ) ) #else // #ifdef PC itemDef { type ITEM_TYPE_BUTTON rect 180 ( CAC_HEIGHT / 2 ) 50 17 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER text "@PLATFORM_GUN_STATS" textfont CHOICE_TEXTFONT textscale TEXTSIZE_DEFAULT textalign ITEM_ALIGN_BOTTOM_LEFT execkeyint BUTTON_BACK { TOGGLE_ATTRIBUTES_AND_STATS } visible when( !dvarBool( ui_cac_gun_attributes_vis ) ) decoration } #endif // #ifdef PC // Gun Attributes #ifdef PC NEW_FRAME_BUTTON_PC_LEFT_OFFSET( CAC_WIDTH, CAC_HEIGHT, GUN_STATS_BUTTON_OFFSET, "@PLATFORM_GUN_ATTRIBUTES", TOGGLE_ATTRIBUTES_AND_STATS, when( dvarBool( ui_cac_gun_attributes_vis ) ) ) #else // #ifdef PC itemDef { type ITEM_TYPE_BUTTON rect 180 ( CAC_HEIGHT / 2 ) 50 17 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER text "@PLATFORM_GUN_ATTRIBUTES" textfont CHOICE_TEXTFONT textscale TEXTSIZE_DEFAULT textalign ITEM_ALIGN_BOTTOM_LEFT execkeyint BUTTON_BACK { TOGGLE_ATTRIBUTES_AND_STATS } visible when( dvarBool( ui_cac_gun_attributes_vis ) ) decoration } #endif // #ifdef PC #define ANY_ATTACHMENTS_EQUIPPED \ ( ( GetItemNumAttachmentsEquipped( dvarString( ui_custom_name ), STAT_CAC_PRIMARY ) > 0 ) || ( GetItemNumAttachmentsEquipped( dvarString( ui_custom_name ), STAT_CAC_SECONDARY ) > 0 ) ) #define CLEAR_ATTACHMENTS_ACTION \ play CHOICE_FOCUS_SOUND; \ execnow clearAllAttachmentsForItem ( dvarString( ui_custom_name ) ) ( getCurrentItemIndex() ) ; #ifdef PC NEW_FRAME_BUTTON_PC_RIGHT_OFFSET( CAC_WIDTH, CAC_HEIGHT, 0, "@PLATFORM_CLEAR_ATTACHMENTS", CLEAR_ATTACHMENTS_ACTION, when( dvarString( ui_inside_popup ) == "attachments" && ANY_ATTACHMENTS_EQUIPPED ) ) #else // #ifdef PC itemDef { type ITEM_TYPE_BUTTON rect -165 ( CAC_HEIGHT / 2 ) 120 20 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER text "@PLATFORM_CLEAR_ATTACHMENTS" textfont CHOICE_TEXTFONT textscale TEXTSIZE_DEFAULT textalign ITEM_ALIGN_MIDDLE_LEFT execKeyInt BUTTON_Y { play CHOICE_FOCUS_SOUND; CLEAR_ATTACHMENTS_ACTION } visible when( dvarString( ui_inside_popup ) == "attachments" && ANY_ATTACHMENTS_EQUIPPED ) decoration } #endif // #ifdef PC #ifdef PC // back button NEW_FRAME_BACK_BUTTON_ACTION( CAC_WIDTH, CAC_HEIGHT, ON_ESC ) #else // #ifdef PC NEW_FRAME_BACK_BUTTON( CAC_WIDTH, CAC_HEIGHT ) #endif // #ifdef PC } }