iw6-lui/lui/mp_menus/cacrecap.dec.lua
2024-09-12 17:25:45 +02:00

2488 lines
100 KiB
Lua

local f0_local0 = module
local f0_local1, f0_local2 = ...
f0_local0( f0_local1, package.seeall )
CoD.PrintModuleLoad( _NAME )
RecapLayout = {
Width = 333,
GridH = 80.25,
GridHGutter = 4,
Height = 545,
GridVSlim = 60,
GridVTall = 80,
GridVGutter = 8,
XWhenLeft = 100,
XWhenRight = 560,
Y = 100,
LockAlpha = 0.25
}
if Engine.UsingSplitscreenUpscaling() then
RecapLayout.Width = RecapLayout.GridH * 6 + RecapLayout.GridHGutter * 5
RecapLayout.Height = RecapLayout.GridVTall * 3 + RecapLayout.GridVGutter * 2
end
f0_local0 = function ( f1_arg0, f1_arg1 )
local f1_local0 = false
if f1_arg1 then
if f1_arg0 == "infect" and not Cac.IsClassInUse( f1_arg1, Cac.GetSquadLoc(), Cac.GetActiveSquadMember( f1_arg1 ), "defaultClassesTeam" .. Game.GetPlayerTeam(), 0 ) then
f1_local0 = true
elseif f1_arg0 == "horde" or f1_arg0 == "sotf" or f1_arg0 == "sotf_ffa" or f1_arg0 == "gun" then
f1_local0 = true
end
end
return f1_local0
end
f0_local1 = function ( f2_arg0, f2_arg1, f2_arg2 )
local f2_local0 = Engine.GetDvarString( "g_gametype" )
if f0_local0( f2_local0, f2_arg2 ) then
if f2_arg1 == Cac.Indices.Weapons.Primary then
if f2_local0 == "infect" then
if Game.GetPlayerTeam() == Teams.allies then
f2_arg0 = "iw6_maul"
elseif Game.GetPlayerTeam() == Teams.axis then
f2_arg0 = "iw6_knifeonly"
end
elseif f2_local0 == "horde" then
f2_arg0 = "iw6_mp443"
elseif f2_local0 == "sotf" or f2_local0 == "sotf_ffa" then
f2_arg0 = Engine.TableLookup( HuntedWeaponsTable.File, HuntedWeaponsTable.Cols.Index, Game.GetOmnvar( "ui_sotf_pistol" ), HuntedWeaponsTable.Cols.Ref )
elseif f2_local0 == "gun" then
local f2_local1 = Game.GetOmnvar( "ui_fakeloadout_weapon1" )
if f2_local1 > -1 then
f2_arg0 = Engine.TableLookupByRow( StatsTable.File, f2_local1, StatsTable.Cols.WeaponRef )
else
f2_arg0 = "none"
end
end
else
f2_arg0 = "none"
end
end
return f2_arg0
end
f0_local2 = function ( f3_arg0, f3_arg1 )
if f0_local0( Engine.GetDvarString( "g_gametype" ), f3_arg1 ) then
f3_arg0 = "icon_weapon_ph_camo"
end
return f3_arg0
end
local f0_local3 = function ( f4_arg0, f4_arg1, f4_arg2, f4_arg3 )
local f4_local0 = Engine.GetDvarString( "g_gametype" )
if f0_local0( f4_local0, f4_arg3 ) then
if f4_local0 == "gun" and f4_arg2 == Cac.Indices.Weapons.Primary then
local f4_local1 = Game.GetOmnvar( "ui_fakeloadout_weapon1_attach" .. tostring( f4_arg1 + 1 ) )
if f4_local1 > -1 then
f4_arg0 = Engine.TableLookupByRow( AttachmentTable.File, f4_local1, AttachmentTable.Cols.BaseRef )
else
f4_arg0 = "none"
end
elseif f4_arg2 == Cac.Indices.Weapons.Primary and f4_arg1 == 0 then
if f4_local0 == "horde" then
f4_arg0 = "xmags"
elseif f4_local0 == "sotf" or f4_local0 == "sotf_ffa" or f4_local0 == "infect" then
f4_arg0 = "none"
end
else
f4_arg0 = "none"
end
end
return f4_arg0
end
local f0_local4 = function ( f5_arg0, f5_arg1 )
if f0_local0( Engine.GetDvarString( "g_gametype" ), f5_arg1 ) then
f5_arg0 = "icon_weapon_ph_primary_reticle"
end
return f5_arg0
end
local f0_local5 = function ( f6_arg0, f6_arg1, f6_arg2 )
local f6_local0 = Engine.GetDvarString( "g_gametype" )
if f0_local0( f6_local0, f6_arg2 ) then
if f6_arg1 == Cac.Indices.Grenade.Primary then
if f6_local0 == "infect" then
if Game.GetPlayerTeam() == Teams.allies then
f6_arg0 = "proximity_explosive"
elseif Game.GetPlayerTeam() == Teams.axis then
f6_arg0 = "throwingknife"
end
elseif f6_local0 == "horde" then
f6_arg0 = "proximity_explosive"
elseif f6_local0 == "sotf" or f6_local0 == "sotf_ffa" then
f6_arg0 = "throwingknife"
elseif f6_local0 == "gun" then
f6_arg0 = "none"
end
elseif f6_local0 == "infect" then
if Game.GetPlayerTeam() == Teams.allies then
f6_arg0 = "concussion_grenade"
elseif Game.GetPlayerTeam() == Teams.axis then
f6_arg0 = "none"
end
elseif f6_local0 == "horde" then
f6_arg0 = "concussion_grenade"
elseif f6_local0 == "sotf" or f6_local0 == "sotf_ffa" then
f6_arg0 = "flash_grenade"
elseif f6_local0 == "gun" then
f6_arg0 = "none"
end
end
return f6_arg0
end
local f0_local6 = function ( f7_arg0 )
local f7_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( f7_arg0 )
return {
controller = f7_local0.controller,
squadLocation = f7_local0.squadLocation,
squadMemberIndex = f7_local0.memberIndex,
classLocation = f7_local0.loadoutLocation,
slot = f7_local0.loadoutSlot
}
end
local f0_local7 = function ( f8_arg0 )
local self = LUI.UIElement.new( {
topAnchor = true,
bottomAnchor = true,
leftAnchor = true,
rightAnchor = false,
top = 0,
left = 0,
bottom = 0,
width = RecapLayout.GridHGutter
} )
local f8_local1 = LUI.UIImage.new
local f8_local2 = {
material = RegisterMaterial( "white" ),
topAnchor = f8_arg0,
bottomAnchor = not f8_arg0,
leftAnchor = true,
rightAnchor = true
}
local f8_local3
if f8_arg0 then
f8_local3 = 4
if not f8_local3 then
else
f8_local2.top = f8_local3
f8_local2.left = 1
if f8_arg0 then
f8_local3 = 16
if not f8_local3 then
else
f8_local2.bottom = f8_local3
f8_local2.right = -1
f8_local2.red = 1
f8_local2.green = 1
f8_local2.blue = 1
f8_local2.alpha = 0.1
f8_local1 = f8_local1( f8_local2 )
self:addElement( f8_local1 )
if f8_arg0 and Engine.InFrontend() then
f8_local1:registerAnimationState( "focus", {
red = 1,
green = 1,
blue = 1,
alpha = 0.1
} )
f8_local1:registerAnimationState( "locked", CoD.ColorizeState( Colors.cac_button ) )
f8_local1:registerEventHandler( "button_over", MBh.AnimateToState( "focus" ) )
f8_local1:registerEventHandler( "button_up", MBh.AnimateToState( "default" ) )
f8_local1:registerEventHandler( "button_lock", MBh.AnimateToState( "locked" ) )
f8_local1:registerEventHandler( "button_unlock", MBh.AnimateToState( "default" ) )
end
return self
end
end
f8_local3 = 0
end
end
f8_local3 = -RecapLayout.GridVSlim
end
local f0_local8 = function ()
local self = LUI.UIElement.new( {
topAnchor = true,
bottomAnchor = false,
leftAnchor = true,
rightAnchor = true,
top = 0,
left = 0,
bottom = RecapLayout.GridVGutter,
right = 0
} )
self:addElement( LUI.UIImage.new( {
material = RegisterMaterial( "white" ),
topAnchor = false,
bottomAnchor = false,
leftAnchor = true,
rightAnchor = true,
top = -1,
left = 0,
bottom = 1,
right = 0,
red = 1,
green = 1,
blue = 1,
alpha = 0.2
} ) )
return self
end
local f0_local9 = function ( f10_arg0, f10_arg1, f10_arg2, f10_arg3, f10_arg4, f10_arg5, f10_arg6, f10_arg7 )
local f10_local0 = f10_arg7 or false
local self = LUI.UIImage.new( {
material = RegisterMaterial( "white" ),
topAnchor = false,
leftAnchor = false,
bottomAnchor = false,
rightAnchor = false,
top = f10_arg1 - f10_arg3 / 2,
left = f10_arg0 - f10_arg2 / 2,
width = f10_arg2,
height = f10_arg3,
alpha = 0
} )
self.locked = false
self:registerAnimationState( "moved", {
topAnchor = false,
leftAnchor = false,
bottomAnchor = false,
rightAnchor = false,
top = f10_arg1 - f10_arg3 / 2 - Cac.Layout.SpecialistStreak.row_offset / 2,
left = f10_arg0 - f10_arg2 / 2,
width = f10_arg2,
height = f10_arg3
} )
self:registerAnimationState( "restore_position", {
topAnchor = false,
leftAnchor = false,
bottomAnchor = false,
rightAnchor = false,
top = f10_arg1 - f10_arg3 / 2,
left = f10_arg0 - f10_arg2 / 2,
width = f10_arg2,
height = f10_arg3
} )
local f10_local2 = function ( f11_arg0, f11_arg1 )
local f11_local0 = f10_arg4( f11_arg0, f11_arg1 )
local f11_local1 = f11_local0.material
local f11_local2 = f11_local0.alpha and f11_local0.alpha or 1
local f11_local3 = f11_arg0.locked and 2.63 or 1
local f11_local4 = {
material = f11_local1,
alpha = f11_local2
}
if f11_arg0.locked then
f11_local4.alphaMultiplier = f11_local3
end
f11_arg0:registerAnimationState( "current", f11_local4 )
f11_arg0:animateToState( "current" )
end
self:registerEventHandler( "update_cac_info_panel", function ( element, event )
f10_local2( element, event )
end )
if Engine.InFrontend() then
self:registerAnimationState( "locked", CoD.ColorizeState( Colors.black, {
alphaMultiplier = 2.63
} ) )
if f10_arg5 then
if not f10_local0 then
self:registerEventHandler( "button_lock", function ( element, event )
element.locked = true
f10_local2( element, event )
element:animateToState( "locked" )
end )
end
self:registerEventHandler( "button_unlock", function ( element, event )
local f14_local0 = f10_arg4( element, event )
local f14_local1 = f14_local0.alpha and f14_local0.alpha or 1
element.locked = false
f10_local2( element, event )
element:registerAnimationState( "unlocked", CoD.ColorizeState( Colors.white, {
alpha = f14_local1
} ) )
element:animateToState( "unlocked" )
end )
if not f10_arg6 then
self:registerEventHandler( "button_over", f10_local2 )
self:registerEventHandler( "button_up", f10_local2 )
end
end
if f10_arg6 then
self:registerEventHandler( "button_over", function ( element, event )
f10_local2( element, event )
element:animateToState( "locked" )
end )
self:registerEventHandler( "button_up", function ( element, event )
local f16_local0 = f10_arg4( element, event )
local f16_local1 = f16_local0.alpha and f16_local0.alpha or 1
f10_local2( element, event )
element:registerAnimationState( "unlocked", CoD.ColorizeState( Colors.white, {
alpha = f16_local1
} ) )
element:animateToState( "unlocked" )
end )
end
end
return self
end
local f0_local10 = function ()
local f17_local0 = LUI.FlowManager.GetMenuScopedDataByMenuName( "cac_edit_main" )
local f17_local1 = nil
if Engine.InFrontend() then
f17_local1 = GetCurrentGameType()
else
f17_local1 = GameX.GetGameMode()
end
if f17_local1 == "infect" and Cac.IsDefaultClass( f17_local0.classLocation ) and f17_local0.currTeam == Teams.axis then
return true
else
return false
end
end
local f0_local11 = function ( f18_arg0, f18_arg1, f18_arg2, f18_arg3, f18_arg4, f18_arg5, f18_arg6, f18_arg7 )
local f18_local0 = f18_arg0 * RecapLayout.GridH + math.max( 0, f18_arg0 - 1 ) * RecapLayout.GridHGutter
local f18_local1 = 4
local f18_local2 = 7
local f18_local3 = 0
if f18_arg3 then
local f18_local4, self, f18_local6, f18_local7 = GetTextDimensions( f18_arg3, CoD.TextSettings.SmallFont.Font, CoD.TextSettings.SmallFont.Height )
f18_local3 = f18_local6 - f18_local4
end
local f18_local4 = LUI.UIGenericButton.new
local self = {}
local f18_local6 = {
style = GenericButtonSettings.Styles.FlatButton,
force_disable_action_button = true,
disable_height_guard = true
}
local f18_local7
if f18_arg5 then
f18_local7 = CoD.TextSettings.NormalFont.Height
if not f18_local7 then
else
f18_local6.background_padding = f18_local7
f18_local6.disable_border = true
f18_local6.use_locking = true
f18_local6.button_action_func = function ( f19_arg0, f19_arg1 )
if f18_arg2 then
local f19_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( f19_arg0 )
f19_arg0:dispatchEventToRoot( {
name = "add_button_helper_text",
button_ref = "button_alt1",
helper_text = "",
side = "left",
immediate = true,
clickable = true
} )
if f19_local0 and f19_local0.squadLocation == "squadMembers" then
f19_arg0:dispatchEventToRoot( {
name = "add_button_helper_text",
button_ref = "button_alt2",
helper_text = "",
side = "left",
immediate = true,
clickable = true
} )
end
f19_arg0:dispatchEventToRoot( {
name = "add_button_helper_text",
button_ref = "button_start",
helper_text = "",
side = "left",
immediate = true,
clickable = true
} )
f19_arg0:processEvent( {
name = "gain_focus"
} )
if f19_arg0.id ~= "edit_killstreaks" then
if f19_arg0.id == "edit_weapon_primary_camo" or f19_arg0.id == "edit_weapon_primary_reticle" then
f19_arg0:dispatchEventToRoot( {
name = "close_info_column",
immediate = true
} )
else
f19_arg0:dispatchEventToRoot( {
name = "expand_info_column",
immediate = true
} )
end
f19_arg0:dispatchEventToRoot( {
name = "hide_character_image",
immediate = true
} )
end
f18_arg2( f19_arg0, f19_arg1 )
else
Engine.PlaySound( CoD.SFX.DenySelect )
end
end
f18_local6.button_over_func = function ( f20_arg0, f20_arg1 )
local f20_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( f20_arg0 )
local f20_local1 = f0_local6( f20_arg0 )
f20_local1.name = "update_selection_info"
f20_local1.selection_id = f20_arg0.id
f20_local1.weaponIndex = f20_arg0.properties.weaponIndex
f20_local1.immediate = true
f20_arg0:dispatchEventToRoot( f20_local1 )
f20_local0.selectionIDFocused = f20_arg0.id
f20_local0.weaponIndexFocused = f20_arg0.properties.weaponIndex
f20_local0.attachIndexFocused = f20_arg0.properties.attachIndex
if f20_arg0.properties.weaponIndex then
local f20_local2 = f0_local6( f20_arg0 )
f20_local2.name = "refresh_info_pane"
f20_local2.dispatchChildren = true
f20_local2.weaponIndex = f20_arg0.properties.weaponIndex
f20_local2.selection_id = f20_arg0.id
f20_local2.immediate = true
f20_arg0:dispatchEventToRoot( f20_local2 )
end
f20_arg0:processEvent( {
name = "update_restriction_icon"
} )
if MatchRules.AllowCustomClasses( f20_local0.classLocation ) then
if f20_arg0.restricted then
f20_arg0:dispatchEventToRoot( {
name = "show_class_restrictions_warning",
immediate = true
} )
else
f20_arg0:dispatchEventToRoot( {
name = "hide_class_restrictions_warning",
immediate = true
} )
end
end
f20_arg0:dispatchEventToRoot( {
name = "collapse_info_column",
immediate = true
} )
f20_arg0:dispatchEventToRoot( {
name = "show_character_image",
immediate = true
} )
end
if f18_arg4 then
f18_local7 = GenericButtonSettings.Variants.Info
if not f18_local7 then
else
f18_local6.variant = f18_local7
f18_local6.button_text = f18_arg3
f18_local6.button_display_func = f18_arg4
f18_local6.text_align_without_content = LUI.Alignment.Left
f18_local6.text_padding_without_content = f18_local1
f18_local7 = CoD.TextSettings.SmallFont.Height
local f18_local8
if f18_arg1 then
f18_local8 = RecapLayout.GridVSlim
if not f18_local8 then
else
f18_local6.y_offset = 0.5 * (f18_local7 - f18_local8)
f18_local6.text_default_color = Colors.cac_label_text
if f18_arg5 then
f18_local7 = Colors.cac_label_text
if not f18_local7 then
else
f18_local6.text_focus_color = f18_local7
if f18_arg5 then
f18_local7 = Colors.cac_label_text
if not f18_local7 then
else
f18_local6.text_lock_color = f18_local7
f18_local6.text_align_with_content = LUI.Alignment.Left
f18_local6.text_padding_with_content = f18_local1
f18_local6.label_align = LUI.Alignment.Left
f18_local6.content_margin = -(f18_local1 + f18_local3 + 2 * f18_local2 + RecapLayout.GridHGutter)
f18_local6.content_width = f18_local0
f18_local6.content_default_color = Colors.generic_button_content_focus_color
if f18_arg5 then
f18_local7 = Colors.generic_button_content_focus_color
if not f18_local7 then
else
f18_local6.content_focus_color_without_bg = f18_local7
if f18_arg5 then
f18_local7 = Colors.generic_button_content_focus_color
if not f18_local7 then
else
f18_local6.content_lock_color = f18_local7
f18_local4 = f18_local4( self, f18_local6 )
if Engine.InFrontend() then
f18_local4:registerEventHandler( "button_lock", function ( element, event )
element:dispatchEventToRoot( {
name = "lock_recap"
} )
element:animateToState( "locked" )
end )
f18_local4:addEventHandler( "restore_focus", function ( f22_arg0, f22_arg1 )
local f22_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( f22_arg0 )
f22_arg0:dispatchEventToRoot( {
name = "unlock_recap"
} )
f22_arg0:dispatchEventToRoot( {
name = "add_button_helper_text",
button_ref = "button_alt1",
helper_text = Engine.Localize( "@LUA_MENU_CLEAR" ),
side = "left",
immediate = true,
clickable = true
} )
local f22_local1 = nil
if f22_local0 and f22_local0.squadLocation == "squadMembers" then
f22_arg0:dispatchEventToRoot( {
name = "add_button_helper_text",
button_ref = "button_alt2",
helper_text = Engine.Localize( "@LUA_MENU_OPERATIONS" ),
side = "left",
immediate = true,
clickable = true
} )
f22_local1 = "@LUA_MENU_MP_LB_HELPER_TEXT"
else
f22_local1 = "@LUA_MENU_MP_RANDOMIZE_LOADOUT"
end
if LUI.mp_menus.LoadoutBuilder.IsLoadoutBuilderEnabled() then
local f22_local2 = LUI.mp_menus.LoadoutBuilder.IsLoadoutBuilderButtonAnimEnabled()
f22_arg0:dispatchEventToRoot( {
name = "add_button_helper_text",
button_ref = "button_start",
helper_text = Engine.Localize( f22_local1 ),
side = "left",
immediate = true,
clickable = true,
useAnimIntro = f22_local2,
flash = f22_local2
} )
end
f22_arg0:animateToState( "default" )
end )
f18_local4:registerAnimationState( "locked", {
alphaMultiplier = 2.63
} )
if f18_arg3 == Engine.Localize( "@MENU_STRIKE_PACKAGE_CAPS" ) then
f18_local4:registerEventHandler( "cac_set_slot", function ( element, event )
local f23_local0 = f0_local10()
local f23_local1 = element
local f23_local2 = element.processEvent
local f23_local3 = {}
local f23_local4
if f23_local0 then
f23_local4 = "disable"
if not f23_local4 then
else
f23_local3.name = f23_local4
f23_local2( f23_local1, f23_local3 )
end
end
f23_local4 = "enable"
end )
end
end
f18_local4:registerAnimationState( "default", {
topAnchor = true,
bottomAnchor = true,
leftAnchor = true,
rightAnchor = false,
top = 0,
left = 0,
bottom = 0,
right = f18_local0,
alpha = 1,
alphaMultiplier = 1
} )
f18_local4:animateToState( "default" )
if f18_arg3 and f18_arg4 then
self = f0_local7( true )
self:registerAnimationState( "default", {
topAnchor = true,
bottomAnchor = true,
leftAnchor = true,
rightAnchor = false,
top = 0,
left = f18_local1 + f18_local3 + f18_local2,
bottom = 0,
width = RecapLayout.GridHGutter
} )
self:animateToState( "default" )
f18_local4:addElement( self )
end
if Engine.IsConsoleGame() == false and Engine.InFrontend() == false then
f18_local4.m_ignoreMouseFocus = true
end
if f18_arg6 then
self = LUI.UIImage.new( {
rightAnchor = true,
leftAnchor = false,
topAnchor = false,
bottomAnchor = true,
right = 0,
bottom = 2,
width = 32,
height = 32,
material = RegisterMaterial( "icon_new_3" ),
alpha = 0
} )
self.id = "weapon_restriction_icon"
self:registerAnimationState( "visible", {
alpha = 1
} )
self:setPriority( 1 )
f18_local6 = function ( f24_arg0, f24_arg1 )
if f18_arg6( f24_arg0 ) then
f24_arg0:animateToState( "visible" )
f18_local4.restricted = true
else
f24_arg0:animateToState( "default" )
f18_local4.restricted = false
end
if f24_arg1.resetSelected then
if f18_local4.restricted then
f24_arg0:dispatchEventToRoot( {
name = "show_class_restrictions_warning",
immediate = true
} )
else
f24_arg0:dispatchEventToRoot( {
name = "hide_class_restrictions_warning",
immediate = true
} )
end
end
end
self:registerEventHandler( "update_cac_info_panel", f18_local6 )
self:registerEventHandler( "update_restriction_icon", f18_local6 )
f18_local4:addElement( self )
end
if f18_arg7 and Engine.InFrontend() then
self = LUI.UIImage.new( {
rightAnchor = true,
leftAnchor = false,
topAnchor = false,
bottomAnchor = true,
right = 0,
bottom = 2,
width = 32,
height = 32,
material = RegisterMaterial( "icon_new_2" ),
alpha = 0
} )
self.id = "bnt_new_item_icon"
self:registerAnimationState( "visible", {
alpha = 1
} )
self:setPriority( 1 )
f18_local6 = function ( f25_arg0, f25_arg1 )
if f18_arg7( f25_arg0 ) then
f25_arg0:animateToState( "visible" )
else
f25_arg0:animateToState( "default" )
end
end
self:registerEventHandler( "menu_create", f18_local6 )
self:registerEventHandler( "refresh_new_icons", f18_local6 )
f18_local4:addElement( self )
end
return f18_local4
end
end
f18_local7 = Colors.cac_button
end
end
f18_local7 = nil
end
end
f18_local7 = nil
end
end
f18_local7 = nil
end
end
f18_local8 = RecapLayout.GridVTall
end
end
f18_local7 = GenericButtonSettings.Variants.Plain
end
end
f18_local7 = 0
end
local f0_local12 = function ( f26_arg0, f26_arg1, f26_arg2, f26_arg3 )
local self = LUI.UIHorizontalList.new()
if Engine.InFrontend() then
LUI.UIHorizontalList.SetNoWrap( self, true )
if f26_arg2 then
self.updateNavigation = function ( f27_arg0 )
LUI.UIHorizontalList.UpdateNavigation( f27_arg0 )
f26_arg2( f27_arg0 )
end
end
else
self.updateNavigation = function ()
end
end
self.id = "row_" .. f26_arg0
self:registerAnimationState( "default", {
topAnchor = true,
bottomAnchor = false,
leftAnchor = true,
rightAnchor = true,
top = 0,
left = 0,
right = 0,
bottom = f26_arg1
} )
self:registerAnimationState( "expanded", {
topAnchor = true,
bottomAnchor = false,
leftAnchor = true,
rightAnchor = true,
top = 0,
left = 0,
right = 0,
bottom = f26_arg1 + Cac.Layout.SpecialistStreak.row_offset
} )
self:animateToState( "default" )
self:makeFocusable()
for f26_local4, f26_local5 in ipairs( f26_arg3 ) do
if f26_local4 > 1 then
self:addElement( f0_local7() )
end
self:addElement( f26_local5 )
end
return self
end
local f0_local13 = function ( f29_arg0 )
local f29_local0 = {
"@MENU_PRIMARY_CAPS",
"@MENU_SECONDARY_CAPS"
}
local f29_local1 = {
3,
2
}
local f29_local2 = Engine.Localize( f29_local0[f29_arg0 + 1] )
local f29_local3 = f0_local11( f29_local1[f29_arg0 + 1], false, function ( f30_arg0, f30_arg1 )
local f30_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( f30_arg0 )
local f30_local1 = f0_local6( f30_arg0 )
f30_local1.itemIndex = f29_arg0
f30_local1.titleBarText = f29_local2
local f30_local2 = Cac.GetWeaponClass( Cac.GetWeapon( f30_arg1.controller, f30_local1.squadLocation, f30_local1.squadMemberIndex, f30_local1.classLocation, f30_local1.slot, f29_arg0 ) )
local f30_local3 = Cac.GetWeapon( f30_arg1.controller, f30_local1.squadLocation, f30_local1.squadMemberIndex, f30_local1.classLocation, f30_local1.slot, f29_arg0 )
f30_local0.defaultFocus = {}
local f30_local4 = f30_local0.defaultFocus
local f30_local5 = #f30_local0.defaultFocus + 1
local f30_local6
if f30_local3 ~= "iw6_knifeonly" and f30_local2 ~= "" then
f30_local6 = f30_local2
else
f30_local6 = false
end
f30_local4[f30_local5] = f30_local6
f30_local4 = Cac.EditPopupButtonsFactory
f30_local5 = Cac.GetWeaponCategoryNameCaps
f30_local6 = Cac.EditChooseWeaponTypeAction
local f30_local7 = Cac.GetWeaponTypes( f29_arg0 == 0 )
local f30_local8 = f30_local2
local f30_local9 = Cac.GetItemClassDescriptions
local f30_local10 = nil
local f30_local11 = f30_local3
local f30_local12 = Cac.IsAbilityPickedBySlotName( f30_arg1.controller, f30_local1.squadLocation, f30_local1.squadMemberIndex, f30_local1.classLocation, f30_local1.slot, "Elite", "specialty_twoprimaries", "abilitiesPicked" )
if f30_local12 then
f30_local12 = f29_arg0 == 1
end
f30_local1.buttonFeeder = f30_local4( f30_local5, f30_local6, f30_local7, f30_local8, f30_local9, f30_local10, f30_local11, f30_local12, Cac.GetWeapon( f30_arg1.controller, f30_local1.squadLocation, f30_local1.squadMemberIndex, f30_local1.classLocation, f30_local1.slot, 1 - f29_arg0 ), "cac_edit_main" )
f30_local1.checkRestriction = function ( f31_arg0 )
if MatchRules.AllowCustomClasses( f30_local1.classLocation ) then
local f31_local0, f31_local1 = Cac.SafeGetMatchRule( "commonOption", "weaponClassRestricted", f31_arg0 )
if f31_local0 then
local f31_local2 = f31_local1
end
return f31_local2 or Cac.CheckWeaponTypeRestrictions( f31_arg0, f30_arg1.controller )
else
end
end
f30_local1.restrictType = "weaponRestricted"
f30_local1.openMenuOnClose = f30_local1
f30_local1.openMenuOnClose.menu = "cac_edit_popup_main"
LUI.FlowManager.RequestPopupMenu( element, "cac_edit_popup_main", true, f30_arg1.controller, false, f30_local1 )
end, f29_local2, function ( f32_arg0, f32_arg1 )
local f32_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( f32_arg0 )
if not f32_local0.controller then
return ""
end
local f32_local1 = Cac.GetWeapon( f32_local0.controller, f32_local0.squadLocation, f32_local0.memberIndex, f32_local0.loadoutLocation, f32_local0.loadoutSlot, f29_arg0 )
if not Engine.InFrontend() then
f32_local1 = f0_local1( f32_local1, f29_arg0, f32_local0.controller )
end
return Cac.GetWeaponName( f32_local1 )
end, true, function ( f33_arg0 )
local f33_local0, f33_local1, f33_local2 = nil
local f33_local3 = LUI.FlowManager.GetMenuScopedDataFromElement( f33_arg0 )
if MatchRules.AllowCustomClasses( f33_local3.loadoutLocation ) then
local f33_local4 = Cac.GetWeapon( f33_local3.controller, f33_local3.squadLocation, f33_local3.memberIndex, f33_local3.loadoutLocation, f33_local3.loadoutSlot, f29_arg0 )
local f33_local5 = false
if f33_local4 ~= "none" and f33_local4 ~= "iw6_knifeonly" then
local f33_local6, f33_local7, f33_local8 = Cac.SafeGetMatchRule( "commonOption", "weaponClassRestricted", Cac.GetWeaponClass( f33_local4 ) )
f33_local2 = f33_local8
f33_local5 = f33_local6 and f33_local7
end
local f33_local9, f33_local6, f33_local7 = Cac.SafeGetMatchRule( "commonOption", "weaponRestricted", f33_local4 )
f33_local2 = f33_local7
return f33_local9 and f33_local6 or f33_local5
else
end
end, function ( f34_arg0 )
local f34_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( f34_arg0 )
if f34_local0.exclusiveController then
if f29_arg0 == Cac.Indices.Weapons.Primary then
return Cac.AnyUnseenMDLCItems( f34_local0.exclusiveController, {
"Weapon_Primary"
} )
else
return Cac.AnyUnseenMDLCItems( f34_local0.exclusiveController, {
"Weapon_Secondary"
} )
end
else
end
end )
local f29_local4 = "edit_weapon_"
local f29_local5
if f29_arg0 == Cac.Indices.Weapons.Primary then
f29_local5 = "primary"
if not f29_local5 then
else
f29_local3.id = f29_local4 .. f29_local5
f29_local3.properties.weaponIndex = f29_arg0
f29_local3:registerEventHandler( "update_cac_info_panel", MBh.EmitEvent( "content_refresh" ) )
f29_local3:registerEventHandler( "second_primary_focus", function ( element, event )
if f29_arg0 == 1 then
element:processEvent( {
name = "gain_focus"
} )
end
end )
f29_local3:addElement( f0_local9( 0, 10, 128, 64, function ( f36_arg0, f36_arg1 )
local f36_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( f29_local3 )
local f36_local1 = Cac.GetWeapon( f36_local0.controller, f36_local0.squadLocation, f36_local0.memberIndex, f36_local0.loadoutLocation, f36_local0.loadoutSlot, f29_arg0 )
if not Engine.InFrontend() then
f36_local1 = f0_local1( f36_local1, f29_arg0, f36_local0.controller )
end
local f36_local2 = Cac.GetWeaponImage( f36_local1, f29_arg0 )
if f36_local1 == "none" and (f36_arg1.name == "button_lock" or f36_arg1.name == "button_over" or f36_arg1.resetSelected == f29_local3.id) then
f36_local2 = f36_local2 .. "_black"
end
return {
material = RegisterMaterial( f36_local2 )
}
end, true ) )
if Engine.InFrontend() then
local self = LUI.UIImage.new()
self.id = "weapon_new_icon"
self:registerAnimationState( "default", {
leftAnchor = true,
rightAnchor = false,
topAnchor = false,
bottomAnchor = true,
left = 0,
bottom = 2,
width = 32,
height = 32,
material = RegisterMaterial( "icon_perks_overkill" ),
red = Colors.yellow.r,
green = Colors.yellow.g,
blue = Colors.yellow.b,
alpha = 0
} )
self:registerAnimationState( "visible", {
alpha = 1
} )
self:animateToState( "default" )
self:registerEventHandler( "update_cac_info_panel", function ( element, event )
local f37_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( element )
if Cac.IsAbilityPickedBySlotName( f37_local0.controller, f37_local0.squadLocation, f37_local0.memberIndex, f37_local0.loadoutLocation, f37_local0.loadoutSlot, "Elite", "specialty_twoprimaries", "abilitiesPicked" ) and Cac.IsWeaponClassSecondary( Cac.GetWeaponClass( Cac.GetWeapon( f37_local0.controller, f37_local0.squadLocation, f37_local0.memberIndex, f37_local0.loadoutLocation, f37_local0.loadoutSlot, f29_arg0 ) ), true ) and f29_arg0 == 1 then
element:animateToState( "visible" )
else
element:animateToState( "default" )
end
end )
f29_local3:addElement( self )
end
return f29_local3
end
end
f29_local5 = "secondary"
end
local f0_local14 = function ()
local f38_local0 = f0_local11( 1, true, function ( f39_arg0, f39_arg1 )
local f39_local0 = f0_local6( f39_arg0 )
local f39_local1 = Cac.GetWeapon( f39_local0.controller, f39_local0.squadLocation, f39_local0.squadMemberIndex, f39_local0.classLocation, f39_local0.slot, Cac.Indices.Weapons.Primary )
if IsPublicMatch() then
Cac.UpdateCamoGoldChallenge( f39_local0.controller, f39_local1, true )
end
f39_local0.itemIndex = Cac.Indices.Weapons.Primary
f39_local0.itemTypeString = Engine.Localize( "@LUA_MENU_CHOOSE_CAMO_CAPS" )
f39_local0.ImageFunction = Cac.GetCamoImage
f39_local0.ItemGetFunction = Cac.GetCamo
f39_local0.ItemSetFunction = Cac.SetWeaponCamo
f39_local0.itemList = Cac.GetCamoList( f39_local0.controller, f39_local1 )
f39_local0.ItemGetNameFunction = Cac.GetCamoName
f39_local0.ImageDimensions = Cac.Layout.ChooseCamoIcon
f39_local0.selection_id = "edit_weapon_primary_camo"
f39_local0.scrollBar = true
f39_local0.elementsPerRow = 5
f39_local0.customWidth = 720
LUI.FlowManager.RequestPopupMenu( f39_arg0, "cac_edit_choose_image_popup", true, f39_arg1.controller, false, f39_local0 )
end, nil, nil, true, nil, function ( f40_arg0 )
local f40_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( f40_arg0 )
if f40_local0.exclusiveController then
return Cac.AnyUnseenMDLCItems( f40_local0.exclusiveController, {
"Camo"
} )
else
end
end )
f38_local0.id = "edit_weapon_primary_camo"
f38_local0.properties.weaponIndex = Cac.Indices.Weapons.Primary
f38_local0:addElement( f0_local9( 0, 10, 48, 48, function ( f41_arg0, f41_arg1 )
local f41_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( f38_local0 )
local f41_local1 = Cac.GetCamo( f41_local0.controller, f41_local0.squadLocation, f41_local0.memberIndex, f41_local0.loadoutLocation, f41_local0.loadoutSlot, Cac.Indices.Weapons.Primary )
local f41_local2 = Cac.GetCamoImage( f41_local1 )
local f41_local3 = 0.8
if f41_local1 == "none" and (f41_arg1.name == "button_lock" or f41_arg1.name == "button_over" or f41_arg1.resetSelected == f38_local0.id) then
f41_local2 = f41_local2 .. "_black"
end
if not Engine.InFrontend() then
f41_local2 = f0_local2( f41_local2, f41_local0.controller )
end
return {
material = RegisterMaterial( f41_local2 ),
alpha = f41_local3
}
end, true, nil, true ) )
return f38_local0
end
local f0_local15 = function ( f42_arg0, f42_arg1 )
local f42_local0 = "edit_weapon_"
local f42_local1
if f42_arg0 then
f42_local1 = "secondary"
if not f42_local1 then
else
f42_local0 = f42_local0 .. f42_local1 .. "_attach" .. f42_arg1 + 1
if f42_arg0 then
f42_local1 = Cac.Indices.Weapons.Secondary
if not f42_local1 then
else
local f42_local2 = nil
local f42_local3 = f0_local11( 1, true, function ( f43_arg0, f43_arg1 )
local f43_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( f43_arg0 )
local f43_local1 = Cac.IsAbilityPickedBySlotName( f43_local0.controller, f43_local0.squadLocation, f43_local0.memberIndex, f43_local0.loadoutLocation, f43_local0.loadoutSlot, "Equipment", "specialty_extra_attachment", "abilitiesPicked" )
if not (f42_local1 ~= Cac.Indices.Weapons.Primary or not f43_local1 and f42_arg1 >= 2) or not (f42_local1 ~= Cac.Indices.Weapons.Secondary or not f43_local1 and f42_arg1 >= 1) or f42_arg1 < #Cac.GetAttachmentTypeList( Cac.GetWeapon( f43_local0.controller, f43_local0.squadLocation, f43_local0.memberIndex, f43_local0.loadoutLocation, f43_local0.loadoutSlot, f42_local1 ) ) then
local f43_local2 = f0_local6( f43_arg0 )
f43_local2.weaponIndex = f42_local1
f43_local2.attachIndex = f42_arg1
LUI.FlowManager.RequestPopupMenu( f43_arg0, "cac_edit_weapon_attach_choose_main", true, f43_arg1.controller, false, f43_local2 )
f43_arg0:dispatchEventToRoot( {
name = "change_attachment_lock",
weaponIndex = f42_local1,
attachIndex = Cac.GetAttachmentClassInUse( f43_local0.controller, f43_local0.squadLocation, f43_local0.memberIndex, f43_local0.loadoutLocation, f43_local0.loadoutSlot, f42_local1, Cac.GetAttachmentType( Cac.GetAttachment( f43_local0.controller, f43_local0.squadLocation, f43_local0.memberIndex, f43_local0.loadoutLocation, f43_local0.loadoutSlot, f42_local1, f42_arg1 ) ) )
} )
end
end, nil, nil, f42_arg0, function ( f44_arg0 )
local f44_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( f44_arg0 )
if MatchRules.AllowCustomClasses( f44_local0.loadoutLocation ) then
local f44_local1, f44_local2, f44_local3 = nil
local f44_local4 = Cac.GetAttachment( f44_local0.controller, f44_local0.squadLocation, f44_local0.memberIndex, f44_local0.loadoutLocation, f44_local0.loadoutSlot, f42_local1, f42_arg1 )
local f44_local5 = false
if f44_local4 ~= "none" then
local f44_local6, f44_local7, f44_local8 = Cac.SafeGetMatchRule( "commonOption", "attachmentClassRestricted", Cac.GetAttachmentType( f44_local4 ) )
f44_local3 = f44_local8
f44_local5 = f44_local6 and f44_local7
end
local f44_local9, f44_local6, f44_local7 = Cac.SafeGetMatchRule( "commonOption", "attachmentRestricted", f44_local4 )
f44_local3 = f44_local7
return f44_local9 and f44_local6 or f44_local5
else
end
end )
f42_local3.id = f42_local0
f42_local3.properties = f42_local3.properties or {}
f42_local3.properties.weaponIndex = f42_local1
f42_local3.properties.attachIndex = f42_arg1
f42_local3.properties.secondaryActionFunc = f42_local3.m_eventHandlers.button_action
f42_local3:addEventHandler( "gain_focus", function ( f45_arg0, f45_arg1 )
local f45_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( f45_arg0 )
local f45_local1 = Cac.GetWeapon( f45_local0.controller, f45_local0.squadLocation, f45_local0.squadMemberIndex, f45_local0.classLocation, f45_local0.slot, f42_local1 )
local f45_local2 = Cac.GetWeaponClass( f45_local1 )
local f45_local3 = Cac.IsAbilityPickedBySlotName( f45_local0.controller, f45_local0.squadLocation, f45_local0.memberIndex, f45_local0.loadoutLocation, f45_local0.loadoutSlot, "Equipment", "specialty_extra_attachment", "abilitiesPicked" )
if not (f45_local2 ~= "weapon_projectile" and f45_local1 ~= "none" and f45_local1 ~= "iw6_knifeonly" and (f45_local3 or f42_arg1 <= 1 or f42_local1 ~= 0)) or not (f45_local3 or f42_arg1 <= 0 or f42_local1 ~= 1) or #Cac.GetAttachmentTypeList( f45_local1 ) <= f42_arg1 then
f45_arg0.m_eventHandlers.button_action = function ( f46_arg0, f46_arg1 )
Engine.PlaySound( CoD.SFX.DenySelect )
end
else
f45_arg0.m_eventHandlers.button_action = f42_local3.properties.secondaryActionFunc
end
end )
f42_local3:registerEventHandler( "update_cac_info_panel", function ( element, event )
if Engine.InFrontend() then
local f47_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( element )
if event.grenadeConflict then
f47_local0.attachConflict = false
end
local f47_local1 = Cac.IsAbilityPickedBySlotName( f47_local0.controller, f47_local0.squadLocation, f47_local0.memberIndex, f47_local0.loadoutLocation, f47_local0.loadoutSlot, "Equipment", "specialty_extra_attachment", "abilitiesPicked" )
if not (f42_local1 ~= Cac.Indices.Weapons.Primary or not f47_local1 and f42_arg1 >= 2) or f42_local1 == Cac.Indices.Weapons.Secondary and (f47_local1 or f42_arg1 < 1) then
local f47_local2 = Cac.GetAttachment( f47_local0.controller, f47_local0.squadLocation, f47_local0.memberIndex, f47_local0.loadoutLocation, f47_local0.loadoutSlot, f42_local1, f42_arg1 )
if event.grenadeConflict then
if f47_local2 == "shotgun" or f47_local2 == "gl" then
Cac.SetAttachment( f47_local0.controller, f47_local0.squadLocation, f47_local0.memberIndex, f47_local0.loadoutLocation, f47_local0.loadoutSlot, f42_local1, f42_arg1, "none" )
f47_local2 = "none"
element:dispatchEventToRoot( {
name = "update_restriction_icon"
} )
end
elseif f47_local2 == "shotgun" or f47_local2 == "gl" then
f47_local0.attachConflict = true
elseif f47_local0.attachConflict then
Cac.SetFirstUnlockedGrenade( f47_local0.controller, f47_local0.squadLocation, f47_local0.memberIndex, f47_local0.loadoutLocation, f47_local0.loadoutSlot, 0 )
end
end
end
end )
f42_local3:registerEventHandler( "third_attach_focus", function ( element, event )
if f42_arg1 == 2 then
element:processEvent( {
name = "gain_focus"
} )
end
end )
f42_local3:registerEventHandler( "change_attachment_lock", function ( element, event )
local f49_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( element )
local f49_local1 = Cac.GetFirstOpenAttachment( f49_local0.controller, f49_local0.squadLocation, f49_local0.memberIndex, f49_local0.loadoutLocation, f49_local0.loadoutSlot, f42_local1 )
if event.attachIndex then
if event.attachIndex == f42_arg1 and event.weaponIndex == element.properties.weaponIndex then
element:processEvent( {
name = "button_lock",
dispatchChildren = true
} )
else
element:animateToState( "default" )
element:processEvent( {
name = "button_unlock",
graphicsOnly = true
} )
end
elseif f49_local1 == f42_arg1 and event.weaponIndex == element.properties.weaponIndex then
element:processEvent( {
name = "button_lock",
dispatchChildren = true
} )
else
element:animateToState( "default" )
element:processEvent( {
name = "button_unlock",
graphicsOnly = true
} )
end
end )
f42_local3:registerEventHandler( "unlock_attachments", function ( element, event )
element:processEvent( {
name = "button_unlock"
} )
end )
local f42_local4 = function ( f51_arg0, f51_arg1 )
local f51_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( f42_local3 )
local f51_local1 = nil
local f51_local2 = 1
local f51_local3
if Engine.InFrontend() or Engine.GetDvarString( "g_gametype" ) ~= gun then
f51_local3 = false
else
f51_local3 = true
end
local f51_local4 = f51_local3 or Cac.IsAbilityPickedBySlotName( f51_local0.controller, f51_local0.squadLocation, f51_local0.memberIndex, f51_local0.loadoutLocation, f51_local0.loadoutSlot, "Equipment", "specialty_extra_attachment", "abilitiesPicked" )
if not (f51_local4 or f42_arg1 <= 1 or f42_local1 ~= 0) or not f51_local4 and f42_arg1 > 0 and f42_local1 == 1 then
f51_local1 = "icon_locked"
f51_local2 = 0.07
if f51_arg1.name == "button_lock" or f51_arg1.name == "button_over" or f51_arg1.resetSelected == f42_local3.id then
f51_local1 = "icon_locked_black"
f51_local2 = 1
end
else
local f51_local5 = Cac.GetAttachment( f51_local0.controller, f51_local0.squadLocation, f51_local0.memberIndex, f51_local0.loadoutLocation, f51_local0.loadoutSlot, f42_local1, f42_arg1 )
local f51_local6 = Cac.GetWeapon( f51_local0.controller, f51_local0.squadLocation, f51_local0.memberIndex, f51_local0.loadoutLocation, f51_local0.loadoutSlot, f42_local1 )
local f51_local7 = Cac.GetWeaponClass( f51_local6 )
if not Engine.InFrontend() then
f51_local5 = f0_local3( f51_local5, f42_arg1, f42_local1, f51_local0.controller )
end
f51_local1 = Cac.GetAttachmentImage( f51_local5, f51_local6, f42_local1, f42_arg1 + 1 )
if not (f51_local7 ~= "weapon_projectile" and f51_local6 ~= "none" and f51_local6 ~= "iw6_knifeonly" and (f51_local4 or f42_arg1 <= 1 or f42_local1 ~= 0)) or not (f51_local4 or f42_arg1 <= 0 or f42_local1 ~= 1) or #Cac.GetAttachmentTypeList( f51_local6 ) <= f42_arg1 then
f51_local1 = "icon_locked"
f51_local2 = 0.07
if f51_arg1.name == "button_lock" or f51_arg1.name == "button_over" or f51_arg1.resetSelected == f42_local3.id then
f51_local1 = "icon_locked_black"
f51_local2 = 1
end
elseif f51_local5 == "none" then
local f51_local8 = f51_arg0:getParent()
if f51_arg1.name == "button_lock" or f51_arg1.name == "button_over" or f51_arg1.resetSelected == f42_local3.id or f51_arg1.name == "update_cac_info_panel" and (f51_arg0.locked or f51_local8:isInFocus()) then
f51_local1 = f51_local1 .. "_black"
f51_local2 = 1
else
f51_local2 = 0.07
end
end
end
return {
material = RegisterMaterial( f51_local1 ),
alpha = f51_local2
}
end
local f42_local5
if f42_arg0 then
f42_local5 = 10
if not f42_local5 then
else
f42_local3:addElement( f0_local9( 0, f42_local5, 48, 48, f42_local4, true ) )
if Engine.InFrontend() then
local self = LUI.UIImage.new()
self.id = "attachment_new_icon"
self:registerAnimationState( "default", {
leftAnchor = true,
rightAnchor = false,
topAnchor = false,
bottomAnchor = true,
left = 0,
bottom = 2,
width = 32,
height = 32,
material = RegisterMaterial( "icon_perks_extra_attach" ),
red = Colors.yellow.r,
green = Colors.yellow.g,
blue = Colors.yellow.b,
alpha = 0
} )
self:registerAnimationState( "visible", {
alpha = 1
} )
self:animateToState( "default" )
self:registerEventHandler( "update_cac_info_panel", function ( element, event )
local f52_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( element )
local f52_local1 = Cac.IsAbilityPickedBySlotName( f52_local0.controller, f52_local0.squadLocation, f52_local0.memberIndex, f52_local0.loadoutLocation, f52_local0.loadoutSlot, "Equipment", "specialty_extra_attachment", "abilitiesPicked" )
if (not (not f52_local1 or f42_arg1 <= 1 or f42_local1 ~= 0) or f52_local1 and f42_arg1 > 0 and f42_local1 == 1) and Cac.GetAttachment( f52_local0.controller, f52_local0.squadLocation, f52_local0.memberIndex, f52_local0.loadoutLocation, f52_local0.loadoutSlot, f42_local1, f42_arg1 ) == "none" then
element:animateToState( "visible" )
else
element:animateToState( "default" )
end
end )
f42_local3:addElement( self )
end
return f42_local3
end
end
f42_local5 = 0
end
end
f42_local1 = Cac.Indices.Weapons.Primary
end
end
f42_local1 = "primary"
end
local f0_local16 = function ()
local f53_local0 = f0_local11( 1, true, function ( f54_arg0, f54_arg1 )
local f54_local0 = f0_local6( f54_arg0 )
f54_local0.itemIndex = Cac.Indices.Weapons.Primary
f54_local0.itemList = Cac.GetReticleList( f54_local0.controller, Cac.GetAttachmentWithReticles( f54_local0.controller, f54_local0.squadLocation, f54_local0.squadMemberIndex, f54_local0.classLocation, f54_local0.slot, f54_local0.itemIndex ) )
f54_local0.itemTypeString = Engine.Localize( "@LUA_MENU_CHOOSE_RETICLE_CAPS" )
f54_local0.ImageFunction = Cac.GetReticleImage
f54_local0.ItemGetFunction = Cac.GetReticle
f54_local0.ItemSetFunction = Cac.SetWeaponReticle
f54_local0.ItemGetNameFunction = Cac.GetReticleName
f54_local0.ImageDimensions = Cac.Layout.ChooseReticleIcon
f54_local0.selection_id = "edit_weapon_primary_reticle"
f54_local0.scrollBar = true
f54_local0.elementsPerRow = 5
f54_local0.customWidth = 720
LUI.FlowManager.RequestPopupMenu( f54_arg0, "cac_edit_choose_image_popup", true, f54_arg1.controller, false, f54_local0 )
end )
f53_local0.id = "edit_weapon_primary_reticle"
f53_local0.properties.weaponIndex = Cac.Indices.Weapons.Primary
f53_local0.properties.secondaryActionFunc = f53_local0.m_eventHandlers.button_action
f53_local0:addEventHandler( "gain_focus", function ( f55_arg0, f55_arg1 )
local f55_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( f55_arg0 )
if Cac.GetWeapon( f55_local0.controller, f55_local0.squadLocation, f55_local0.squadMemberIndex, f55_local0.classLocation, f55_local0.slot, Cac.Indices.Weapons.Primary ) == "iw6_knifeonly" then
f55_arg0.m_eventHandlers.button_action = function ( f56_arg0, f56_arg1 )
Engine.PlaySound( CoD.SFX.DenySelect )
end
else
f55_arg0.m_eventHandlers.button_action = f53_local0.properties.secondaryActionFunc
end
end )
f53_local0:addElement( f0_local9( 0, 0, 48, 48, function ( f57_arg0, f57_arg1 )
local f57_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( f53_local0 )
local f57_local1 = Cac.GetReticle( f57_local0.controller, f57_local0.squadLocation, f57_local0.memberIndex, f57_local0.loadoutLocation, f57_local0.loadoutSlot, Cac.Indices.Weapons.Primary )
local f57_local2 = Cac.GetReticleImage( f57_local1 )
local f57_local3 = Cac.GetWeapon( f57_local0.controller, f57_local0.squadLocation, f57_local0.memberIndex, f57_local0.loadoutLocation, f57_local0.loadoutSlot, Cac.Indices.Weapons.Primary )
local f57_local4 = 1
if f57_local3 == "iw6_knifeonly" then
f57_local2 = "icon_locked"
f57_local4 = 0.07
if f57_arg1.name == "button_lock" or f57_arg1.name == "button_over" or f57_arg1.resetSelected == f53_local0.id then
f57_local2 = "icon_locked_black"
f57_local4 = 1
end
elseif f57_local1 == "none" and (f57_arg1.name == "button_lock" or f57_arg1.name == "button_over" or f57_arg1.resetSelected == f53_local0.id) then
f57_local2 = f57_local2 .. "_black"
end
if not Engine.InFrontend() then
f57_local2 = f0_local4( f57_local2, f57_local0.controller )
end
return {
material = RegisterMaterial( f57_local2 ),
alpha = f57_local4
}
end, true ) )
return f53_local0
end
local f0_local17 = function ( f58_arg0 )
local f58_local0 = function ( f59_arg0, f59_arg1 )
local f59_local0 = f0_local6( f59_arg0 )
f59_local0.itemIndex = f58_arg0
f59_local0.itemTypeString = f58_arg0 and Engine.Localize( "@MENU_LETHAL_CAPS" ) or Engine.Localize( "@LUA_MENU_TACTICAL_CAPS" )
f59_local0.disableSetDefaultFocus = false
f59_local0.selection_id = f58_arg0 and "edit_lethal" or "edit_tactical"
f59_local0.ImageFunction = Cac.GetGrenadeImage
f59_local0.ItemGetFunction = Cac.GetPerk
f59_local0.ItemSetFunction = Cac.SetPerk
f59_local0.itemList = Cac.GetGrenadeList( f58_arg0 )
f59_local0.ItemGetNameFunction = Cac.GetPerkName
f59_local0.ImageDimensions = Cac.Layout.ChooseGrenadeIcon
f59_local0.restrictType = "perkRestricted"
LUI.FlowManager.RequestPopupMenu( f59_arg0, "cac_edit_choose_image_popup", true, f59_arg1.controller, false, f59_local0 )
end
local f58_local1 = {
"@MENU_LETHAL_CAPS",
"@MENU_SPECIAL_EQUIPMENT_CAPS"
}
local f58_local2 = {
Cac.GetPrimaryGrenade,
Cac.GetSecondaryGrenade
}
local f58_local3 = f0_local11( 2, true, f58_local0, Engine.Localize( f58_local1[f58_arg0 + 1] ), nil, nil, function ( f60_arg0 )
local f60_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( f60_arg0 )
if MatchRules.AllowCustomClasses( f60_local0.loadoutLocation ) then
local f60_local1, f60_local2, f60_local3 = Cac.SafeGetMatchRule( "commonOption", "perkRestricted", Cac.GetPerk( f60_local0.controller, f60_local0.squadLocation, f60_local0.memberIndex, f60_local0.loadoutLocation, f60_local0.loadoutSlot, f58_arg0 ) )
local f60_local4 = f60_local1 and f60_local2
local f60_local5 = false
if f58_arg0 == 0 then
for f60_local14, f60_local15 in pairs( Cac.Indices.Weapons ) do
local f60_local9
if f60_local15 == Cac.Indices.Weapons.Primary then
f60_local9 = 2
if not f60_local9 then
else
for f60_local10 = 0, f60_local9, 1 do
local f60_local13 = Cac.GetAttachment( f60_local0.controller, f60_local0.squadLocation, f60_local0.memberIndex, f60_local0.loadoutLocation, f60_local0.loadoutSlot, f60_local15, f60_local10 )
if f60_local13 == "shotgun" or f60_local13 == "gl" then
f60_local1, f60_local2 = Cac.SafeGetMatchRule( "commonOption", "attachmentClassRestricted", "undermount" )
if not f60_local5 then
f60_local5 = f60_local1 and f60_local2
end
f60_local1, f60_local2 = Cac.SafeGetMatchRule( "commonOption", "attachmentRestricted", f60_local13 )
if not f60_local5 then
f60_local5 = f60_local1 and f60_local2
end
end
end
end
end
f60_local9 = 1
end
end
return f60_local4 or f60_local5
else
end
end )
local f58_local4 = "edit_"
local f58_local5
if f58_arg0 == 0 then
f58_local5 = "lethal"
if not f58_local5 then
else
f58_local3.id = f58_local4 .. f58_local5
f58_local3.properties.weaponIndex = f58_arg0
f58_local3:registerEventHandler( "update_cac_info_panel", function ( element, event )
if Engine.InFrontend() then
local f61_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( f58_local3 )
if event.attachConflict then
f61_local0.attachConflict = event.attachConflict
end
if f58_arg0 == 0 and f61_local0.attachConflict then
for f61_local1 = 0, 2, 1 do
local f61_local4 = Cac.GetAttachment( f61_local0.controller, f61_local0.squadLocation, f61_local0.memberIndex, f61_local0.loadoutLocation, f61_local0.loadoutSlot, 0, f61_local1 )
if f61_local4 == "shotgun" or f61_local4 == "gl" then
Cac.SetPerk( f61_local0.controller, f61_local0.squadLocation, f61_local0.memberIndex, f61_local0.loadoutLocation, f61_local0.loadoutSlot, 0, "specialty_null" )
break
end
end
end
end
end )
f58_local3:addElement( f0_local9( 0, 8, 40, 40, function ( f62_arg0, f62_arg1 )
local f62_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( f58_local3 )
local f62_local1 = f58_local2[f58_arg0 + 1]( f62_local0.controller, f62_local0.squadLocation, f62_local0.memberIndex, f62_local0.loadoutLocation, f62_local0.loadoutSlot, f58_arg0 )
local f62_local2 = nil
local f62_local3 = Engine.GetDvarString( "g_gametype" )
if f58_arg0 == 0 then
for f62_local12, f62_local13 in pairs( Cac.Indices.Weapons ) do
local f62_local7
if f62_local13 == Cac.Indices.Weapons.Primary then
f62_local7 = 2
if not f62_local7 then
else
for f62_local8 = 0, f62_local7, 1 do
local f62_local11 = Cac.GetAttachment( f62_local0.controller, f62_local0.squadLocation, f62_local0.memberIndex, f62_local0.loadoutLocation, f62_local0.loadoutSlot, f62_local13, f62_local8 )
if f62_local11 == "shotgun" or f62_local11 == "gl" then
f62_local2 = Cac.GetAttachmentImage( f62_local11, Cac.GetWeapon( f62_local0.controller, f62_local0.squadLocation, f62_local0.memberIndex, f62_local0.loadoutLocation, f62_local0.loadoutSlot, f62_local13 ), f62_local13, f62_local8 )
break
end
end
if f62_local2 then
end
end
end
f62_local7 = 1
end
end
if not Engine.InFrontend() then
if f0_local0( f62_local3, f62_local0.controller ) then
f62_local2 = nil
end
f62_local1 = f0_local5( f62_local1, f58_arg0, f62_local0.controller )
end
if not f62_local2 then
f62_local2 = Cac.GetGrenadeImage( Cac.StripSuffix( f62_local1, "_mp" ), f58_arg0 )
if f62_local1 == "specialty_null" and (f62_arg1.name == "button_lock" or f62_arg1.name == "button_over" or f62_arg1.resetSelected == f58_local3.id) then
f62_local2 = f62_local2 .. "_black"
end
end
return {
material = RegisterMaterial( f62_local2 )
}
end, true ) )
if Engine.InFrontend() then
local self = LUI.UIImage.new()
self.id = "grenade_new_icon_" .. f58_arg0
local f58_local7 = self
local f58_local8 = self.registerAnimationState
local f58_local9 = "default"
local f58_local10 = {
leftAnchor = true,
rightAnchor = false,
topAnchor = false,
bottomAnchor = true,
left = 0,
bottom = 2,
width = 32,
height = 32
}
local f58_local11
if f58_arg0 == Cac.Indices.Grenade.Primary then
f58_local11 = RegisterMaterial( "icon_perks_extra_lethal" )
if not f58_local11 then
else
f58_local10.material = f58_local11
f58_local10.red = Colors.yellow.r
f58_local10.green = Colors.yellow.g
f58_local10.blue = Colors.yellow.b
f58_local10.alpha = 0
f58_local8( f58_local7, f58_local9, f58_local10 )
self:registerAnimationState( "visible", {
alpha = 1
} )
self:animateToState( "default" )
self:registerEventHandler( "update_cac_info_panel", function ( element, event )
local f63_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( element )
if Cac.IsAbilityPickedBySlotName( f63_local0.controller, f63_local0.squadLocation, f63_local0.memberIndex, f63_local0.loadoutLocation, f63_local0.loadoutSlot, "Equipment", f58_arg0 and "specialty_extra_deadly" or "specialty_extra_equipment", "abilitiesPicked" ) and Cac.GetPerk( f63_local0.controller, f63_local0.squadLocation, f63_local0.memberIndex, f63_local0.loadoutLocation, f63_local0.loadoutSlot, f58_arg0 ) == "specialty_null" then
element:animateToState( "visible" )
else
element:animateToState( "default" )
end
end )
f58_local3:addElement( self )
end
end
f58_local11 = RegisterMaterial( "icon_perks_extra_tactical" )
end
return f58_local3
end
end
f58_local5 = "tactical"
end
local f0_local18 = function ( f64_arg0, f64_arg1, f64_arg2, f64_arg3, f64_arg4, f64_arg5, f64_arg6, f64_arg7 )
local f64_local0 = Engine.GetDvarString( "g_gametype" )
local f64_local1 = false
local f64_local2 = LUI.FlowManager.GetMenuScopedDataFromElement( f64_arg0 )
if not Engine.InFrontend() and f0_local0( f64_local0, f64_local2.controller ) then
f64_local1 = true
f64_arg2 = 40
f64_arg3 = 48
f64_arg4 = 1
f64_arg7 = false
end
f64_arg0:closeChildren()
local f64_local3 = 0
if f64_arg7 then
local f64_local4 = Cac.Abilities.Settings.GrabBagCapacity / Cac.CalculateAbilityCapacity( f64_local2.controller, f64_local2.squadLocation, f64_local2.memberIndex, f64_local2.loadoutLocation, f64_local2.loadoutSlot )
f64_arg2 = f64_arg2 * f64_local4
f64_arg3 = f64_arg3 * f64_local4
f64_arg4 = f64_arg4 * f64_local4
f64_arg0:registerAnimationState( "scaled", {
topAnchor = false,
bottomAnchor = false,
leftAnchor = true,
rightAnchor = true,
top = (8 - Cac.Layout.AbilitiesBar.slot_height / 2) * f64_local4,
left = 0,
right = 0,
height = Cac.Layout.AbilitiesBar.slot_height
} )
f64_arg0:animateToState( "scaled", 0 )
end
if not f64_local1 then
for f64_local15, f64_local16 in ipairs( Cac.GetAbilityTypes() ) do
for f64_local14 = 1, Cac.Abilities.Settings.AbilitiesPerCategory, 1 do
if Cac.IsAbilityPicked( f64_local2.controller, f64_local2.squadLocation, f64_local2.memberIndex, f64_local2.loadoutLocation, f64_local2.loadoutSlot, f64_local16, f64_local14 - 1, f64_arg5 ) then
local f64_local7 = Cac.GetAbilityRef( f64_local16 )
local f64_local8 = Cac.GetAbilitySlotRef( f64_local7, f64_local14 )
local f64_local9 = Cac.GetPerkImage( f64_local8 )
local f64_local10 = Cac.GetPerkCost( f64_local8 )
local self = LUI.UIElement.new( {
topAnchor = true,
bottomAnchor = false,
leftAnchor = true,
rightAnchor = false,
top = 0,
left = 0,
width = f64_arg2 * f64_local10 + f64_arg4 * math.max( 0, f64_local10 - 1 ),
height = f64_arg3
} )
f64_local3 = f64_local3 + f64_local10
self.id = f64_arg6 .. "slot_" .. f64_local3
local f64_local12 = LUI.UIImage.new( CoD.ColorizeState( Cac.Swatches.slot, {
topAnchor = true,
bottomAnchor = true,
leftAnchor = true,
rightAnchor = true,
top = 0,
bottom = 0,
left = 0,
right = 0,
material = RegisterMaterial( "white" ),
alpha = 0.05
} ) )
f64_local12:registerAnimationState( "locked", CoD.ColorizeState( Cac.Swatches.selection, {
alpha = 1
} ) )
f64_local12:registerEventHandler( "button_over", MBh.AnimateToState( "locked" ) )
f64_local12:registerEventHandler( "button_up", MBh.AnimateToState( "default" ) )
if f64_arg0.editingAbilities then
f64_local12:animateToState( "locked" )
end
f64_local12:registerEventHandler( "button_lock", function ( element, event )
f64_arg0.editingAbilities = true
element:animateToState( "locked" )
end )
f64_local12:registerEventHandler( "button_unlock", function ( element, event )
f64_arg0.editingAbilities = false
element:animateToState( "default" )
end )
self:addElement( f64_local12 )
local f64_local13 = LUI.UIImage.new( CoD.ColorizeState( Colors.white, {
material = RegisterMaterial( f64_local9 ),
topAnchor = true,
bottomAnchor = false,
leftAnchor = false,
rightAnchor = false,
top = 1,
left = -(f64_arg2 - 2) / 2,
width = f64_arg2 - 2,
height = f64_arg2 - 2
} ) )
if Engine.InFrontend() then
f64_local13:registerAnimationState( "locked", CoD.ColorizeState( Colors.black ) )
f64_local13:registerEventHandler( "button_lock", MBh.AnimateToState( "locked" ) )
f64_local13:registerEventHandler( "button_unlock", MBh.AnimateToState( "default" ) )
f64_local13:registerEventHandler( "button_over", MBh.AnimateToState( "locked" ) )
f64_local13:registerEventHandler( "button_up", MBh.AnimateToState( "default" ) )
if f64_arg0.editingAbilities then
f64_local13:animateToState( "locked" )
end
end
self:addElement( f64_local13 )
self:addElement( LUI.UIImage.new( CoD.ColorizeState( Colors.cac_ability[f64_local7], {
topAnchor = true,
bottomAnchor = false,
leftAnchor = true,
rightAnchor = true,
top = f64_arg2,
left = 0,
right = 0,
height = 5,
material = RegisterMaterial( "white" )
} ) ) )
f64_arg0:addElement( self )
end
end
end
end
local f64_local4
if f64_arg7 then
f64_local4 = Cac.CalculateAbilityCapacity( f64_local2.controller, f64_local2.squadLocation, f64_local2.memberIndex, f64_local2.loadoutLocation, f64_local2.loadoutSlot )
if not f64_local4 then
else
if f64_arg7 and f64_local4 ~= f64_local2.upperBound then
f64_local2.upperBound = f64_local4
f64_arg0:dispatchEventToRoot( {
name = "update_cac_info_panel",
controller = f64_local2.controller,
dispatchChildren = true,
resetSelected = f64_arg1.resetSelected
} )
end
for f64_local5 = f64_local3 + 1, f64_local4, 1 do
local f64_local14 = LUI.UIElement.new( {
topAnchor = true,
bottomAnchor = false,
leftAnchor = true,
rightAnchor = false,
top = 0,
left = 0,
width = f64_arg2,
height = f64_arg2
} )
f64_local14.id = f64_arg6 .. "empty_slot_" .. f64_local5
local f64_local17 = LUI.UIImage.new( CoD.ColorizeState( Cac.Swatches.slot, {
topAnchor = true,
bottomAnchor = true,
leftAnchor = true,
rightAnchor = true,
top = 0,
bottom = 0,
left = 0,
right = 0,
material = RegisterMaterial( "white" ),
alpha = 0.05
} ) )
if Engine.InFrontend() then
f64_local17:registerAnimationState( "over", CoD.ColorizeState( Cac.Swatches.slot_over, {
alpha = 0.5
} ) )
f64_local17:registerEventHandler( "button_over", MBh.AnimateToState( "over" ) )
f64_local17:registerEventHandler( "button_up", MBh.AnimateToState( "default" ) )
f64_local17:registerEventHandler( "button_over_disabled", MBh.AnimateToState( "over" ) )
f64_local17:registerEventHandler( "button_up_disabled", MBh.AnimateToState( "over" ) )
f64_local17:registerEventHandler( "button_lock", function ( element, event )
f64_arg0.editingAbilities = true
element:animateToState( "over" )
end )
f64_local17:registerEventHandler( "button_unlock", function ( element, event )
f64_arg0.editingAbilities = false
element:animateToState( "default" )
end )
if f64_arg1.selected then
f64_local17:animateToState( "over", 0 )
end
end
f64_local14:addElement( f64_local17 )
f64_arg0:addElement( f64_local14 )
end
end
end
f64_local4 = Cac.Abilities.Settings.GrabBagCapacity
end
local f0_local19 = function ()
local f69_local0 = Engine.GetDvarString( "g_gametype" )
local f69_local1 = false
local f69_local2 = f0_local11( 4, false, function ( f70_arg0, f70_arg1 )
local f70_local0 = f0_local6( f70_arg0 )
local f70_local1 = LUI.FlowManager.GetMenuScopedDataFromElement( f70_arg0 )
f70_local0.itemIndex = Cac.Indices.StreakType
f70_local0.titleBarText = Engine.Localize( "@LUA_MENU_STREAK_TYPE_CAPS" )
if not f70_local1.defaultFocus then
f70_local1.defaultFocus = {}
end
f70_local1.defaultFocus[#f70_local1.defaultFocus + 1] = Cac.GetPerk( f70_arg1.controller, f70_local0.squadLocation, f70_local0.squadMemberIndex, f70_local0.classLocation, f70_local0.slot, Cac.Indices.StreakType )
f70_local0.buttonFeeder = Cac.EditPopupButtonsFactory( Cac.GetPerkName, Cac.DefaultEditChooseStreakTypeAction, Cac.StreakTypes, Cac.GetPerk( f70_arg1.controller, f70_local0.squadLocation, f70_local0.squadMemberIndex, f70_local0.classLocation, f70_local0.slot, Cac.Indices.StreakType ), Cac.GetItemClassDescriptions, nil, nil, nil, nil, "cac_edit_main" )
f70_local0.checkRestriction = function ( f71_arg0 )
if MatchRules.AllowCustomClasses( f70_local0.classLocation ) then
local f71_local0, f71_local1, f71_local2 = Cac.SafeGetMatchRule( "commonOption", "killstreakClassRestricted", f71_arg0 )
if f71_local0 then
local f71_local3 = f71_local1
end
return f71_local3 or Cac.CheckKillstreakTypeRestrictions( f71_arg0 )
else
end
end
f70_local0.openMenuOnClose = f70_local0
f70_local0.openMenuOnClose.menu = "cac_edit_popup_main"
f70_arg0:dispatchEventToRoot( {
name = "hide_abilities_info_panel",
immediate = true
} )
LUI.FlowManager.RequestPopupMenu( element, "cac_edit_popup_main", true, f70_arg1.controller, false, f70_local0 )
end, Engine.Localize( "@MENU_STRIKE_PACKAGE_CAPS" ), function ( f72_arg0, f72_arg1 )
local f72_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( f72_arg0 )
if not Engine.InFrontend() and f0_local0( f69_local0, f72_local0.exclusiveController ) then
f69_local1 = true
end
if f69_local1 then
return ""
elseif not f72_local0.controller then
return ""
end
local f72_local1 = Cac.GetStreakType( f72_local0.controller, f72_local0.squadLocation, f72_local0.memberIndex, f72_local0.loadoutLocation, f72_local0.loadoutSlot )
if f72_local1 == "specialty_null" then
f72_local1 = "streaktype_assault"
end
return Cac.GetPerkName( f72_local1 )
end, nil, function ( f73_arg0 )
local f73_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( f73_arg0 )
if MatchRules.AllowCustomClasses( f73_local0.loadoutLocation ) then
local f73_local1 = false
local f73_local2 = true
local f73_local3 = Cac.GetStreakType( f73_local0.controller, f73_local0.squadLocation, f73_local0.memberIndex, f73_local0.loadoutLocation, f73_local0.loadoutSlot )
if f73_local3 == "specialty_null" then
f73_local3 = "streaktype_assault"
end
local f73_local4, f73_local5, f73_local6 = Cac.SafeGetMatchRule( "commonOption", "killstreakClassRestricted", f73_local3 )
local f73_local7 = f73_local4 and f73_local5
local f73_local8
if f73_local3 == "streaktype_specialist" then
f73_local8 = "perkRestricted"
if not f73_local8 then
else
for f73_local9 = Cac.Indices.Killstreaks.Streak1, Cac.Indices.Killstreaks.Streak3, 1 do
local f73_local12 = Cac.GetStreak( f73_local0.controller, f73_local0.squadLocation, f73_local0.memberIndex, f73_local0.loadoutLocation, f73_local0.loadoutSlot, Cac.GetStreakTypeReference( f73_local3 ), f73_local9 )
if f73_local12 ~= "none" then
f73_local2 = false
if f73_local3 == "streaktype_specialist" then
f73_local12 = Cac.StripSuffix( f73_local12, "_ks" )
f73_local4, f73_local5, f73_local6 = Cac.SafeGetMatchRule( "commonOption", "perkClassRestricted", Cac.GetPerkGroup( f73_local12 ) )
if not f73_local1 then
f73_local1 = f73_local4 and f73_local5
end
end
f73_local4, f73_local5, f73_local6 = Cac.SafeGetMatchRule( "commonOption", f73_local8, f73_local12 )
if not f73_local1 then
f73_local1 = f73_local4 and f73_local5
end
end
end
local f73_local9, f73_local10 = Cac.ArePerksRestricted( f73_local0.controller, f73_local0.squadLocation, f73_local0.memberIndex, f73_local0.loadoutLocation, f73_local0.loadoutSlot, "specialistBonusStreaks" )
if f73_local2 then
f73_local2 = f73_local10
end
if f73_local3 == "streaktype_specialist" and not f73_local1 then
f73_local1 = f73_local9
end
if not f73_local1 then
local f73_local13 = f73_local7
end
return f73_local13 and not f73_local2
end
end
f73_local8 = "killstreakRestricted"
else
end
end )
f69_local2:registerEventHandler( "update_cac_info_panel", MBh.EmitEvent( "content_refresh" ) )
f69_local2:registerEventHandler( "refresh_specialist_abilities_recap", function ( element, event )
local f74_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( element )
local f74_local1 = f69_local2:getFirstDescendentById( "text_label" )
local f74_local2 = f69_local2:getFirstDescendentById( "content_text_label" )
local f74_local3 = 4 * RecapLayout.GridH + 3 * RecapLayout.GridHGutter
local f74_local4 = {
topAnchor = true,
bottomAnchor = false,
leftAnchor = false,
rightAnchor = false,
left = 4 - f74_local3 / 2,
right = f74_local3 / 2,
top = 0,
bottom = CoD.TextSettings.NormalFont.Height
}
local f74_local5 = {
topAnchor = true,
bottomAnchor = false,
leftAnchor = false,
rightAnchor = false,
left = -f74_local3 / 2,
right = f74_local3 / 2,
top = 0,
bottom = CoD.TextSettings.NormalFont.Height
}
local f74_local6 = CoD.ColorizeState( Colors.cac_label_text, f74_local4 )
local f74_local7 = CoD.ColorizeState( Colors.generic_button_content_focus_color, f74_local5 )
f74_local1:registerAnimationState( "default", f74_local6 )
f74_local2:registerAnimationState( "default", f74_local7 )
if event.selected then
local f74_local8 = CoD.ColorizeState( Colors.cac_button, f74_local4 )
local f74_local9 = CoD.ColorizeState( Colors.cac_button, f74_local5 )
f74_local0.specialistStrike = true
f74_local1:registerAnimationState( "newState", f74_local8 )
f74_local2:registerAnimationState( "newState", f74_local9 )
f74_local1:animateToState( "newState" )
f74_local2:animateToState( "newState" )
else
f74_local1:animateToState( "default" )
f74_local2:animateToState( "default" )
end
element:dispatchEventToChildren( event )
end )
f69_local2.id = "edit_killstreaks"
local f69_local3 = {
Cac.GetStreak1,
Cac.GetStreak2,
Cac.GetStreak3
}
if not f69_local1 then
local self = LUI.UIText.new( CoD.ColorizeState( Colors.white, {
font = CoD.TextSettings.SmallFont.Font,
topAnchor = false,
leftAnchor = true,
bottomAnchor = true,
rightAnchor = false,
bottom = -Cac.Layout.AbilitiesBar.slot_height,
left = 0,
right = 32,
height = CoD.TextSettings.SmallFont.Height
} ) )
self:setText( "" )
self:registerAnimationState( "locked", CoD.ColorizeState( Colors.cac_button, {} ) )
self:registerEventHandler( "update_cac_info_panel", function ( element, event )
local f75_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( f69_local2 )
if Cac.GetPerk( f75_local0.controller, f75_local0.squadLocation, f75_local0.memberIndex, f75_local0.loadoutLocation, f75_local0.loadoutSlot, Cac.Indices.StreakType ) == "streaktype_specialist" then
local f75_local1 = 0
for f75_local2 = 1, 3, 1 do
local f75_local5 = Cac.GetPerkCost( Cac.StripSuffix( f69_local3[f75_local2]( f75_local0.controller, f75_local0.squadLocation, f75_local0.memberIndex, f75_local0.loadoutLocation, f75_local0.loadoutSlot ), "_ks" ) )
if f75_local5 ~= "" and f75_local5 then
f75_local1 = f75_local1 + f75_local5 + 1
end
end
element:setText( Engine.Localize( "@LUA_MENU_BONUS_AT_N_KILLS", math.max( 8, f75_local1 + 2 ) ) )
else
element:setText( "" )
end
end )
self:registerEventHandler( "button_lock", MBh.AnimateToState( "locked" ) )
self:registerEventHandler( "button_unlock", MBh.AnimateToState( "default" ) )
self:registerEventHandler( "button_over", MBh.AnimateToState( "locked" ) )
self:registerEventHandler( "button_up", MBh.AnimateToState( "default" ) )
f69_local2:addElement( self )
end
local self = Cac.Layout.SpecialistStreak.PreviewButton.width
local f69_local5 = Cac.Layout.SpecialistStreak.PreviewButton.height
for f69_local6 = 0, 2, 1 do
local f69_local9 = f69_local6
local f69_local10 = f0_local9( (Cac.Layout.SpecialistStreak.PreviewButton.width + 40) * (f69_local9 - 1), 8, self, f69_local5, function ( f76_arg0, f76_arg1 )
local f76_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( f69_local2 )
local f76_local1 = f69_local3[f69_local9 + 1]( f76_local0.controller, f76_local0.squadLocation, f76_local0.memberIndex, f76_local0.loadoutLocation, f76_local0.loadoutSlot )
local f76_local2 = Cac.GetStreakIcon( f76_local1, f76_local0.controller )
local f76_local3 = 1
if f76_local1 == nil or f76_local1 == "none" or f76_local1 == "specialty_null" or f76_local1 == "" then
f76_local3 = 0.1
end
if f76_local1 == "none" and (f76_arg1.name == "button_lock" or f76_arg1.name == "button_over" or f76_arg1.resetSelected == f69_local2.id) then
f76_local2 = f76_local2 .. "_black"
f76_local3 = 1
end
if f69_local1 then
f76_local2 = "icon_weapon_ph_sp_diamond_64"
f76_local3 = 0.1
end
return {
material = RegisterMaterial( f76_local2 ),
alpha = f76_local3
}
end, true, true )
if not f69_local1 then
f69_local10:registerEventHandler( "refresh_specialist_abilities_recap", function ( element, event )
local f77_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( element )
element:animateToState( event.specialistType and "moved" or "restore_position", 100 )
end )
local f69_local11 = LUI.UIText.new( CoD.ColorizeState( Colors.white, {
font = CoD.TextSettings.SmallFont.Font,
alignment = LUI.Alignment.Center,
topAnchor = false,
bottomAnchor = true,
leftAnchor = true,
rightAnchor = false,
bottom = 0,
left = -25,
width = 30,
height = CoD.TextSettings.SmallFont.Height
} ) )
f69_local11:setText( "" )
f69_local11:setTextStyle( CoD.TextStyle.Outlined )
f69_local11:registerAnimationState( "invert", CoD.ColorizeState( Colors.black, {} ) )
f69_local11:registerEventHandler( "update_cac_info_panel", function ( element, event )
local f78_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( f69_local2 )
local f78_local1 = f69_local3[f69_local9 + 1]( f78_local0.controller, f78_local0.squadLocation, f78_local0.memberIndex, f78_local0.loadoutLocation, f78_local0.loadoutSlot )
local f78_local2 = Cac.GetPerk( f78_local0.controller, f78_local0.squadLocation, f78_local0.memberIndex, f78_local0.loadoutLocation, f78_local0.loadoutSlot, Cac.Indices.StreakType )
local f78_local3 = 0
if f78_local2 == "streaktype_specialist" then
if f78_local1 ~= "none" then
for f78_local4 = 0, f69_local9, 1 do
local f78_local7 = Cac.GetPerkCost( Cac.StripSuffix( f69_local3[f78_local4 + 1]( f78_local0.controller, f78_local0.squadLocation, f78_local0.memberIndex, f78_local0.loadoutLocation, f78_local0.loadoutSlot ), "_ks" ) )
if f78_local7 ~= "" and f78_local7 then
f78_local3 = f78_local3 + f78_local7 + 1
end
end
else
f78_local3 = ""
end
else
f78_local3 = Cac.GetStreakCost( f78_local1 )
end
element:setText( f78_local3 )
end )
f69_local11:registerEventHandler( "button_lock", function ( element, event )
element:setTextStyle( CoD.TextStyle.None )
element:animateToState( "invert" )
end )
f69_local11:registerEventHandler( "button_over", function ( element, event )
element:setTextStyle( CoD.TextStyle.None )
element:animateToState( "invert" )
end )
f69_local11:registerEventHandler( "button_up", function ( element, event )
element:setTextStyle( CoD.TextStyle.Outlined )
element:animateToState( "default" )
end )
f69_local10:addElement( f69_local11 )
end
f69_local2:addElement( f69_local10 )
end
local f69_local6 = LUI.UIHorizontalList.new()
f69_local6.id = "specialist_ability_recap"
f69_local6.editingAbilities = false
f69_local6:registerAnimationState( "default", {
topAnchor = false,
bottomAnchor = true,
leftAnchor = true,
rightAnchor = true,
bottom = -2,
left = 0,
right = 0,
height = Cac.Layout.AbilitiesBar.slot_height,
alignment = LUI.Alignment.Center,
spacing = Cac.Layout.AbilitiesBar.slot_spacing,
alpha = 0
} )
f69_local6:animateToState( "default" )
f69_local6:registerAnimationState( "visible", {
alpha = 1
} )
f69_local6:registerEventHandler( "refresh_specialist_abilities_recap", function ( element, event )
local f82_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( element )
element:animateToState( event.specialistType and "visible" or "default", 100 )
f0_local18( element, event, Cac.Layout.AbilitiesBar.slot_width, Cac.Layout.AbilitiesBar.slot_height, Cac.Layout.AbilitiesBar.slot_spacing, "specialistBonusStreaks", "specialist_" )
end )
f69_local2:addElement( f69_local6 )
return f69_local2
end
local f0_local20 = function ()
local f83_local0 = f0_local11( 4, false, function ( f84_arg0, f84_arg1 )
local f84_local0 = f0_local6( f84_arg0 )
f84_arg0:dispatchEventToRoot( {
name = "hide_abilities_info_panel",
immediate = true
} )
LUI.FlowManager.RequestPopupMenu( f84_arg0, "cac_ability_alt_main", true, f84_arg1.controller, false, f84_local0 )
end, Engine.Localize( "@MENU_ABILITIES_CAPS" ), nil, nil, function ( f85_arg0 )
local f85_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( f85_arg0 )
if MatchRules.AllowCustomClasses( f85_local0.loadoutLocation ) then
return Cac.ArePerksRestricted( f85_local0.controller, f85_local0.squadLocation, f85_local0.memberIndex, f85_local0.loadoutLocation, f85_local0.loadoutSlot, "abilitiesPicked" )
else
end
end )
f83_local0.id = "edit_abilities"
f83_local0:registerEventHandler( "second_primary_focus", MBh.EmitEvent( "lose_focus" ) )
f83_local0:registerEventHandler( "third_attach_focus", MBh.EmitEvent( "lose_focus" ) )
local self = LUI.UIHorizontalList.new( {
topAnchor = false,
bottomAnchor = false,
leftAnchor = true,
rightAnchor = true,
top = 8 - Cac.Layout.AbilitiesBar.slot_height / 2,
left = 0,
right = 0,
height = Cac.Layout.AbilitiesBar.slot_height,
alignment = LUI.Alignment.Center,
spacing = Cac.Layout.AbilitiesBar.slot_spacing
} )
self.id = "ability_recap"
self.editingAbilities = false
self:registerEventHandler( "refresh_abilities_recap", function ( element, event )
local f86_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( element )
f86_local0.editingAbilities = false
if event.item and Engine.InFrontend() and event.item ~= "specialty_null" and event.item ~= "none" and event.item ~= "iw6_knifeonly" and event.item ~= "uav" and Cac.CalculateAbilityCapacity( f86_local0.controller, f86_local0.squadLocation, f86_local0.memberIndex, f86_local0.loadoutLocation, f86_local0.loadoutSlot ) - Cac.CountSpentPoints( f86_local0.controller, f86_local0.squadLocation, f86_local0.memberIndex, f86_local0.loadoutLocation, f86_local0.loadoutSlot, "abilitiesPicked" ) < 0 then
Cac.RemoveLastPerk( f86_local0.controller, f86_local0.squadLocation, f86_local0.memberIndex, f86_local0.loadoutLocation, f86_local0.loadoutSlot, "abilitiesPicked", true )
end
f0_local18( element, event, Cac.Layout.AbilitiesBar.slot_width, Cac.Layout.AbilitiesBar.slot_height, Cac.Layout.AbilitiesBar.slot_spacing, "abilitiesPicked", "abilities_", true )
end )
f83_local0:addElement( self )
return f83_local0
end
local f0_local21 = function ( f87_arg0 )
f87_arg0:processEvent( {
name = "update_cac_info_panel",
dispatchChildren = true
} )
f87_arg0:processEvent( {
name = "refresh_abilities_recap"
} )
end
local f0_local22 = function ( f88_arg0, f88_arg1 )
local f88_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( f88_arg0 )
f88_arg0.properties = f88_arg0.properties or {}
if not f88_arg0.properties.exclusiveController or not f88_arg0.properties.squad_location or not f88_arg0.properties.class_location then
DebugPrint( "WARNING: Missing init data for cac_edit_main. Placeholder values will be used." )
end
f88_local0.controller = f88_arg0.properties.exclusiveController or 0
local f88_local1 = f88_arg0.properties.squad_location
if not f88_local1 then
f88_local1 = Cac.GetSquadLoc()
end
f88_local0.squadLocation = f88_local1
f88_local1 = f88_arg0.properties.member_index
if not f88_local1 then
f88_local1 = Cac.GetEditSquadMember()
end
f88_local0.memberIndex = f88_local1
f88_local0.loadoutLocation = f88_arg0.properties.class_location or "loadouts"
f88_local0.loadoutSlot = f88_arg0.properties.loadout_slot or 0
f88_local0.upperBound = Cac.CalculateAbilityCapacity( f88_local0.controller, f88_local0.squadLocation, f88_local0.memberIndex, f88_local0.loadoutLocation, f88_local0.loadoutSlot )
f0_local21( f88_arg0 )
end
local f0_local23 = function ( f89_arg0, f89_arg1 )
local f89_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( f89_arg0 )
local f89_local1 = f89_local0.selectionIDFocused
if f89_local1 then
if f89_local1 == "edit_weapon_primary" or f89_local1 == "edit_weapon_secondary" then
local f89_local2 = f89_local0.weaponIndexFocused
local f89_local3 = Cac.Indices.Weapons.Primary
f89_local2 = REG18 and "iw6_knifeonly" or "none"
Cac.SetWeapon( f89_arg1.controller, f89_local0.squadLocation, f89_local0.memberIndex, f89_local0.loadoutLocation, f89_local0.loadoutSlot, f89_local0.weaponIndexFocused, f89_local2 )
f89_arg0:dispatchEventToRoot( {
name = "refresh_abilities_recap",
controller = f89_arg1.controller,
specialistType = false,
item = f89_local2,
resetSelected = f89_local1
} )
elseif f89_local1 == "edit_weapon_primary_attach1" or f89_local1 == "edit_weapon_primary_attach2" or f89_local1 == "edit_weapon_primary_attach3" or f89_local1 == "edit_weapon_secondary_attach1" or f89_local1 == "edit_weapon_secondary_attach2" or f89_local1 == "edit_lethal" then
if f89_local1 == "edit_lethal" then
local f89_local2 = Cac.HasAttachments( f89_arg1.controller, f89_local0.squadLocation, f89_local0.memberIndex, f89_local0.loadoutLocation, f89_local0.loadoutSlot, 0, {
"gl",
"shotgun"
} )
local f89_local3 = Cac.HasAttachments( f89_arg1.controller, f89_local0.squadLocation, f89_local0.memberIndex, f89_local0.loadoutLocation, f89_local0.loadoutSlot, 1, {
"gl",
"shotgun"
} )
if f89_local2 and f89_local1 == "edit_lethal" then
Cac.SetAttachment( f89_arg1.controller, f89_local0.squadLocation, f89_local0.memberIndex, f89_local0.loadoutLocation, f89_local0.loadoutSlot, Cac.Indices.Weapons.Primary, f89_local2 - 1, "none" )
elseif f89_local3 and f89_local1 == "edit_lethal" then
Cac.SetAttachment( f89_arg1.controller, f89_local0.squadLocation, f89_local0.memberIndex, f89_local0.loadoutLocation, f89_local0.loadoutSlot, Cac.Indices.Weapons.Secondary, f89_local3 - 1, "none" )
else
Cac.SetPerk( f89_arg1.controller, f89_local0.squadLocation, f89_local0.memberIndex, f89_local0.loadoutLocation, f89_local0.loadoutSlot, f89_local0.weaponIndexFocused, "specialty_null" )
end
else
if Cac.AttachmentHasReticles( Cac.GetAttachment( f89_arg1.controller, f89_local0.squadLocation, f89_local0.memberIndex, f89_local0.loadoutLocation, f89_local0.loadoutSlot, f89_local0.weaponIndexFocused, f89_local0.attachIndexFocused ) ) then
Cac.SetWeaponReticle( f89_arg1.controller, f89_local0.squadLocation, f89_local0.memberIndex, f89_local0.loadoutLocation, f89_local0.loadoutSlot, 0, "none" )
end
Cac.SetAttachment( f89_arg1.controller, f89_local0.squadLocation, f89_local0.memberIndex, f89_local0.loadoutLocation, f89_local0.loadoutSlot, f89_local0.weaponIndexFocused, f89_local0.attachIndexFocused, "none" )
end
local f89_local2 = Cac.GetAttachment( f89_arg1.controller, f89_local0.squadLocation, f89_local0.memberIndex, f89_local0.loadoutLocation, f89_local0.loadoutSlot, f89_local0.weaponIndexFocused, 0 )
local f89_local3 = Cac.GetAttachment( f89_arg1.controller, f89_local0.squadLocation, f89_local0.memberIndex, f89_local0.loadoutLocation, f89_local0.loadoutSlot, f89_local0.weaponIndexFocused, 1 )
local f89_local4 = Cac.GetAttachment( f89_arg1.controller, f89_local0.squadLocation, f89_local0.memberIndex, f89_local0.loadoutLocation, f89_local0.loadoutSlot, f89_local0.weaponIndexFocused, 2 )
if f89_local2 == "none" and f89_local3 ~= "none" then
Cac.SetAttachment( f89_arg1.controller, f89_local0.squadLocation, f89_local0.memberIndex, f89_local0.loadoutLocation, f89_local0.loadoutSlot, f89_local0.weaponIndexFocused, 0, f89_local3 )
Cac.SetAttachment( f89_arg1.controller, f89_local0.squadLocation, f89_local0.memberIndex, f89_local0.loadoutLocation, f89_local0.loadoutSlot, f89_local0.weaponIndexFocused, 1, "none" )
f89_local2 = f89_local3
f89_local3 = "none"
end
if f89_local3 == "none" and f89_local4 ~= "none" then
Cac.SetAttachment( f89_arg1.controller, f89_local0.squadLocation, f89_local0.memberIndex, f89_local0.loadoutLocation, f89_local0.loadoutSlot, f89_local0.weaponIndexFocused, 1, f89_local4 )
Cac.SetAttachment( f89_arg1.controller, f89_local0.squadLocation, f89_local0.memberIndex, f89_local0.loadoutLocation, f89_local0.loadoutSlot, f89_local0.weaponIndexFocused, 2, "none" )
f89_local3 = f89_local4
end
f89_arg0:dispatchEventToRoot( {
name = "refresh_abilities_recap",
controller = f89_arg1.controller,
specialistType = false,
resetSelected = f89_local1
} )
elseif f89_local1 == "edit_tactical" then
Cac.SetPerk( f89_arg1.controller, f89_local0.squadLocation, f89_local0.memberIndex, f89_local0.loadoutLocation, f89_local0.loadoutSlot, f89_local0.weaponIndexFocused, "specialty_null" )
f89_arg0:dispatchEventToRoot( {
name = "refresh_abilities_recap",
controller = f89_arg1.controller,
specialistType = false,
resetSelected = f89_local1
} )
elseif f89_local1 == "edit_weapon_primary_camo" then
Cac.SetWeaponCamo( f89_arg1.controller, f89_local0.squadLocation, f89_local0.memberIndex, f89_local0.loadoutLocation, f89_local0.loadoutSlot, 0, "none" )
elseif f89_local1 == "edit_weapon_primary_reticle" then
if Cac.EquippedAttachmentsHaveReticles( f89_arg1.controller, f89_local0.squadLocation, f89_local0.memberIndex, f89_local0.loadoutLocation, f89_local0.loadoutSlot, 0 ) then
local f89_local2 = Cac.GetAttachmentWithReticles( f89_arg1.controller, f89_local0.squadLocation, f89_local0.memberIndex, f89_local0.loadoutLocation, f89_local0.loadoutSlot, 0 )
local f89_local3 = f89_local2 and Cac.GetReticleDefault( f89_local2 )
if f89_local3 then
Cac.SetWeaponReticle( f89_arg1.controller, f89_local0.squadLocation, f89_local0.memberIndex, f89_local0.loadoutLocation, f89_local0.loadoutSlot, 0, f89_local3 )
end
else
Cac.SetWeaponReticle( f89_arg1.controller, f89_local0.squadLocation, f89_local0.memberIndex, f89_local0.loadoutLocation, f89_local0.loadoutSlot, 0, "none" )
end
elseif f89_local1 == "edit_killstreaks" then
local f89_local2 = Cac.GetStreakType( f89_arg1.controller, f89_local0.squadLocation, f89_local0.memberIndex, f89_local0.loadoutLocation, f89_local0.loadoutSlot )
if f89_local2 == "specialty_null" then
f89_local2 = "streaktype_assault"
end
if f89_local2 == "streaktype_specialist" then
Cac.ResetAbilities( f89_arg1.controller, f89_local0.squadLocation, f89_local0.memberIndex, f89_local0.loadoutLocation, f89_local0.loadoutSlot, "specialistBonusStreaks", true )
f89_arg0:dispatchEventToRoot( {
name = "refresh_specialist_abilities_recap",
controller = f89_arg1.controller,
specialistType = true,
selected = true
} )
end
Cac.ResetKillstreak( f89_arg1.controller, f89_local0.squadLocation, f89_local0.squadMemberIndex, f89_local0.classLocation, f89_local0.slot, Cac.GetStreakTypeReference( f89_local2 ) )
elseif f89_local1 == "edit_abilities" then
Cac.ResetAbilities( f89_arg1.controller, f89_local0.squadLocation, f89_local0.memberIndex, f89_local0.loadoutLocation, f89_local0.loadoutSlot, "abilitiesPicked", false )
f89_arg0:dispatchEventToRoot( {
name = "refresh_abilities_recap",
controller = f89_arg1.controller,
resetSelected = f89_local1,
selected = true
} )
end
f89_arg0:dispatchEventToRoot( {
name = "update_cac_info_panel",
controller = f89_arg1.controller,
dispatchChildren = true,
resetSelected = f89_local1
} )
local f89_local2 = f0_local6( f89_arg0 )
f89_local2.name = "update_selection_info"
f89_local2.selection_id = f89_local1
f89_local2.weaponIndex = f89_local0.weaponIndexFocused
f89_local2.immediate = true
f89_arg0:dispatchEventToRoot( f89_local2 )
if f89_local0.weaponIndexFocused then
local f89_local3 = f0_local6( f89_arg0 )
f89_local3.name = "refresh_info_pane"
f89_local3.dispatchChildren = true
f89_local3.weaponIndex = f89_local0.weaponIndexFocused
f89_local3.selection_id = f89_local1
f89_local3.immediate = true
f89_arg0:dispatchEventToRoot( f89_local3 )
if f89_local1 ~= "edit_lethal" and f89_local1 ~= "edit_tactical" and f89_local1 ~= "edit_weapon_primary" then
if f89_local0.weaponIndexFocused == Cac.Indices.Weapons.Primary then
f89_arg0:dispatchEventToRoot( {
name = "update_squad_member_window_weapon",
weapon = Cac.BuildPrimaryWeaponName( f89_arg1.controller, f89_local0.squadLocation, f89_local0.squadMemberIndex, f89_local0.classLocation, f89_local0.slot )
} )
elseif f89_local0.weaponIndexFocused == Cac.Indices.Weapons.Secondary then
f89_arg0:dispatchEventToRoot( {
name = "update_squad_member_window_stowed_weapon",
weapon = Cac.BuildSecondaryWeaponName( f89_arg1.controller, f89_local0.squadLocation, f89_local0.squadMemberIndex, f89_local0.classLocation, f89_local0.slot )
} )
end
end
end
end
end
local f0_local24 = function ( f90_arg0, f90_arg1 )
local f90_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( f90_arg0 )
if not f90_local0 or f90_local0.squadLocation ~= "squadMembers" then
return
else
LUI.FlowManager.RequestPopupMenu( f90_arg0, "operations_main_menu", true, f90_arg1.controller, false )
end
end
local f0_local25 = function ( f91_arg0, f91_arg1 )
if not LUI.mp_menus.LoadoutBuilder.IsLoadoutBuilderEnabled() then
return
end
local f91_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( f91_arg0 )
local f91_local1 = {}
if f91_local0 and f91_local0.squadLocation ~= "squadMembers" then
LUI.mp_menus.LoadoutBuilder.RequestBuildLoadout( f91_arg1.controller, "Random", false )
else
LUI.FlowManager.RequestPopupMenu( f91_arg0, "popup_lb_type", true, f91_arg1.controller, false )
end
end
LUI.MenuBuilder.registerType( "cac_recap", function ( menu, controller )
local self = LUI.UIElement.new( {
topAnchor = true,
bottomAnchor = false,
leftAnchor = true,
rightAnchor = false,
top = RecapLayout.Y,
left = RecapLayout.XWhenRight,
width = RecapLayout.Width,
height = RecapLayout.Height
} )
self.properties = controller
if Engine.InFrontend() then
self:registerAnimationState( "left", {
topAnchor = true,
bottomAnchor = false,
leftAnchor = true,
rightAnchor = false,
top = RecapLayout.Y,
left = RecapLayout.XWhenLeft,
width = RecapLayout.Width,
height = RecapLayout.Height
} )
self:registerEventHandler( "cac_recap_slide_left", MBh.AnimateToState( "left", 125 ) )
self:registerEventHandler( "cac_recap_slide_right", MBh.AnimateToState( "default", 125 ) )
self:addEventHandler( "gain_focus", function ( f93_arg0, f93_arg1 )
self:dispatchEventToRoot( {
name = "add_button_helper_text",
button_ref = "button_alt1",
helper_text = Engine.Localize( "@LUA_MENU_CLEAR" ),
side = "left",
immediate = true,
clickable = true
} )
local f93_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( f93_arg0 )
local f93_local1 = nil
if f93_local0 and f93_local0.squadLocation == "squadMembers" then
self:dispatchEventToRoot( {
name = "add_button_helper_text",
button_ref = "button_alt2",
helper_text = Engine.Localize( "@LUA_MENU_OPERATIONS" ),
side = "left",
immediate = true,
clickable = true
} )
f93_local1 = "@LUA_MENU_MP_LB_HELPER_TEXT"
else
f93_local1 = "@LUA_MENU_MP_RANDOMIZE_LOADOUT"
end
if LUI.mp_menus.LoadoutBuilder.IsLoadoutBuilderEnabled() then
local f93_local2 = LUI.mp_menus.LoadoutBuilder.IsLoadoutBuilderButtonAnimEnabled()
self:dispatchEventToRoot( {
name = "add_button_helper_text",
button_ref = "button_start",
helper_text = Engine.Localize( f93_local1 ),
side = "left",
immediate = true,
clickable = true,
useAnimIntro = f93_local2,
flash = f93_local2
} )
end
end )
local f92_local1 = LUI.UIElement.new()
f92_local1:registerAnimationState( "default", {
topAnchor = true,
bottomAnchor = true,
leftAnchor = true,
rightAnchor = true,
top = -12,
left = -RecapLayout.XWhenRight,
bottom = 0,
right = 0,
alpha = 0
} )
f92_local1:animateToState( "default" )
f92_local1:registerAnimationState( "visible", {
alpha = 1
} )
f92_local1:registerEventHandler( "lock_recap", MBh.AnimateToState( "visible" ) )
f92_local1:registerEventHandler( "unlock_recap", MBh.AnimateToState( "default" ) )
local f92_local2 = LUI.UIImage.new()
f92_local2:registerAnimationState( "default", CoD.ColorizeState( Cac.Swatches.overlay, {
topAnchor = true,
bottomAnchor = true,
leftAnchor = true,
rightAnchor = true,
top = 0,
bottom = 0,
left = 0,
right = 0,
material = RegisterMaterial( "white" ),
alpha = 0.75
} ) )
f92_local2:animateToState( "default" )
f92_local1:addElement( f92_local2 )
local f92_local3 = LUI.UIImage.new()
f92_local3:registerAnimationState( "default", {
topAnchor = true,
bottomAnchor = true,
leftAnchor = false,
rightAnchor = true,
top = 0,
bottom = 0,
left = -11,
width = 32,
material = RegisterMaterial( "box_dropshadow_vert_spacer" ),
alpha = 0.5
} )
f92_local3:animateToState( "default" )
f92_local1:addElement( f92_local3 )
self:addElement( f92_local1 )
end
local f92_local1 = LUI.UIVerticalList.new()
f92_local1:makeFocusable()
LUI.UIHorizontalList.SetNoWrap( f92_local1, true )
f92_local1:registerAnimationState( "default", {
topAnchor = true,
bottomAnchor = true,
leftAnchor = true,
rightAnchor = true,
top = 0,
left = 0,
bottom = 0,
right = 0,
alignment = LUI.Alignment.Middle,
alpha = 1
} )
f92_local1:registerAnimationState( "locked", {
alpha = RecapLayout.LockAlpha
} )
f92_local1:animateToState( "default" )
f92_local1:registerEventHandler( "lock_recap", MBh.AnimateToState( "locked" ) )
f92_local1:registerEventHandler( "unlock_recap", MBh.AnimateToState( "default" ) )
self:addElement( f92_local1 )
local f92_local2 = f0_local13( Cac.Indices.Weapons.Primary )
local f92_local3 = f0_local14()
local f92_local4 = f0_local15( false, 0 )
local f92_local5 = f0_local15( false, 1 )
local f92_local6 = f0_local15( false, 2 )
local f92_local7 = f0_local16()
local f92_local8 = f0_local13( Cac.Indices.Weapons.Secondary )
local f92_local9 = f0_local15( true, 0 )
local f92_local10 = f0_local15( true, 1 )
local f92_local11 = f0_local17( Cac.Indices.Grenade.Primary )
local f92_local12 = f0_local17( Cac.Indices.Grenade.Secondary )
local f92_local13 = f0_local20()
local f92_local14 = f0_local19()
if Engine.UsingSplitscreenUpscaling() then
f92_local1:addElement( f0_local12( 0, RecapLayout.GridVTall, nil, {
f92_local2,
f92_local4,
f92_local5,
f92_local6
} ) )
f92_local1:addElement( f0_local8() )
f92_local1:addElement( f0_local12( 1, RecapLayout.GridVTall, nil, {
f92_local8,
f92_local9,
f92_local10,
f92_local11
} ) )
f92_local1:addElement( f0_local8() )
f92_local1:addElement( f0_local12( 2, RecapLayout.GridVTall, nil, {
f92_local13,
f92_local12
} ) )
else
local f92_local15 = function ( f94_arg0 )
f92_local2.navigation.up = f92_local14
f92_local3.navigation.up = f92_local14
f92_local2.navigation.down = f92_local4
f92_local3.navigation.down = f92_local7
end
local f92_local16 = function ( f95_arg0 )
f92_local4.navigation.up = f92_local2
f92_local5.navigation.up = f92_local2
f92_local6.navigation.up = f92_local2
f92_local7.navigation.up = f92_local3
f92_local4.navigation.down = f92_local8
f92_local5.navigation.down = f92_local8
f92_local6.navigation.down = f92_local9
f92_local7.navigation.down = f92_local10
end
local f92_local17 = function ( f96_arg0 )
f92_local8.navigation.up = f92_local4
f92_local9.navigation.up = f92_local6
f92_local10.navigation.up = f92_local7
f92_local8.navigation.down = f92_local11
f92_local9.navigation.down = f92_local12
f92_local10.navigation.down = f92_local12
end
local f92_local18 = function ( f97_arg0 )
f92_local11.navigation.up = f92_local8
f92_local12.navigation.up = f92_local9
f92_local11.navigation.down = f92_local13
f92_local12.navigation.down = f92_local13
end
local f92_local19 = function ( f98_arg0 )
f92_local13.navigation.up = f92_local11
f92_local13.navigation.down = f92_local14
end
local f92_local20 = function ( f99_arg0 )
f92_local14.navigation.up = f92_local13
f92_local14.navigation.down = f92_local2
end
local f92_local21 = nil
if Engine.InFrontend() then
f92_local21 = {
f92_local2,
f92_local3
}
else
f92_local21 = {
f92_local2
}
end
f92_local1:addElement( f0_local12( 0, RecapLayout.GridVTall, f92_local15, f92_local21 ) )
f92_local1:addSpacer( RecapLayout.GridVGutter, 0 )
f92_local1:addElement( f0_local12( 1, RecapLayout.GridVSlim, f92_local16, {
f92_local4,
f92_local5,
f92_local6,
f92_local7
} ) )
f92_local1:addElement( f0_local8() )
f92_local1:addElement( f0_local12( 2, RecapLayout.GridVTall, f92_local17, {
f92_local8,
f92_local9,
f92_local10
} ) )
f92_local1:addElement( f0_local8() )
f92_local1:addElement( f0_local12( 3, RecapLayout.GridVSlim, f92_local18, {
f92_local11,
f92_local12
} ) )
f92_local1:addElement( f0_local8() )
f92_local1:addElement( f0_local12( 4, RecapLayout.GridVTall, f92_local19, {
f92_local13
} ) )
f92_local1:addElement( f0_local8() )
local f92_local22 = f0_local12( 5, RecapLayout.GridVTall, f92_local20, {
f92_local14
} )
self:registerEventHandler( "refresh_specialist_abilities_recap", function ( element, event )
f92_local22:animateToState( event.specialistType and "expanded" or "default", 100 )
if not event.dispatchChildren then
f92_local14:processEvent( event )
return true
else
end
end )
f92_local1:addElement( f92_local22 )
end
f92_local1:registerEventHandler( "refresh_abilities_recap", function ( element, event )
if not event.dispatchChildren then
f92_local13:processEvent( event )
return true
else
end
end )
f92_local1:registerEventHandler( "cac_set_slot", function ( element, event )
assert( event.slot )
local f102_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( element )
if not (f102_local0.loadoutSlot == event.slot and (not event.classLocation or f102_local0.loadoutLocation == event.classLocation)) or f102_local0.attachConflict then
if event.classLocation then
f102_local0.loadoutLocation = event.classLocation
end
f102_local0.loadoutSlot = event.slot
f102_local0.attachConflict = false
f0_local21( element )
end
end )
local f92_local15 = LUI.UIBindButton.new()
f92_local15.id = "cac_recap_bind_button"
f92_local15:registerEventHandler( "button_alt1", f0_local23 )
f92_local15:registerEventHandler( "button_alt2", f0_local24 )
if Engine.InFrontend() then
f92_local15:registerEventHandler( "button_start", f0_local25 )
end
self:addElement( f92_local15 )
self:registerEventHandler( "menu_create", f0_local22 )
if not Engine.InFrontend() then
self:registerEventHandler( "gamepad_button", function ()
end )
end
return self
end )
LockTable( _M )