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

1342 lines
47 KiB
Lua

local f0_local0 = module
local f0_local1, f0_local2 = ...
f0_local0( f0_local1, package.seeall )
CoD.PrintModuleLoad( _NAME )
f0_local0 = function ( f1_arg0, f1_arg1 )
local f1_local0 = LUI.FlowManager.GetMenuScopedDataByMenuName( "cac_edit_weapon_attach_choose_main" )
local f1_local1 = f1_local0.attachName
unlockItem( f1_arg1.controller, Cac.GetAttachmentUnlockName( f1_local1, Cac.GetWeapon( f1_arg1.controller, f1_local0.squadLocation, f1_local0.squadMemberIndex, f1_local0.classLocation, f1_local0.slot, f1_local0.weaponIndex ) ) )
Engine.PlaySound( CoD.SFX.CacSpendPoints )
f1_arg0:dispatchEventToRoot( {
name = "cac_update_currency_text",
immediate = true
} )
f1_arg0:dispatchEventToRoot( {
name = "update_cac_info_panel",
controller = f1_arg1.controller,
dispatchChildren = true,
immediate = true
} )
local f1_local2 = Cac.GetAttachments( f1_arg1.controller, f1_local0.squadLocation, f1_local0.squadMemberIndex, f1_local0.classLocation, f1_local0.slot, f1_local0.weaponIndex )
if Cac.AreAttachmentsCompatible( f1_local2[1], f1_local1 ) and Cac.AreAttachmentsCompatible( f1_local2[2], f1_local1 ) and Cac.AreAttachmentsCompatible( f1_local2[3], f1_local1 ) then
setAttachment( f1_arg0, f1_arg1 )
else
local f1_local3 = Cac.GetAttachmentClassInUse( f1_arg1.controller, f1_local0.squadLocation, f1_local0.squadMemberIndex, f1_local0.classLocation, f1_local0.slot, f1_local0.weaponIndex, Cac.GetAttachmentType( f1_local1 ) )
if f1_local3 then
setAttachment( f1_arg0, f1_arg1, f1_local3 )
end
end
LUI.FlowManager.RequestLeaveMenu( f1_arg0, true )
end
f0_local1 = function ( f2_arg0, f2_arg1 )
LUI.FlowManager.RequestLeaveMenu( f2_arg0 )
end
function cac_cant_purchase_attach_popup()
local f3_local0 = LUI.FlowManager.GetMenuScopedDataByMenuName( "cac_edit_weapon_attach_choose_main" )
local f3_local1 = Cac.GetWeapon( f3_local0.controller, f3_local0.squadLocation, f3_local0.squadMemberIndex, f3_local0.classLocation, f3_local0.slot, f3_local0.weaponIndex )
local f3_local2 = Cac.GetAttachmentName( f3_local0.attachName, f3_local1 )
local f3_local3 = Cac.GetAttachmentImage( f3_local0.attachName, f3_local1 )
local f3_local4 = Cac.GetWeaponName( f3_local1 )
local f3_local5 = Engine.Localize( "@LUA_MENU_UNABLE_TO_PURCHASE_N", f3_local2 )
local f3_local6 = f3_local0.cost
local f3_local7 = RegisterMaterial( "icon_unlock_token_active" )
return {
type = "generic_yesno_with_image_popup",
properties = {
popup_title = Engine.Localize( "@LUA_MENU_PURCHASE_CAPS" ),
message_image = RegisterMaterial( f3_local3 ),
message_image_top = -15,
message_image_left = 35,
message_cost_text = Engine.Localize( "@LUA_MENU_COST" ),
message_cost_image = f3_local7,
message_cost = f3_local6,
message_squad_points_text = Engine.Localize( "@LUA_MENU_CAC_COMMENDATIONS" ),
message_squad_points_image = f3_local7,
message_squad_points = f3_local0.currency,
no_text = f3_local5,
no_action = f0_local1
}
}
end
function cac_purchase_attach_popup()
local f4_local0 = LUI.FlowManager.GetMenuScopedDataByMenuName( "cac_edit_weapon_attach_choose_main" )
local f4_local1 = Cac.GetWeapon( f4_local0.controller, f4_local0.squadLocation, f4_local0.squadMemberIndex, f4_local0.classLocation, f4_local0.slot, f4_local0.weaponIndex )
local f4_local2 = Cac.GetAttachmentName( f4_local0.attachName, f4_local1 )
local f4_local3 = Cac.GetAttachmentImage( f4_local0.attachName, f4_local1 )
local f4_local4 = Cac.GetWeaponName( f4_local1 )
local f4_local5 = Engine.Localize( "@LUA_MENU_PURCHASE_N", f4_local2 )
local f4_local6 = f4_local0.cost
local f4_local7 = RegisterMaterial( "icon_unlock_token_active" )
return {
type = "generic_yesno_with_image_popup",
properties = {
popup_title = Engine.Localize( "@LUA_MENU_PURCHASE_CAPS" ),
message_image = RegisterMaterial( f4_local3 ),
message_image_top = -15,
message_image_left = 35,
message_cost_text = Engine.Localize( "@LUA_MENU_COST" ),
message_cost_image = f4_local7,
message_cost = f4_local6,
message_squad_points_text = Engine.Localize( "@LUA_MENU_CAC_COMMENDATIONS" ),
message_squad_points_image = f4_local7,
message_squad_points = f4_local0.currency,
yes_text = f4_local5,
no_text = Engine.Localize( "@LUA_MENU_CANCEL" ),
yes_action = f0_local0,
no_action = f0_local1
},
additional_handlers = {
menu_create = function ( f5_arg0, f5_arg1 )
f5_arg0:setText( f5_arg0.properties.weapon )
end
}
}
end
function setAttachment( f6_arg0, f6_arg1, f6_arg2 )
local f6_local0 = LUI.FlowManager.GetMenuScopedDataByMenuName( "cac_edit_weapon_attach_choose_main" )
local f6_local1 = Cac.AttachmentHasReticles( f6_local0.attachName )
local f6_local2 = Cac.GetReticleDefault( f6_local0.attachName )
local f6_local3 = Cac.GetFirstOpenAttachment( f6_local0.controller, f6_local0.squadLocation, f6_local0.squadMemberIndex, f6_local0.classLocation, f6_local0.slot, f6_local0.weaponIndex )
if f6_arg2 then
Engine.PlaySound( CoD.SFX.MouseClick )
local f6_local4 = Cac.GetAttachment( f6_local0.controller, f6_local0.squadLocation, f6_local0.squadMemberIndex, f6_local0.classLocation, f6_local0.slot, f6_local0.weaponIndex, f6_arg2 )
local f6_local5 = f6_local4 == f6_local0.attachName
if f6_local5 then
Cac.SetAttachment( f6_local0.controller, f6_local0.squadLocation, f6_local0.squadMemberIndex, f6_local0.classLocation, f6_local0.slot, f6_local0.weaponIndex, f6_arg2, "none" )
else
Cac.SetAttachment( f6_local0.controller, f6_local0.squadLocation, f6_local0.squadMemberIndex, f6_local0.classLocation, f6_local0.slot, f6_local0.weaponIndex, f6_arg2, f6_local0.attachName )
end
if f6_local1 == true and not f6_local5 then
Cac.ValidateReticle( f6_local0.controller, f6_local0.squadLocation, f6_local0.squadMemberIndex, f6_local0.classLocation, f6_local0.slot, f6_local0.weaponIndex )
elseif Cac.AttachmentHasReticles( f6_local4 ) then
Cac.SetWeaponReticle( f6_local0.controller, f6_local0.squadLocation, f6_local0.squadMemberIndex, f6_local0.classLocation, f6_local0.slot, f6_local0.weaponIndex, Cac.Reticles.None )
end
elseif f6_local3 then
Engine.PlaySound( CoD.SFX.MouseClick )
Cac.SetAttachment( f6_arg1.controller, f6_local0.squadLocation, f6_local0.squadMemberIndex, f6_local0.classLocation, f6_local0.slot, f6_local0.weaponIndex, f6_local3, f6_local0.attachName )
if f6_local1 == true and Cac.GetReticle( f6_local0.controller, f6_local0.squadLocation, f6_local0.squadMemberIndex, f6_local0.classLocation, f6_local0.slot, f6_local0.weaponIndex ) == "none" then
Cac.SetWeaponReticle( f6_local0.controller, f6_local0.squadLocation, f6_local0.squadMemberIndex, f6_local0.classLocation, f6_local0.slot, f6_local0.weaponIndex, f6_local2 )
end
else
Engine.PlaySound( CoD.SFX.DenySelect )
end
Cac.ShuffleAttachmentsDown( f6_local0.controller, f6_local0.squadLocation, f6_local0.squadMemberIndex, f6_local0.classLocation, f6_local0.slot, f6_local0.weaponIndex, 0 )
f6_arg0:dispatchEventToRoot( {
name = "change_attachment_lock",
weaponIndex = f6_local0.weaponIndex,
attachIndex = Cac.GetAttachmentClassInUse( f6_local0.controller, f6_local0.squadLocation, f6_local0.squadMemberIndex, f6_local0.classLocation, f6_local0.slot, f6_local0.weaponIndex, Cac.GetAttachmentType( f6_local0.attachName ) )
} )
if f6_local0.weaponIndex == 0 then
f6_arg0:dispatchEventToRoot( {
name = "update_squad_member_window_weapon",
weapon = Cac.BuildPrimaryWeaponName( f6_arg1.controller, f6_local0.squadLocation, f6_local0.squadMemberIndex, f6_local0.classLocation, f6_local0.slot )
} )
elseif f6_local0.weaponIndex == 1 then
f6_arg0:dispatchEventToRoot( {
name = "update_squad_member_window_stowed_weapon",
weapon = Cac.BuildSecondaryWeaponName( f6_arg1.controller, f6_local0.squadLocation, f6_local0.squadMemberIndex, f6_local0.classLocation, f6_local0.slot )
} )
end
local f6_local5
if f6_local0.attachName ~= "shotgun" and f6_local0.attachName ~= "gl" then
f6_local5 = false
else
f6_local5 = true
end
if f6_arg2 or f6_local3 then
f6_arg0:dispatchEventToRoot( {
name = "update_cac_info_panel",
controller = f6_arg1.controller,
dispatchChildren = true,
attachConflict = f6_local5
} )
end
if (f6_local5 or Cac.GetAttachmentType( f6_local0.attachName ) == "undermount") and (f6_local3 or f6_arg2) then
local f6_local6 = f6_arg0
local f6_local7 = f6_arg0.dispatchEventToRoot
local f6_local8 = {
name = "refresh_abilities_recap",
controller = f6_arg1.controller,
specialistType = false
}
local f6_local9
if Cac.GetPrimaryGrenade( f6_local0.controller, f6_local0.squadLocation, f6_local0.squadMemberIndex, f6_local0.classLocation, f6_local0.slot ) == "specialty_null" then
f6_local9 = f6_local0.attachName
else
f6_local9 = false
end
f6_local8.item = f6_local9
f6_local7( f6_local6, f6_local8 )
end
f6_arg0:dispatchEventToRoot( {
name = "element_refresh",
dispatchChildren = true
} )
end
function CacEditWeaponAttachChoose( f7_arg0, f7_arg1 )
local f7_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( f7_arg0 )
local f7_local1 = f7_arg0.properties
local f7_local2 = f7_local1.attachItem
local f7_local3 = Cac.getAttachmentCost( f7_local2, f7_local1.weaponName )
local f7_local4 = Cac.GetCurrency( f7_arg1.controller )
f7_local0.cost = f7_local3
f7_local0.currency = f7_local4
local f7_local5 = Cac.GetAttachments( f7_arg1.controller, f7_local0.squadLocation, f7_local0.squadMemberIndex, f7_local0.classLocation, f7_local0.slot, f7_local0.weaponIndex )
local f7_local6 = Cac.AreAttachmentsCompatible( f7_local5[1], f7_local2 )
local f7_local7 = Cac.AreAttachmentsCompatible( f7_local5[2], f7_local2 )
local f7_local8 = Cac.AreAttachmentsCompatible( f7_local5[3], f7_local2 )
local f7_local9 = Cac.IsAttachmentUnlocked( f7_arg1.controller, f7_local0.squadLocation, f7_local0.squadMemberIndex, f7_local0.classLocation, f7_local0.slot, f7_local0.weaponIndex, f7_local2 )
f7_local0.attachName = f7_local2
if not f7_local9 then
if f7_local3 <= f7_local4 then
LUI.FlowManager.RequestPopupMenu( f7_arg0, "cac_purchase_attach_popup", true, f7_arg1.controller, false, f7_local1 )
else
LUI.FlowManager.RequestPopupMenu( f7_arg0, "cac_cant_purchase_attach_popup", true, f7_arg1.controller, false, f7_local1 )
end
return
elseif f7_local6 and f7_local7 and f7_local8 then
setAttachment( f7_arg0, f7_arg1 )
else
local f7_local10 = Cac.GetAttachmentClassInUse( f7_arg1.controller, f7_local0.squadLocation, f7_local0.squadMemberIndex, f7_local0.classLocation, f7_local0.slot, f7_local0.weaponIndex, Cac.GetAttachmentType( f7_local2 ) )
if f7_local10 then
setAttachment( f7_arg0, f7_arg1, f7_local10 )
else
Engine.PlaySound( CoD.SFX.DenySelect )
end
end
end
function CacEditWeaponAttachButtonOver( f8_arg0, f8_arg1 )
local f8_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( f8_arg0 )
local f8_local1 = f8_arg0.properties
local f8_local2 = f8_local0.controller
assert( f8_local2, "Cac: No controller specified, something went wrong" )
local f8_local3 = f8_local0.squadLocation
assert( f8_local3, "Cac: No squad location specified, something went wrong" )
local f8_local4 = f8_local0.classLocation
assert( f8_local4, "Cac: No class location specified, something went wrong" )
local f8_local5 = f8_local0.slot
if not f8_local5 then
DebugPrint( "[WARNING] CAC: using cac slot index 0, this is only ok if you are editing a menu" )
f8_local5 = 0
end
local f8_local6 = f8_local0.squadMemberIndex
if not f8_local6 then
DebugPrint( "[WARNING] CAC: using squad member index 0, this is only ok if you are editing a menu" )
f8_local6 = 0
end
local f8_local7 = f8_local0.weaponIndex
if not f8_local7 then
DebugPrint( "[WARNING] CAC: using weapon index 0, this is only ok if you are editing a menu" )
f8_local7 = 0
end
assert( f8_local0.attachIndex, "Cac: No attach index specified, something went wrong" )
f8_local0.attachmentOver = f8_local1.attachItem
local f8_local8 = Cac.GetAttachments( f8_local0.controller, f8_local0.squadLocation, f8_local0.squadMemberIndex, f8_local0.classLocation, f8_local0.slot, f8_local0.weaponIndex )
local f8_local9 = Cac.GetAttachmentClassInUse( f8_local0.controller, f8_local0.squadLocation, f8_local0.squadMemberIndex, f8_local0.classLocation, f8_local0.slot, f8_local0.weaponIndex, Cac.GetAttachmentType( f8_local1.attachItem ) )
f8_arg0:dispatchEventToRoot( {
name = "change_attachment_lock",
weaponIndex = f8_local7,
attachIndex = f8_local9,
immediate = true
} )
local f8_local10 = {}
local f8_local11 = false
local f8_local12 = Cac.GetAttachmentNumber( f8_local0.controller, f8_local0.squadLocation, f8_local0.squadMemberIndex, f8_local0.classLocation, f8_local0.slot, f8_local0.weaponIndex )
for f8_local13 = 1, f8_local12, 1 do
if f8_local13 - 1 == f8_local9 then
f8_local10[f8_local13] = f8_local1.attachItem
f8_local11 = true
end
if f8_local8[f8_local13] == "none" and not f8_local11 then
f8_local10[f8_local13] = f8_local1.attachItem
break
end
f8_local10[f8_local13] = f8_local8[f8_local13]
end
f8_arg0:dispatchEventToRoot( {
name = "refresh_info_pane",
controller = f8_local2,
classLocation = f8_local4,
squadLocation = f8_local3,
squadMemberIndex = f8_local6,
slot = f8_local5,
weaponIndex = f8_local7,
viewingAttach0 = f8_local10[1],
viewingAttach1 = f8_local10[2],
viewingAttach2 = f8_local10[3],
dispatchChildren = true,
immediate = true
} )
end
function UpdateAttachmentButton( f9_arg0, f9_arg1 )
local f9_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( f9_arg0 )
local f9_local1 = Cac.GetAttachment( f9_local0.controller, f9_local0.squadLocation, f9_local0.squadMemberIndex, f9_local0.classLocation, f9_local0.slot, f9_local0.weaponIndex, f9_local0.attachIndex )
local f9_local2 = Cac.IsAttachmentUnlocked( f9_local0.controller, f9_local0.squadLocation, f9_local0.squadMemberIndex, f9_local0.classLocation, f9_local0.slot, f9_local0.weaponIndex, f9_arg0.properties.attachItem )
local f9_local3 = Cac.GetAttachments( f9_local0.controller, f9_local0.squadLocation, f9_local0.squadMemberIndex, f9_local0.classLocation, f9_local0.slot, f9_local0.weaponIndex )
f9_arg0.properties.sameCategory = false
if Cac.GetAttachmentClassInUse( f9_local0.controller, f9_local0.squadLocation, f9_local0.squadMemberIndex, f9_local0.classLocation, f9_local0.slot, f9_local0.weaponIndex, Cac.GetAttachmentType( f9_arg0.properties.attachItem ) ) then
f9_arg0.properties.sameCategory = true
end
local f9_local4
if f9_local3[1] ~= f9_arg0.properties.attachItem and f9_arg0.properties.attachItem ~= f9_local3[2] and f9_arg0.properties.attachItem ~= f9_local3[3] then
f9_local4 = false
else
f9_local4 = true
end
f9_arg0.properties.attachCompatible = Cac.AreAttachmentsCompatible( f9_local3[2], f9_arg0.properties.attachItem ) and Cac.AreAttachmentsCompatible( f9_local3[1], f9_arg0.properties.attachItem ) and Cac.AreAttachmentsCompatible( f9_local3[3], f9_arg0.properties.attachItem )
local f9_local5 = Cac.GetFirstOpenAttachment( f9_local0.controller, f9_local0.squadLocation, f9_local0.squadMemberIndex, f9_local0.classLocation, f9_local0.slot, f9_local0.weaponIndex )
if f9_local4 then
f9_arg0:dispatchEventToChildren( {
name = "button_unlocked"
} )
f9_arg0:dispatchEventToChildren( {
name = "button_tab_selected"
} )
if f9_local0.attachmentOver == f9_arg0.properties.attachItem then
f9_arg0:dispatchEventToChildren( {
name = "updateBackgroundOutlineColor",
red = Colors.white.r,
green = Colors.white.g,
blue = Colors.white.b,
alpha = Cac.Selection.outline_over.a
} )
else
f9_arg0:dispatchEventToChildren( {
name = "updateBackgroundOutlineColor",
red = Colors.white.r,
green = Colors.white.g,
blue = Colors.white.b,
alpha = Cac.Selection.outline_up.a
} )
end
f9_arg0:dispatchEventToChildren( {
name = "updateBackgroundColor",
alpha = 0
} )
elseif not (not (not f9_arg0.properties.attachCompatible or not f9_local5) or f9_arg0.properties.sameCategory) or not f9_local2 then
if not f9_local2 then
f9_arg0:dispatchEventToChildren( {
name = "button_locked"
} )
else
f9_arg0:dispatchEventToChildren( {
name = "button_unlocked"
} )
end
f9_arg0:dispatchEventToChildren( {
name = "button_icon_unfocused"
} )
if (not f9_arg0.properties.attachCompatible or not f9_local5) and not f9_arg0.properties.sameCategory then
if f9_local0.attachmentOver == f9_arg0.properties.attachItem then
f9_arg0:dispatchEventToChildren( {
name = "button_tab_focused_disabled"
} )
f9_arg0:dispatchEventToChildren( {
name = "updateBackgroundOutlineColor",
red = Colors.white.r,
green = Colors.white.g,
blue = Colors.white.b,
alpha = Cac.Selection.outline_over.a
} )
else
f9_arg0:dispatchEventToChildren( {
name = "button_tab_unfocused_disabled"
} )
f9_arg0:dispatchEventToChildren( {
name = "updateBackgroundOutlineColor",
red = Colors.white.r,
green = Colors.white.g,
blue = Colors.white.b,
alpha = Cac.Selection.outline_up.a
} )
end
f9_arg0:dispatchEventToChildren( {
name = "updateBackgroundColor",
alpha = 0
} )
else
f9_arg0:dispatchEventToChildren( {
name = "button_tab_unfocused"
} )
f9_arg0:dispatchEventToChildren( {
name = "updateBackgroundColor",
red = Colors.white.r,
green = Colors.white.g,
blue = Colors.white.b,
alpha = Cac.Selection.background_up.a
} )
f9_arg0:dispatchEventToChildren( {
name = "updateBackgroundOutlineColor",
alpha = 0
} )
end
else
f9_arg0:dispatchEventToChildren( {
name = "button_unlocked"
} )
f9_arg0:dispatchEventToChildren( {
name = "updateBackgroundOutlineColor",
alpha = 0
} )
if f9_arg0:isInFocus() then
f9_arg0:dispatchEventToChildren( {
name = "button_tab_focused"
} )
f9_arg0:dispatchEventToChildren( {
name = "button_icon_focused"
} )
f9_arg0:dispatchEventToChildren( {
name = "button_bg_focused"
} )
f9_arg0:dispatchEventToChildren( {
name = "updateBackgroundColor",
red = Colors.white.r,
green = Colors.white.g,
blue = Colors.white.b,
alpha = Cac.Selection.background_over.a
} )
else
f9_arg0:dispatchEventToChildren( {
name = "button_tab_unfocused"
} )
f9_arg0:dispatchEventToChildren( {
name = "button_icon_unfocused"
} )
f9_arg0:dispatchEventToChildren( {
name = "updateBackgroundColor",
red = Colors.white.r,
green = Colors.white.g,
blue = Colors.white.b,
alpha = Cac.Selection.background_up.a
} )
end
end
end
function HandleAttachmentButtonOver( f10_arg0, f10_arg1 )
local f10_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( f10_arg0 )
local f10_local1 = Cac.GetAttachment( f10_local0.controller, f10_local0.squadLocation, f10_local0.squadMemberIndex, f10_local0.classLocation, f10_local0.slot, f10_local0.weaponIndex, f10_local0.attachIndex )
local f10_local2 = Cac.IsAttachmentUnlocked( f10_local0.controller, f10_local0.squadLocation, f10_local0.squadMemberIndex, f10_local0.classLocation, f10_local0.slot, f10_local0.weaponIndex, f10_arg0.properties.attachItem )
local f10_local3
if f10_local1 ~= f10_arg0.properties.attachItem and f10_arg0.properties.attachItem ~= Cac.GetAttachment( f10_local0.controller, f10_local0.squadLocation, f10_local0.squadMemberIndex, f10_local0.classLocation, f10_local0.slot, f10_local0.weaponIndex, (f10_local0.attachIndex + 1) % 3 ) and f10_arg0.properties.attachItem ~= Cac.GetAttachment( f10_local0.controller, f10_local0.squadLocation, f10_local0.squadMemberIndex, f10_local0.classLocation, f10_local0.slot, f10_local0.weaponIndex, (f10_local0.attachIndex + 2) % 3 ) then
f10_local3 = false
else
f10_local3 = true
end
local f10_local4 = f10_arg0.properties.attachCompatible
local f10_local5 = f10_arg0.properties.sameCategory
local f10_local6 = Cac.GetFirstOpenAttachment( f10_local0.controller, f10_local0.squadLocation, f10_local0.squadMemberIndex, f10_local0.classLocation, f10_local0.slot, f10_local0.weaponIndex )
if f10_local3 then
f10_arg0:dispatchEventToChildren( {
name = "button_icon_focused"
} )
f10_arg0:dispatchEventToChildren( {
name = "updateBackgroundOutlineColor",
red = Colors.white.r,
green = Colors.white.g,
blue = Colors.white.b,
alpha = Cac.Selection.outline_over.a
} )
f10_arg0:dispatchEventToChildren( {
name = "updateBackgroundColor",
alpha = 0
} )
else
f10_arg0:dispatchEventToChildren( {
name = "button_icon_focused"
} )
if (not f10_local4 or not f10_local6) and not f10_local5 then
f10_arg0:dispatchEventToChildren( {
name = "button_tab_focused_disabled"
} )
f10_arg0:dispatchEventToChildren( {
name = "updateBackgroundOutlineColor",
red = Colors.white.r,
green = Colors.white.g,
blue = Colors.white.b,
alpha = Cac.Selection.outline_over.a
} )
f10_arg0:dispatchEventToChildren( {
name = "updateBackgroundColor",
alpha = 0
} )
else
f10_arg0:dispatchEventToChildren( {
name = "button_tab_focused"
} )
f10_arg0:dispatchEventToChildren( {
name = "updateBackgroundOutlineColor",
alpha = 0
} )
f10_arg0:dispatchEventToChildren( {
name = "button_bg_focused"
} )
f10_arg0:dispatchEventToChildren( {
name = "updateBackgroundColor",
red = Colors.white.r,
green = Colors.white.g,
blue = Colors.white.b,
alpha = Cac.Selection.background_over.a
} )
end
end
if MatchRules.AllowCustomClasses( f10_local0.classLocation ) then
if f10_arg0.restricted or f10_arg0.classRestricted then
f10_arg0:dispatchEventToRoot( {
name = "show_class_restrictions_warning",
immediate = true
} )
else
f10_arg0:dispatchEventToRoot( {
name = "hide_class_restrictions_warning",
immediate = true
} )
end
end
end
function HandleAttachmentButtonUp( f11_arg0, f11_arg1 )
local f11_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( f11_arg0 )
local f11_local1 = Cac.GetAttachment( f11_local0.controller, f11_local0.squadLocation, f11_local0.squadMemberIndex, f11_local0.classLocation, f11_local0.slot, f11_local0.weaponIndex, f11_local0.attachIndex )
local f11_local2 = Cac.IsAttachmentUnlocked( f11_local0.controller, f11_local0.squadLocation, f11_local0.squadMemberIndex, f11_local0.classLocation, f11_local0.slot, f11_local0.weaponIndex, f11_arg0.properties.attachItem )
local f11_local3
if f11_local1 ~= f11_arg0.properties.attachItem and f11_arg0.properties.attachItem ~= Cac.GetAttachment( f11_local0.controller, f11_local0.squadLocation, f11_local0.squadMemberIndex, f11_local0.classLocation, f11_local0.slot, f11_local0.weaponIndex, (f11_local0.attachIndex + 1) % 3 ) and f11_arg0.properties.attachItem ~= Cac.GetAttachment( f11_local0.controller, f11_local0.squadLocation, f11_local0.squadMemberIndex, f11_local0.classLocation, f11_local0.slot, f11_local0.weaponIndex, (f11_local0.attachIndex + 2) % 3 ) then
f11_local3 = false
else
f11_local3 = true
end
local f11_local4 = f11_arg0.properties.attachCompatible
local f11_local5 = f11_arg0.properties.sameCategory
local f11_local6 = Cac.GetFirstOpenAttachment( f11_local0.controller, f11_local0.squadLocation, f11_local0.squadMemberIndex, f11_local0.classLocation, f11_local0.slot, f11_local0.weaponIndex )
if f11_local3 then
f11_arg0:dispatchEventToChildren( {
name = "button_icon_unfocused"
} )
f11_arg0:dispatchEventToChildren( {
name = "updateBackgroundOutlineColor",
red = Colors.white.r,
green = Colors.white.g,
blue = Colors.white.b,
alpha = Cac.Selection.outline_up.a
} )
else
f11_arg0:dispatchEventToChildren( {
name = "button_icon_unfocused"
} )
if (not f11_local4 or not f11_local6) and not f11_local5 then
f11_arg0:dispatchEventToChildren( {
name = "button_tab_unfocused_disabled"
} )
f11_arg0:dispatchEventToChildren( {
name = "updateBackgroundOutlineColor",
red = Colors.white.r,
green = Colors.white.g,
blue = Colors.white.b,
alpha = Cac.Selection.outline_up.a
} )
f11_arg0:dispatchEventToChildren( {
name = "updateBackgroundColor",
alpha = 0
} )
else
f11_arg0:dispatchEventToChildren( {
name = "button_tab_unfocused"
} )
f11_arg0:dispatchEventToChildren( {
name = "updateBackgroundOutlineColor",
alpha = 0
} )
f11_arg0:dispatchEventToChildren( {
name = "button_bg_unfocused"
} )
f11_arg0:dispatchEventToChildren( {
name = "updateBackgroundColor",
red = Colors.white.r,
green = Colors.white.g,
blue = Colors.white.b,
alpha = Cac.Selection.background_up.a
} )
end
end
end
function UpdateAttachmentText( f12_arg0, f12_arg1 )
f12_arg0:dispatchEventToRoot( {
name = "update_attachment_text",
attachment_name = Cac.GetAttachmentName( f12_arg0.properties.attachItem, f12_arg0.properties.weaponName ),
attachment_desc = Cac.GetAttachmentDesc( f12_arg0.properties.attachItem, f12_arg0.properties.weaponName ),
immediate = true
} )
f12_arg0:dispatchEventToRoot( {
name = "update_warning_text",
attachment = f12_arg0.properties.attachItem,
immediate = true
} )
end
function cac_attachment_button( menu, controller )
local self = LUI.UIButton.new()
self.id = "generic_id"
self.audio = {
button_over = CoD.SFX.SubMenuMouseOver
}
self.properties = controller
self:registerAnimationState( "default", {
leftAnchor = true,
rightAnchor = false,
topAnchor = true,
bottomAnchor = false,
left = 0,
right = Cac.Layout.AttachmentChooseDims.SelectButton.width,
top = 0,
bottom = Cac.Layout.AttachmentChooseDims.SelectButton.height
} )
self:animateToState( "default" )
self:registerEventHandler( "button_over", MBh.DoMultiple( {
HandleAttachmentButtonOver,
UpdateAttachmentText
} ) )
self:registerEventHandler( "button_up", HandleAttachmentButtonUp )
self:registerEventHandler( "menu_create", function ( element, event )
UpdateAttachmentButton( element, event )
local f14_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( element )
if MatchRules.AllowCustomClasses( f14_local0.classLocation ) then
local f14_local1, f14_local2 = Cac.SafeGetMatchRule( "commonOption", "attachmentRestricted", element.properties.attachItem )
if f14_local1 and f14_local2 then
local f14_local3 = Cac.GetRestrictIcon( 0, 2, 28 )
f14_local3.id = "restrict_icon" .. element.properties.attachItem
element:addElement( f14_local3 )
element.restricted = true
else
element.restricted = false
end
local f14_local3, f14_local4 = Cac.SafeGetMatchRule( "commonOption", "attachmentClassRestricted", Cac.GetAttachmentType( element.properties.attachItem ) )
if f14_local3 and f14_local4 then
element.classRestricted = true
else
element.classRestricted = false
end
end
end )
self:registerEventHandler( "element_refresh", UpdateAttachmentButton )
local f13_local1 = LUI.UIElement.new()
f13_local1:registerAnimationState( "default", {
topAnchor = true,
bottomAnchor = true,
leftAnchor = true,
rightAnchor = true,
top = 0,
bottom = 0,
left = 0,
right = 0,
alpha = 1
} )
f13_local1:registerAnimationState( "dim", {
alpha = 0.8
} )
f13_local1:animateToState( "default" )
f13_local1:registerEventHandler( "button_bg_focused", MBh.AnimateLoop( {
{
"dim",
750,
true,
true
},
{
"default",
750
}
} ) )
f13_local1:registerEventHandler( "button_bg_unfocused", MBh.AnimateToState( "default", 0 ) )
f13_local1:addElement( LUI.mp_menus.CacEditChooseImagePopup.cac_edit_choose_image_button_background( nil, {
alpha = 0
} ) )
self:addElement( f13_local1 )
self:addElement( LUI.mp_menus.CacEditChooseImagePopup.cac_edit_choose_image_button_background_outline( nil, {
alpha = 0
} ) )
local f13_local2 = LUI.UIImage.new()
f13_local2:registerAnimationState( "default", {
topAnchor = true,
bottomAnchor = false,
leftAnchor = true,
rightAnchor = false,
top = 0,
bottom = 16,
left = 0,
right = 16,
material = RegisterMaterial( "widg_triangle" ),
alpha = 0
} )
f13_local2:registerAnimationState( "focused", {
red = Colors.white.r,
green = Colors.white.g,
blue = Colors.white.b,
alpha = 1
} )
f13_local2:registerAnimationState( "unfocused", {
red = Colors.white.r,
green = Colors.white.g,
blue = Colors.white.b,
alpha = 0
} )
f13_local2:registerAnimationState( "selected", {
red = Colors.frontend_hilite.r,
green = Colors.frontend_hilite.g,
blue = Colors.frontend_hilite.b,
alpha = 1
} )
f13_local2:registerAnimationState( "unselected", {
red = Colors.white.r,
green = Colors.white.g,
blue = Colors.white.b,
alpha = 0
} )
f13_local2:registerAnimationState( "focused_disabled", {
material = RegisterMaterial( "widg_triangle_outline" ),
alpha = Cac.Selection.outline_over.a
} )
f13_local2:registerAnimationState( "unfocused_disabled", {
material = RegisterMaterial( "widg_triangle" ),
alpha = 0
} )
f13_local2:animateToState( "default" )
f13_local2:registerEventHandler( "button_tab_selected", MBh.AnimateToState( "selected", 0 ) )
f13_local2:registerEventHandler( "button_tab_unselected", MBh.AnimateToState( "unselected", 0 ) )
f13_local2:registerEventHandler( "button_tab_focused", MBh.AnimateToState( "focused", 0 ) )
f13_local2:registerEventHandler( "button_tab_unfocused", MBh.AnimateToState( "unfocused", 0 ) )
f13_local2:registerEventHandler( "button_tab_focused_disabled", MBh.AnimateToState( "focused_disabled", 0 ) )
f13_local2:registerEventHandler( "button_tab_unfocused_disabled", MBh.AnimateToState( "unfocused_disabled", 0 ) )
self:addElement( f13_local2 )
local f13_local3 = LUI.UIImage.new()
f13_local3.id = "attachment_icon"
local f13_local4 = {
topAnchor = false,
bottomAnchor = false,
leftAnchor = false,
rightAnchor = false,
material = controller.image,
width = 48,
height = 48,
alpha = 1
}
f13_local3:registerAnimationState( "default", f13_local4 )
f13_local3:registerAnimationState( "selected", f13_local4 )
f13_local4.scale = 0.1
f13_local3:registerAnimationState( "focused", f13_local4 )
f13_local4.scale = 0
f13_local3:registerAnimationState( "unfocused", f13_local4 )
f13_local3:registerAnimationState( "focused_blocked", {
alpha = 0.75
} )
f13_local3:registerAnimationState( "unfocused_blocked", {
alpha = 0.25
} )
f13_local3:animateToState( "default" )
f13_local3:registerEventHandler( "button_icon_selected", MBh.AnimateToState( "selected", 0 ) )
f13_local3:registerEventHandler( "button_icon_focused", MBh.AnimateSequence( {
{
"unfocused",
0
},
{
"focused",
100
},
{
"unfocused",
100
}
} ) )
f13_local3:registerEventHandler( "button_icon_unfocused", MBh.AnimateToState( "unfocused", 0 ) )
f13_local3:registerEventHandler( "button_icon_focused_blocked", MBh.AnimateToState( "focused_blocked", 0 ) )
f13_local3:registerEventHandler( "button_icon_unfocused_blocked", MBh.AnimateToState( "unfocused_blocked", 0 ) )
self:addElement( f13_local3 )
local f13_local5 = LUI.UIElement.new()
f13_local5:registerAnimationState( "default", {
topAnchor = true,
bottomAnchor = true,
leftAnchor = true,
rightAnchor = true,
top = 0,
bottom = 0,
left = 0,
right = 0,
alpha = 0
} )
f13_local5:registerAnimationState( "locked", {
alpha = 1
} )
f13_local5:registerAnimationState( "unlocked", {
alpha = 0
} )
f13_local5:animateToState( "default" )
f13_local5:registerEventHandler( "button_locked", MBh.AnimateToState( "locked", 0 ) )
f13_local5:registerEventHandler( "button_unlocked", MBh.AnimateToState( "unlocked", 0 ) )
local f13_local6 = LUI.UIElement.new()
f13_local6:registerAnimationState( "default", {
topAnchor = false,
bottomAnchor = true,
leftAnchor = true,
rightAnchor = true,
bottom = 0,
left = 2,
right = 0,
height = 20,
alpha = 1
} )
f13_local6:animateToState( "default" )
local f13_local7 = LUI.UIImage.new()
f13_local7:registerAnimationState( "default", {
topAnchor = false,
bottomAnchor = false,
leftAnchor = true,
rightAnchor = false,
material = RegisterMaterial( "icon_unlock_token_active" ),
left = 0,
width = 16,
height = 16
} )
f13_local7:animateToState( "default" )
f13_local6:addElement( f13_local7 )
local f13_local8 = LUI.UIText.new()
f13_local8:setText( tostring( controller.unlockCost ) )
f13_local8:registerAnimationState( "default", CoD.ColorizeState( Colors.white, {
topAnchor = false,
bottomAnchor = false,
leftAnchor = true,
rightAnchor = true,
left = 16,
right = 0,
height = CoD.TextSettings.TinyFont.Height,
font = CoD.TextSettings.SmallFont.Font,
alignment = LUI.Alignment.Left
} ) )
f13_local8:animateToState( "default" )
f13_local6:addElement( f13_local8 )
f13_local5:addElement( f13_local6 )
self:addElement( f13_local5 )
return self
end
function attachment_decription()
local f15_local0 = LUI.FlowManager.GetMenuScopedDataByMenuName( "cac_edit_weapon_attach_choose_main" )
return {
type = "UIElement",
id = "attachment_decription_id",
states = {
default = {
leftAnchor = true,
rightAnchor = true,
topAnchor = true,
bottomAnchor = true,
left = 460,
right = 0,
top = 480,
bottom = 0
}
},
children = {
{
type = "UIText",
id = "window_title",
properties = {
text = ""
},
states = {
default = {
font = CoD.TextSettings.BigFont.Font,
leftAnchor = true,
rightAnchor = false,
topAnchor = true,
bottomAnchor = false,
left = 0,
right = 0,
top = -CoD.TextSettings.BigFont.Height / 2,
bottom = CoD.TextSettings.BigFont.Height / 2
}
},
handlers = {
update_attachment_text = function ( f16_arg0, f16_arg1 )
f16_arg0:setText( f16_arg1.attachment_name )
end
}
},
{
type = "UIText",
id = "description_text",
properties = {
text = ""
},
states = {
default = {
font = CoD.TextSettings.NormalFont.Font,
alignment = LUI.Alignment.Left,
leftAnchor = true,
rightAnchor = false,
topAnchor = true,
bottomAnchor = false,
left = 0,
right = 300,
top = GenericTitleBarDims.TitleBarHeight,
bottom = GenericTitleBarDims.TitleBarHeight + CoD.TextSettings.NormalFont.Height,
red = Colors.cac_border.r,
green = Colors.cac_border.g,
blue = Colors.cac_border.b
}
},
handlers = {
update_attachment_text = function ( f17_arg0, f17_arg1 )
f17_arg0:setText( f17_arg1.attachment_desc )
end
}
},
{
type = "UIImage",
id = "warning_exclamation",
states = {
default = {
topAnchor = true,
bottomAnchor = false,
leftAnchor = true,
rightAnchor = false,
top = GenericTitleBarDims.TitleBarHeight + CoD.TextSettings.NormalFont.Height * 4,
left = -18,
width = 32,
height = 32,
material = RegisterMaterial( "icon_new" ),
alpha = 0
}
},
handlers = {
update_warning_text = function ( f18_arg0, f18_arg1 )
local f18_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( f18_arg0 )
if (f18_arg1.attachment == "shotgun" or f18_arg1.attachment == "gl") and Cac.GetPrimaryGrenade( f18_local0.controller, f18_local0.squadLocation, f18_local0.squadMemberIndex, f18_local0.classLocation, f18_local0.slot ) ~= "specialty_null" then
local f18_local1 = f18_arg0:getParent()
f18_local1 = f18_local1:getChildById( "description_text" )
local f18_local2, f18_local3 = f18_local1:getElementTextDims()
f18_arg0:registerAnimationState( "visible", {
topAnchor = true,
bottomAnchor = false,
leftAnchor = true,
rightAnchor = false,
top = GenericTitleBarDims.TitleBarHeight + f18_local3 + 9,
left = -18,
width = 32,
height = 32,
alpha = 1
} )
f18_arg0:animateToState( "visible" )
else
f18_arg0:animateToState( "default" )
end
end
}
},
{
type = "UIText",
id = "warning_text",
properties = {
text = Engine.Localize( "@LUA_MENU_UNDER_BARREL_WARNING" )
},
states = {
default = CoD.ColorizeState( Cac.Swatches.warning_text, {
font = CoD.TextSettings.NormalFont.Font,
alignment = LUI.Alignment.Left,
leftAnchor = true,
rightAnchor = false,
topAnchor = true,
bottomAnchor = false,
left = 20,
right = 300,
top = GenericTitleBarDims.TitleBarHeight + CoD.TextSettings.NormalFont.Height * 4,
bottom = GenericTitleBarDims.TitleBarHeight + CoD.TextSettings.NormalFont.Height * 5,
alpha = 0
} )
},
handlers = {
update_warning_text = function ( f19_arg0, f19_arg1 )
local f19_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( f19_arg0 )
if (f19_arg1.attachment == "shotgun" or f19_arg1.attachment == "gl") and Cac.GetPrimaryGrenade( f19_local0.controller, f19_local0.squadLocation, f19_local0.squadMemberIndex, f19_local0.classLocation, f19_local0.slot ) ~= "specialty_null" then
local f19_local1 = f19_arg0:getParent()
f19_local1 = f19_local1:getChildById( "description_text" )
local f19_local2, f19_local3 = f19_local1:getElementTextDims()
f19_arg0:registerAnimationState( "visible", {
leftAnchor = true,
rightAnchor = false,
topAnchor = true,
bottomAnchor = false,
left = 20,
right = 300,
top = GenericTitleBarDims.TitleBarHeight + f19_local3 + 5,
bottom = GenericTitleBarDims.TitleBarHeight + f19_local3 + CoD.TextSettings.NormalFont.Height + 5,
alpha = 1
} )
f19_arg0:animateToState( "visible" )
else
f19_arg0:animateToState( "default" )
end
end
}
}
}
}
end
function AttachmentGridShadeFeeder( f20_arg0 )
local f20_local0 = LUI.FlowManager.GetMenuScopedDataByMenuName( "cac_edit_weapon_attach_choose_main" )
local f20_local1 = {}
for f20_local2 = 1, 4, 1 do
local f20_local5 = 0
if #f20_local1 % 2 == 0 then
f20_local5 = 0.1
end
f20_local1[#f20_local1 + 1] = {
type = "UIImage",
id = "dark_film_id_" .. f20_local2,
states = {
default = {
material = RegisterMaterial( "white" ),
leftAnchor = true,
rightAnchor = true,
topAnchor = true,
bottomAnchor = false,
left = 1,
right = -1,
top = 0,
red = 0,
green = 0,
blue = 0,
height = 80,
alpha = f20_local5
}
}
}
end
return f20_local1
end
function AttachmentGridTextFeeder( f21_arg0 )
local f21_local0 = LUI.FlowManager.GetMenuScopedDataByMenuName( "cac_edit_weapon_attach_choose_main" )
local f21_local1 = Cac.GetAttachmentTypeList( Cac.GetWeapon( f21_local0.controller, f21_local0.squadLocation, f21_local0.squadMemberIndex, f21_local0.classLocation, f21_local0.slot, f21_local0.weaponIndex ) )
local f21_local2 = {}
for f21_local6, f21_local7 in ipairs( f21_local1 ) do
f21_local2[#f21_local2 + 1] = {
type = "UIText",
id = "attachment_category_name_" .. f21_local7,
properties = {
text = Cac.AttachmentTypes.Strings[f21_local7]
},
states = {
default = {
font = CoD.TextSettings.NormalFont.Font,
alignment = LUI.Alignment.Right,
leftAnchor = true,
rightAnchor = false,
topAnchor = false,
bottomAnchor = false,
left = 0,
right = 122,
top = -CoD.TextSettings.NormalFont.Height / 2,
bottom = CoD.TextSettings.NormalFont.Height / 2,
red = 1,
green = 1,
blue = 1
}
},
handlers = {
menu_create = function ( f22_arg0, f22_arg1 )
local f22_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( f22_arg0 )
if MatchRules.AllowCustomClasses( f22_local0.classLocation ) then
local f22_local1, f22_local2 = Cac.SafeGetMatchRule( "commonOption", "attachmentClassRestricted", f21_local7 )
if f22_local1 and f22_local2 then
local self = LUI.UIImage.new()
self.id = "restrict_icon" .. f21_local7
self:registerAnimationState( "default", {
leftAnchor = true,
rightAnchor = false,
topAnchor = true,
bottomAnchor = false,
left = 85,
top = CoD.TextSettings.NormalFont.Height,
width = 28,
height = 28,
material = RegisterMaterial( "icon_new_3" ),
alpha = 1
} )
self:animateToState( "default" )
f22_arg0:addElement( self )
end
end
end
}
}
end
return f21_local2
end
function AttachmentSelectionFeeder( f23_arg0 )
local f23_local0 = LUI.FlowManager.GetMenuScopedDataByMenuName( "cac_edit_weapon_attach_choose_main" )
local f23_local1 = Cac.GetWeapon( f23_local0.controller, f23_local0.squadLocation, f23_local0.squadMemberIndex, f23_local0.classLocation, f23_local0.slot, f23_local0.weaponIndex )
local f23_local2 = Cac.GetAttachmentTypeList( f23_local1 )
local f23_local3 = Cac.GetAttachment( f23_local0.controller, f23_local0.squadLocation, f23_local0.squadMemberIndex, f23_local0.classLocation, f23_local0.slot, f23_local0.weaponIndex, f23_local0.attachIndex )
local f23_local4 = {}
for f23_local11, f23_local12 in ipairs( f23_local2 ) do
local f23_local13 = Cac.GetAttachmentListByType( f23_local1, f23_local12 )
for f23_local10 = 1, f23_arg0.elementsPerRow, 1 do
local f23_local8 = {}
if #f23_local13 < f23_local10 then
f23_local8 = {
type = "UIImage",
id = "attachment_selection_spacer_at_" .. f23_local10 + f23_local11 - 1 * f23_arg0.elementsPerRow,
states = {
default = {
material = RegisterMaterial( "white" ),
leftAnchor = true,
rightAnchor = false,
topAnchor = true,
bottomAnchor = false,
left = 0,
right = 70,
top = 0,
bottom = 70,
red = 0.1,
green = 0.1,
blue = 0.1,
alpha = 0
}
}
}
else
local f23_local9 = f23_local13[f23_local10]
f23_local8 = {
type = "cac_attachment_button",
id = "attachment_selections_button_id_" .. f23_local10 + f23_local11 - 1 * f23_arg0.elementsPerRow,
listDefaultFocus = f23_local3 == f23_local9,
properties = {
image = RegisterMaterial( Cac.GetAttachmentImage( f23_local9, f23_local1 ) ),
attachItem = f23_local9,
weaponName = f23_local1,
unlockCost = Cac.getAttachmentCost( f23_local9, f23_local1 ),
currentAttachment = f23_local3,
muteAction = true,
additional_handlers = {
button_action = CacEditWeaponAttachChoose,
button_over = CacEditWeaponAttachButtonOver,
element_refresh = MBh.EmitEvent( "content_refresh" )
}
}
}
end
f23_local4[#f23_local4 + 1] = f23_local8
end
end
return f23_local4
end
function attachment_grid()
local f24_local0 = LUI.FlowManager.GetMenuScopedDataByMenuName( "cac_edit_weapon_attach_choose_main" )
local f24_local1 = Engine.Localize( "@LUA_MENU_ATTACHMENT_ONE_CAPS" )
if f24_local0.attachIndex == 1 then
f24_local1 = Engine.Localize( "@LUA_MENU_ATTACHMENT_TWO_CAPS" )
elseif f24_local0.attachIndex == 2 then
f24_local1 = Engine.Localize( "@LUA_MENU_ATTACHMENT_THREE_CAPS" )
end
return {
type = "UIElement",
id = "abilities_grid_container",
states = {
default = {
leftAnchor = true,
rightAnchor = false,
topAnchor = true,
bottomAnchor = false,
left = Cac.Layout.AttachmentChooseDims.Grid.menu_left,
width = 675,
top = Cac.Layout.AttachmentChooseDims.Grid.menu_top,
bottom = 452
}
},
children = {
{
type = "generic_drop_shadow",
properties = {
offset_shadow = 0
},
states = {
default = {
topAnchor = true,
bottomAnchor = true,
leftAnchor = true,
rightAnchor = true,
top = 0,
bottom = 0,
left = 0,
right = 0,
alpha = Cac.Swatches.Alphas.cac_panel_background_shadow
}
}
},
{
type = "generic_menu_titlebar",
id = "window_title",
properties = {
font = CoD.TextSettings.BoldFont,
title_bar_text = f24_local1,
title_bar_text_indent = GenericTitleBarDims.TitleBarLCapWidth,
title_bar_alignment = LUI.Alignment.Left,
fill_alpha = 1
}
},
{
type = "generic_menu_background",
id = "window_background",
properties = {
fill_alpha = 1
}
},
{
type = "UIVerticalList",
id = "attachments_grid_shades",
states = {
default = {
leftAnchor = true,
rightAnchor = true,
topAnchor = true,
bottomAnchor = true,
left = 0,
right = 0,
top = GenericTitleBarDims.TitleBarHeight,
bottom = 0
}
},
childrenFeeder = AttachmentGridShadeFeeder
},
{
type = "UIVerticalList",
id = "attachments_grid_text",
states = {
default = {
leftAnchor = true,
rightAnchor = true,
topAnchor = true,
bottomAnchor = true,
left = 0,
right = 0,
top = GenericTitleBarDims.TitleBarHeight + 30,
bottom = 0,
spacing = Cac.Layout.AttachmentChooseDims.Grid.row_height - CoD.TextSettings.NormalFont.Height
}
},
childrenFeeder = AttachmentGridTextFeeder
},
{
type = "UIGrid",
id = "attachment_selection_grid_id",
focusable = true,
states = {
default = {
topAnchor = true,
bottomAnchor = false,
leftAnchor = true,
rightAnchor = false,
top = 37,
left = Cac.Layout.AttachmentChooseDims.Grid.text_space,
width = 430,
height = 330
}
},
properties = {
elementsPerRow = 6,
hSpacing = Cac.Layout.AttachmentChooseDims.Grid.horizontal_spacing,
rowHeight = Cac.Layout.AttachmentChooseDims.Grid.row_height,
hAlign = LUI.Alignment.Left,
vAlign = LUI.Alignment.Top
},
childrenFeeder = AttachmentSelectionFeeder
}
}
}
end
function CacEditWeaponAttachLeave( f25_arg0, f25_arg1 )
local f25_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( f25_arg0 )
local f25_local1 = Cac.GetAttachment( f25_local0.controller, f25_local0.squadLocation, f25_local0.squadMemberIndex, f25_local0.classLocation, f25_local0.slot, f25_local0.weaponIndex, f25_local0.attachIndex )
Cac.ValidateReticle( f25_local0.controller, f25_local0.squadLocation, f25_local0.squadMemberIndex, f25_local0.classLocation, f25_local0.slot, f25_local0.weaponIndex )
f25_arg0:dispatchEventToRoot( {
name = "update_cac_info_panel",
controller = f25_local0.controller,
dispatchChildren = true
} )
end
function cac_edit_weapon_attach_choose_main()
return {
type = "UIElement",
id = "cac_edit_weapon_attach_choose_main_id",
properties = {
squadLocation = "privateMatchSquadMembers",
squadMemberIndex = 0,
slot = 0,
classLocation = "loadouts",
weaponIndex = 0,
attachIndex = 0
},
states = {
default = {
leftAnchor = true,
rightAnchor = true,
topAnchor = true,
bottomAnchor = true,
left = 0,
right = 0,
top = 0,
bottom = 0
}
},
handlers = {
menu_close = CacEditWeaponAttachLeave,
open_reticle_popup = function ( f27_arg0, f27_arg1 )
LUI.FlowManager.RequestPopupMenu( f27_arg0, "cac_edit_choose_image_popup", true, f27_arg1.controller, true, f27_arg1.data, nil, nil, false )
end
},
children = {
attachment_grid(),
attachment_decription(),
{
type = "generic_back_button",
handlers = {
button_secondary = function ( f28_arg0, f28_arg1 )
local f28_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( f28_arg0 )
f28_arg0:dispatchEventToRoot( {
name = "unlock_attachments",
weaponIndex = f28_local0.weaponIndex
} )
LUI.FlowManager.RequestLeaveMenu( f28_arg0 )
end
}
}
}
}
end
LUI.MenuBuilder.registerDef( "cac_edit_weapon_attach_choose_main", cac_edit_weapon_attach_choose_main )
LUI.MenuBuilder.registerType( "cac_attachment_button", cac_attachment_button )
LUI.MenuBuilder.registerDef( "cac_purchase_attach_popup", cac_purchase_attach_popup )
LUI.MenuBuilder.registerDef( "cac_cant_purchase_attach_popup", cac_cant_purchase_attach_popup )
LockTable( _M )