2732 lines
86 KiB
Lua
2732 lines
86 KiB
Lua
local f0_local0 = module
|
|
local f0_local1, f0_local2 = ...
|
|
f0_local0( f0_local1, package.seeall )
|
|
CoD.PrintModuleLoad( _NAME )
|
|
function GetInterMenuData( f1_arg0 )
|
|
local f1_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( f1_arg0 )
|
|
return {
|
|
open_char_list = true,
|
|
squadLocation = f1_local0.squadLocation,
|
|
squadMemberIndex = f1_local0.squadMemberIndex,
|
|
slot = f1_local0.loadout_slot,
|
|
alternateCacMenus = f1_local0.alternateCacMenus,
|
|
allowMemberSwap = f1_local0.allowMemberSwap
|
|
}
|
|
end
|
|
|
|
function RebindShoulderButtons( f2_arg0, f2_arg1 )
|
|
f2_arg0:dispatchEventToRoot( {
|
|
name = "rebind_shoulder_buttons",
|
|
immediate = true
|
|
} )
|
|
end
|
|
|
|
function UnbindShoulderButtons( f3_arg0, f3_arg1 )
|
|
f3_arg0:dispatchEventToRoot( {
|
|
name = "unbind_shoulder_buttons",
|
|
immediate = true
|
|
} )
|
|
end
|
|
|
|
function ChangeGender( f4_arg0, f4_arg1, f4_arg2 )
|
|
local f4_local0 = LUI.FlowManager.GetMenuScopedDataByMenuName( "cac_customize_main" )
|
|
local f4_local1 = Cac.ResetGenderDependantFields
|
|
local f4_local2 = f4_local0.exclusiveControllerIndex
|
|
local f4_local3 = f4_local0.squadLocation
|
|
local f4_local4 = f4_local0.squadMemberIndex
|
|
local f4_local5
|
|
if f4_arg2 then
|
|
f4_local5 = Cac.Customization.Gender.Female
|
|
if not f4_local5 then
|
|
|
|
else
|
|
f4_local1( f4_local2, f4_local3, f4_local4, f4_local5 )
|
|
f4_arg0:processEvent( {
|
|
name = "content_refresh"
|
|
} )
|
|
f4_arg0:dispatchEventToRoot( {
|
|
name = "character_full_refresh"
|
|
} )
|
|
f4_arg0:dispatchEventToRoot( {
|
|
name = "refresh_new_icons"
|
|
} )
|
|
end
|
|
end
|
|
f4_local5 = Cac.Customization.Gender.Male
|
|
end
|
|
|
|
function cac_customize_gender_popup()
|
|
local f5_local0 = LUI.FlowManager.GetMenuScopedDataByMenuName( "cac_customize_main" )
|
|
local f5_local1 = Cac.GetCurrentGender( f5_local0.exclusiveControllerIndex, f5_local0.squadLocation, f5_local0.squadMemberIndex ) == Cac.Customization.Gender.Female
|
|
local f5_local2 = {
|
|
type = "generic_yesno_popup"
|
|
}
|
|
local f5_local3 = {
|
|
cancel_means_no = false,
|
|
popup_title = Engine.Localize( "@LUA_MENU_CUSTOMIZATION_FIELD_GENDER_CAPS" ),
|
|
message_text = Engine.Localize( "@LUA_MENU_CHOOSE_GENDER" ),
|
|
yes_action = function ( f6_arg0, f6_arg1 )
|
|
ChangeGender( f6_arg0, f6_arg1, true )
|
|
end,
|
|
no_action = function ( f7_arg0, f7_arg1 )
|
|
ChangeGender( f7_arg0, f7_arg1, false )
|
|
end,
|
|
yes_text = Engine.Localize( "@LUA_MENU_CUSTOMIZATION_FEMALE_CAPS" ),
|
|
no_text = Engine.Localize( "@LUA_MENU_CUSTOMIZATION_MALE_CAPS" )
|
|
}
|
|
local f5_local4
|
|
if f5_local1 then
|
|
f5_local4 = 1
|
|
if not f5_local4 then
|
|
|
|
else
|
|
f5_local3.default_focus_index = f5_local4
|
|
f5_local2.properties = f5_local3
|
|
return f5_local2
|
|
end
|
|
end
|
|
f5_local4 = 2
|
|
end
|
|
|
|
function InputClanTagComplete( f8_arg0, f8_arg1 )
|
|
if f8_arg1.text then
|
|
local f8_local0 = LUI.FlowManager.GetMenuScopedDataByMenuName( "cac_customize_main" )
|
|
Engine.SetAndEnableCustomClanTag( f8_local0.exclusiveControllerIndex, f8_arg1.text )
|
|
RefreshClanTag( f8_arg0 )
|
|
end
|
|
end
|
|
|
|
function RefreshClanTag( f9_arg0 )
|
|
local f9_local0 = Cac.Customization.Fields[Cac.Customization.FieldIndexes.ClanTag]
|
|
local f9_local1 = LUI.FlowManager.GetMenuScopedDataByMenuName( "cac_customize_main" )
|
|
f9_arg0:dispatchEventToRoot( {
|
|
name = "preview_element",
|
|
field = f9_local0,
|
|
elementRef = f9_local0.GetSavedRef( f9_local1.exclusiveControllerIndex )
|
|
} )
|
|
end
|
|
|
|
function cac_customize_clan_tag_popup()
|
|
local f10_local0 = LUI.FlowManager.GetMenuScopedDataByMenuName( "cac_customize_main" )
|
|
Engine.AntiCheatBanCheck( f10_local0.exclusiveControllerIndex, CoD.AntiCheat.Ban.FEATURE_BAN_CLAN_TAGS )
|
|
if not f10_local0.currentField or not f10_local0.exclusiveControllerIndex then
|
|
DebugPrint( "WARNING: Opening cac_customize_clan_tag_popup while no field is currently selected, this should only happen on LUI reload. Closing popup." )
|
|
return {
|
|
type = "UIElement",
|
|
handlers = {
|
|
menu_create = MBh.LeaveMenu()
|
|
}
|
|
}
|
|
end
|
|
local f10_local1 = Clan.AlreadyMember( f10_local0.exclusiveControllerIndex ) and Clan.GetName( f10_local0.exclusiveControllerIndex ) or nil
|
|
local f10_local2 = Engine.IsXbox360()
|
|
if not f10_local2 then
|
|
f10_local2 = Engine.IsXB3()
|
|
end
|
|
return {
|
|
type = "generic_selectionList_popup",
|
|
properties = {
|
|
popup_title = Engine.Localize( "@LUA_MENU_CHOOSE_" .. f10_local0.currentField.LocName ),
|
|
popup_width = 700,
|
|
popup_childfeeder = function ()
|
|
local f11_local0 = {}
|
|
local f11_local1 = #f11_local0 + 1
|
|
local f11_local2 = {
|
|
type = "UIGenericButton",
|
|
id = "use_custom_tag"
|
|
}
|
|
local f11_local3 = f10_local2
|
|
if f11_local3 then
|
|
f11_local3 = not Engine.IsUserSignedInToLive( f10_local0.exclusiveControllerIndex )
|
|
end
|
|
f11_local2.disabled = f11_local3
|
|
f11_local2.properties = {
|
|
style = GenericButtonSettings.Styles.GlassButton,
|
|
substyle = GenericButtonSettings.Styles.GlassButton.SubStyles.Popup,
|
|
text = Engine.Localize( "@LUA_MENU_CUSTOM_CLAN_TAG" ),
|
|
button_action_func = function ( f12_arg0, f12_arg1 )
|
|
Engine.OpenScreenKeyboard( f10_local0.exclusiveControllerIndex, Engine.Localize( "@LUA_MENU_CUSTOM_CLAN_TAG" ), Engine.GetCustomClanTag( f10_local0.exclusiveControllerIndex ) or "", 4, true, true )
|
|
LUI.FlowManager.RequestLeaveMenu( f12_arg0 )
|
|
end,
|
|
button_over_disable_func = function ( f13_arg0, f13_arg1 )
|
|
f13_arg0:dispatchEventToRoot( {
|
|
name = "update_clan_tag_help",
|
|
text = Engine.Localize( "@PLATFORM_REQUIRE_ONLINE_FOR_CLAN_TAG" )
|
|
} )
|
|
end,
|
|
button_over_func = function ( f14_arg0, f14_arg1 )
|
|
f14_arg0:dispatchEventToRoot( {
|
|
name = "update_clan_tag_help",
|
|
text = Engine.Localize( "@LUA_MENU_CUSTOM_CLAN_TAG_DESC" )
|
|
} )
|
|
end
|
|
}
|
|
f11_local0[f11_local1] = f11_local2
|
|
if Clan.IsEnabled() then
|
|
f11_local0[#f11_local0 + 1] = {
|
|
type = "UIGenericButton",
|
|
id = "use_tag_from_clan",
|
|
disabled = not Clan.AlreadyMember( f10_local0.exclusiveControllerIndex ),
|
|
properties = {
|
|
style = GenericButtonSettings.Styles.GlassButton,
|
|
substyle = GenericButtonSettings.Styles.GlassButton.SubStyles.Popup,
|
|
text = f10_local1 and Engine.Localize( "@LUA_MENU_USE_TAG_FROM_NAMED_ELITE_CLAN", Engine.MarkLocalized( f10_local1 ) ) or Engine.Localize( "@LUA_MENU_USE_TAG_FROM_ELITE_CLAN" ),
|
|
button_action_func = function ( f15_arg0, f15_arg1 )
|
|
Engine.SetProfileDataUseEliteClanTag( f10_local0.exclusiveControllerIndex, true )
|
|
LUI.FlowManager.RequestLeaveMenu( f15_arg0 )
|
|
RefreshClanTag( f15_arg0 )
|
|
end,
|
|
button_over_disable_func = function ( f16_arg0, f16_arg1 )
|
|
f16_arg0:dispatchEventToRoot( {
|
|
name = "update_clan_tag_help",
|
|
text = Engine.Localize( "@LUA_MENU_USE_TAG_FROM_ELITE_CLAN_DESC" )
|
|
} )
|
|
end,
|
|
button_over_func = function ( f17_arg0, f17_arg1 )
|
|
f17_arg0:dispatchEventToRoot( {
|
|
name = "update_clan_tag_help",
|
|
text = Engine.Localize( "@LUA_MENU_USE_TAG_FROM_NAMED_ELITE_CLAN_DESC" )
|
|
} )
|
|
end
|
|
}
|
|
}
|
|
end
|
|
f11_local1 = #f11_local0 + 1
|
|
f11_local2 = {
|
|
type = "UIGenericButton",
|
|
id = "clear_tag"
|
|
}
|
|
f11_local3 = f10_local2
|
|
if f11_local3 then
|
|
f11_local3 = not Engine.IsUserSignedInToLive( f10_local0.exclusiveControllerIndex )
|
|
end
|
|
f11_local2.disabled = f11_local3
|
|
f11_local2.properties = {
|
|
style = GenericButtonSettings.Styles.GlassButton,
|
|
substyle = GenericButtonSettings.Styles.GlassButton.SubStyles.Popup,
|
|
text = Engine.Localize( "@LUA_MENU_CLEAR_YOUR_CLAN_TAG" ),
|
|
button_action_func = function ( f18_arg0, f18_arg1 )
|
|
Engine.ClearCustomClanTag( f10_local0.exclusiveControllerIndex )
|
|
Engine.SetProfileDataUseEliteClanTag( f10_local0.exclusiveControllerIndex, false )
|
|
RefreshClanTag( f18_arg0 )
|
|
LUI.FlowManager.RequestLeaveMenu( f18_arg0 )
|
|
end,
|
|
button_over_disable_func = function ( f19_arg0, f19_arg1 )
|
|
f19_arg0:dispatchEventToRoot( {
|
|
name = "update_clan_tag_help",
|
|
text = Engine.Localize( "@PLATFORM_REQUIRE_ONLINE_FOR_CLAN_TAG" )
|
|
} )
|
|
end,
|
|
button_over_func = function ( f20_arg0, f20_arg1 )
|
|
f20_arg0:dispatchEventToRoot( {
|
|
name = "update_clan_tag_help",
|
|
text = Engine.Localize( "@LUA_MENU_CLEAR_CLAN_TAG_DESC" )
|
|
} )
|
|
end
|
|
}
|
|
f11_local0[f11_local1] = f11_local2
|
|
f11_local0[#f11_local0 + 1] = {
|
|
type = "UIElement",
|
|
id = "spacer",
|
|
states = {
|
|
default = {
|
|
leftAnchor = true,
|
|
rightAnchor = true,
|
|
topAnchor = true,
|
|
bottomAnchor = false,
|
|
left = 0,
|
|
right = 0,
|
|
top = 0,
|
|
bottom = 10
|
|
}
|
|
}
|
|
}
|
|
f11_local0[#f11_local0 + 1] = {
|
|
type = "UIText",
|
|
id = "help_text",
|
|
properties = {
|
|
text = Engine.Localize( "@LUA_MENU_CUSTOM_CLAN_TAG_DESC" )
|
|
},
|
|
states = {
|
|
default = {
|
|
font = CoD.TextSettings.NormalFont.Font,
|
|
alignment = LUI.Alignment.Center,
|
|
leftAnchor = true,
|
|
rightAnchor = true,
|
|
topAnchor = true,
|
|
bottomAnchor = false,
|
|
left = 0,
|
|
right = 0,
|
|
top = 0,
|
|
bottom = CoD.TextSettings.NormalFont.Height,
|
|
red = 1,
|
|
green = 1,
|
|
blue = 1
|
|
}
|
|
},
|
|
handlers = {
|
|
update_clan_tag_help = function ( f21_arg0, f21_arg1 )
|
|
if f21_arg1.text then
|
|
f21_arg0:setText( f21_arg1.text )
|
|
end
|
|
end
|
|
}
|
|
}
|
|
return f11_local0
|
|
end
|
|
|
|
}
|
|
}
|
|
end
|
|
|
|
function CustomizeSmallPopupButton( f22_arg0, f22_arg1 )
|
|
assert( f22_arg0.currentField )
|
|
local f22_local0 = Cac.IsCustomizationItemDLC( f22_arg0.currentField, f22_arg1 )
|
|
local f22_local1 = function ( f23_arg0, f23_arg1 )
|
|
if f22_arg0.currentField.PreviewFunction then
|
|
f23_arg0.previewOutput = f22_arg0.currentField.PreviewFunction( nil, nil, nil, f22_arg1, nil, nil )
|
|
end
|
|
assert( f22_arg0.currentField.UnlockType )
|
|
Cac.MarkItemNoMoreNewIcon( f22_arg0.exclusiveControllerIndex, f22_arg1, f22_arg0.currentField.UnlockType )
|
|
f23_arg0:dispatchEventToRoot( {
|
|
name = "refresh_new_icons",
|
|
immediate = true
|
|
} )
|
|
f23_arg0:processEvent( {
|
|
name = "hide_new_icon"
|
|
} )
|
|
end
|
|
|
|
local f22_local2 = function ( f24_arg0, f24_arg1 )
|
|
if f24_arg0.previewOutput then
|
|
Engine.StopSound( f24_arg0.previewOutput )
|
|
f24_arg0.previewOutput = nil
|
|
end
|
|
end
|
|
|
|
local self = LUI.UIGenericButton.new( nil, {
|
|
style = GenericButtonSettings.Styles.GlassButton,
|
|
substyle = GenericButtonSettings.Styles.GlassButton.SubStyles.Popup,
|
|
button_text = Engine.Localize( f22_arg0.currentField.GetName( f22_arg1 ) ),
|
|
button_over_func = f22_local1,
|
|
button_over_disable_func = f22_local1,
|
|
button_up_func = f22_local2,
|
|
button_disable_func = f22_local2,
|
|
button_action_func = function ( f25_arg0, f25_arg1 )
|
|
f22_arg0.currentField.SaveRef( f25_arg1.controller, f22_arg0.squadLocation, f22_arg0.squadMemberIndex, f22_arg1 )
|
|
LUI.FlowManager.RequestLeaveMenu( f25_arg0 )
|
|
end,
|
|
button_action_disable_func = function ( f26_arg0, f26_arg1 )
|
|
if f22_local0 and not Cac.IsCustomizationItemUnlocked( f22_arg0.exclusiveControllerIndex, f22_arg0.currentField, f22_arg1 ) and not IsOfflineMatch() then
|
|
if Engine.IsPC() then
|
|
Sns.OpenStoreMenu( f22_arg0.exclusiveControllerIndex )
|
|
else
|
|
assert( f22_arg0.currentField.DLCOffer )
|
|
Sns.OpenStoreLinkConfirmPopup( f22_arg0.exclusiveControllerIndex, Engine.TableLookup( f22_arg0.currentField.csv, 0, f22_arg1, f22_arg0.currentField.DLCOffer ) )
|
|
end
|
|
end
|
|
end
|
|
} )
|
|
self.id = "button_" .. f22_arg1
|
|
self.properties = self.properties or {}
|
|
self.properties.allowDisabledAction = true
|
|
local f22_local4 = function ( f27_arg0, f27_arg1 )
|
|
local f27_local0 = Cac.IsCustomizationItemUnlocked( f22_arg0.exclusiveControllerIndex, f22_arg0.currentField, f22_arg1 )
|
|
local f27_local1 = f27_arg0
|
|
local f27_local2 = f27_arg0.processEvent
|
|
local f27_local3 = {}
|
|
local f27_local4
|
|
if f27_local0 then
|
|
f27_local4 = "enable"
|
|
if not f27_local4 then
|
|
|
|
else
|
|
f27_local3.name = f27_local4
|
|
f27_local2( f27_local1, f27_local3 )
|
|
f27_arg0:processEvent( {
|
|
name = "update_dlc_icon"
|
|
} )
|
|
end
|
|
end
|
|
f27_local4 = "disable"
|
|
end
|
|
|
|
self:registerEventHandler( "refresh_lock", f22_local4 )
|
|
self:registerEventHandler( "menu_create", f22_local4 )
|
|
if f22_local0 then
|
|
self:registerEventHandler( "dlc_mount_complete", f22_local4 )
|
|
end
|
|
if f22_local0 then
|
|
local f22_local5 = 24
|
|
local f22_local6 = LUI.UIImage.new( {
|
|
material = RegisterMaterial( "icon_dlc" ),
|
|
topAnchor = true,
|
|
bottomAnchor = false,
|
|
leftAnchor = false,
|
|
rightAnchor = true,
|
|
top = 5,
|
|
right = -f22_local5,
|
|
width = f22_local5,
|
|
height = f22_local5,
|
|
alpha = 0
|
|
} )
|
|
f22_local6:registerAnimationState( "visible", {
|
|
alpha = 1
|
|
} )
|
|
f22_local6.id = "icon_dlc"
|
|
self:addElement( f22_local6 )
|
|
f22_local6:registerEventHandler( "menu_create", function ( element, event )
|
|
element:processEvent( {
|
|
name = "update_dlc_icon"
|
|
} )
|
|
end )
|
|
f22_local6:registerEventHandler( "update_dlc_icon", function ( element, event )
|
|
local f29_local0 = Cac.IsCustomizationItemUnlocked( f22_arg0.exclusiveControllerIndex, f22_arg0.currentField, f22_arg1 )
|
|
local f29_local1 = element
|
|
local f29_local2 = element.animateToState
|
|
local f29_local3
|
|
if f29_local0 then
|
|
f29_local3 = "default"
|
|
if not f29_local3 then
|
|
|
|
else
|
|
f29_local2( f29_local1, f29_local3 )
|
|
end
|
|
end
|
|
f29_local3 = "visible"
|
|
end )
|
|
end
|
|
assert( f22_arg0.currentField.UnlockType )
|
|
if Cac.ItemHasNewIcon( f22_arg0.exclusiveControllerIndex, f22_arg1, f22_arg0.currentField.UnlockType ) then
|
|
self:processEvent( {
|
|
name = "show_new_icon"
|
|
} )
|
|
end
|
|
return self
|
|
end
|
|
|
|
function cac_customize_small_popup()
|
|
local f30_local0 = 430
|
|
local f30_local1 = LUI.FlowManager.GetMenuScopedDataByMenuName( "cac_customize_main" )
|
|
if not f30_local1.currentField then
|
|
DebugPrint( "WARNING: Opening cac_customize_small_popup while no field is currently selected, this should only happen on LUI reload. Closing popup." )
|
|
local self = LUI.UIElement.new()
|
|
self:registerEventHandler( "menu_create", MBh.LeaveMenu() )
|
|
return self
|
|
end
|
|
assert( f30_local1.categories )
|
|
assert( f30_local1.categories[1] )
|
|
f30_local1.elements = f30_local1.categories[1].elements
|
|
assert( f30_local1.elements )
|
|
local self = LUI.MenuBuilder.BuildRegisteredType( "generic_selectionList_popup", {
|
|
popup_title = f30_local1.categories[1].name
|
|
} )
|
|
if f30_local1.currentField.HelpText then
|
|
local f30_local3 = LUI.UIText.new( CoD.ColorizeState( Colors.primary_text_color, {
|
|
topAnchor = true,
|
|
bottomAnchor = false,
|
|
leftAnchor = true,
|
|
rightAnchor = true,
|
|
top = 0,
|
|
bottom = CoD.TextSettings.NormalFont.Height,
|
|
left = 12,
|
|
right = -12,
|
|
font = CoD.TextSettings.NormalFont.Font,
|
|
alignment = LUI.Alignment.Center
|
|
} ) )
|
|
f30_local3.id = "help_text"
|
|
f30_local3:setText( Engine.Localize( f30_local1.currentField.HelpText ) )
|
|
self.addListElement( f30_local3 )
|
|
local f30_local4 = LUI.UIElement.new( {
|
|
topAnchor = true,
|
|
bottomAnchor = false,
|
|
leftAnchor = true,
|
|
rightAnchor = true,
|
|
top = 0,
|
|
height = 12,
|
|
left = 0,
|
|
right = 0
|
|
} )
|
|
f30_local4.id = "separator"
|
|
self.addListElement( f30_local4 )
|
|
end
|
|
for f30_local6, f30_local7 in ipairs( f30_local1.elements ) do
|
|
self.addListElement( CustomizeSmallPopupButton( f30_local1, f30_local7 ) )
|
|
end
|
|
return self
|
|
end
|
|
|
|
function cac_customize_navigation_dots()
|
|
local f31_local0 = LUI.FlowManager.GetMenuScopedDataByMenuName( "cac_customize_main" )
|
|
local f31_local1 = 12
|
|
local f31_local2 = {
|
|
type = "UIHorizontalList",
|
|
id = "cac_customize_navigation_dots",
|
|
states = {
|
|
default = {
|
|
leftAnchor = true,
|
|
rightAnchor = true,
|
|
topAnchor = true,
|
|
bottomAnchor = true,
|
|
left = 0,
|
|
right = 0,
|
|
top = 43,
|
|
bottom = 0,
|
|
alignment = LUI.Alignment.Center,
|
|
spacing = 3,
|
|
alpha = 1
|
|
},
|
|
hidden = {
|
|
alpha = 0
|
|
}
|
|
},
|
|
handlers = {
|
|
menu_create = function ( f32_arg0, f32_arg1 )
|
|
local f32_local0 = f32_arg0
|
|
local f32_local1 = f32_arg0.animateToState
|
|
local f32_local2
|
|
if #f31_local0.categories > 1 then
|
|
f32_local2 = "default"
|
|
if not f32_local2 then
|
|
|
|
else
|
|
f32_local1( f32_local0, f32_local2 )
|
|
end
|
|
end
|
|
f32_local2 = "hidden"
|
|
end
|
|
},
|
|
children = {}
|
|
}
|
|
for f31_local3 = 1, #f31_local0.categories, 1 do
|
|
local f31_local6 = f31_local3
|
|
local f31_local7 = {
|
|
type = "UIImage",
|
|
id = "nav_dot_" .. f31_local6,
|
|
states = {
|
|
default = {
|
|
leftAnchor = true,
|
|
rightAnchor = false,
|
|
topAnchor = true,
|
|
bottomAnchor = false,
|
|
left = 0,
|
|
right = f31_local1,
|
|
top = 0,
|
|
bottom = f31_local1,
|
|
material = RegisterMaterial( "widg_circle_empty" )
|
|
},
|
|
focused = {
|
|
material = RegisterMaterial( "widg_circle_fill" )
|
|
}
|
|
}
|
|
}
|
|
local f31_local8 = {}
|
|
local f31_local9 = MBh.AnimateToState
|
|
local f31_local10
|
|
if f31_local6 == f31_local0.currentPage then
|
|
f31_local10 = "focused"
|
|
if not f31_local10 then
|
|
|
|
else
|
|
f31_local8.menu_create = f31_local9( f31_local10 )
|
|
f31_local8.element_refresh = function ( f33_arg0, f33_arg1 )
|
|
if f33_arg1.page_change then
|
|
local f33_local0 = f33_arg0
|
|
local f33_local1 = f33_arg0.animateToState
|
|
local f33_local2 = f31_local6
|
|
local f33_local3 = f31_local0.currentPage
|
|
f33_local1( f33_local0, REG6 and "focused" or "default" )
|
|
end
|
|
end
|
|
|
|
f31_local7.handlers = f31_local8
|
|
table.insert( f31_local2.children, f31_local7 )
|
|
end
|
|
end
|
|
f31_local10 = "default"
|
|
end
|
|
return f31_local2
|
|
end
|
|
|
|
function CloseCustomizeGrid( f34_arg0, f34_arg1 )
|
|
f34_arg0:dispatchEventToRoot( {
|
|
name = "close_customize_popup",
|
|
immediate = true
|
|
} )
|
|
local f34_local0 = LUI.FlowManager.GetMenuScopedDataByMenuName( "cac_customize_main" )
|
|
f34_local0.currentPage = nil
|
|
f34_local0.rowsOffset = nil
|
|
f34_local0.categories = nil
|
|
f34_local0.elements = nil
|
|
f34_local0.popup = nil
|
|
end
|
|
|
|
function cac_customize_element_description()
|
|
return {
|
|
type = "UIElement",
|
|
id = "desc_container_id",
|
|
states = {
|
|
default = {
|
|
leftAnchor = true,
|
|
rightAnchor = true,
|
|
topAnchor = false,
|
|
bottomAnchor = true,
|
|
left = 10,
|
|
right = -5,
|
|
top = -5 - 2 * CoD.TextSettings.NormalFont.Height,
|
|
bottom = -5 - CoD.TextSettings.NormalFont.Height
|
|
}
|
|
},
|
|
handlers = {
|
|
popup_focus_changed = function ( f36_arg0, f36_arg1 )
|
|
local f36_local0 = LUI.FlowManager.GetMenuScopedDataByMenuName( "cac_customize_main" )
|
|
if f36_local0.currentElementRef then
|
|
local f36_local1, f36_local2 = Cac.Customization.GetReqsStringForItem( f36_local0.currentElementRef, f36_local0.currentField, f36_local0.exclusiveControllerIndex, true, true )
|
|
if f36_local1 then
|
|
local f36_local3 = f36_arg0:getChildById( "element_description_main" )
|
|
if f36_local3 then
|
|
f36_local3:setText( f36_local1 )
|
|
end
|
|
end
|
|
if f36_local2 then
|
|
local f36_local3 = f36_arg0:getChildById( "element_description_sub" )
|
|
if f36_local3 then
|
|
f36_local3:setText( f36_local2 )
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
},
|
|
children = {
|
|
{
|
|
type = "UIMarqueeText",
|
|
id = "element_description_main",
|
|
states = {
|
|
default = CoD.ColorizeState( Colors.primary_text_color, {
|
|
font = CoD.TextSettings.NormalFont.Font,
|
|
alignment = LUI.Alignment.Left,
|
|
leftAnchor = true,
|
|
rightAnchor = true,
|
|
topAnchor = true,
|
|
bottomAnchor = true,
|
|
left = 0,
|
|
right = -120,
|
|
top = 0,
|
|
bottom = 0
|
|
} )
|
|
}
|
|
},
|
|
{
|
|
type = "UIMarqueeText",
|
|
id = "element_description_sub",
|
|
states = {
|
|
default = CoD.ColorizeState( Colors.primary_text_color, {
|
|
font = CoD.TextSettings.NormalFont.Font,
|
|
alignment = LUI.Alignment.Left,
|
|
leftAnchor = true,
|
|
rightAnchor = true,
|
|
topAnchor = true,
|
|
bottomAnchor = true,
|
|
left = 0,
|
|
right = -10,
|
|
top = CoD.TextSettings.NormalFont.Height,
|
|
bottom = CoD.TextSettings.NormalFont.Height
|
|
} )
|
|
}
|
|
}
|
|
}
|
|
}
|
|
end
|
|
|
|
function cac_customize_element_counter()
|
|
return {
|
|
type = "UIText",
|
|
id = "element_counter",
|
|
states = {
|
|
default = {
|
|
font = CoD.TextSettings.NormalFont.Font,
|
|
alignment = LUI.Alignment.Right,
|
|
leftAnchor = true,
|
|
rightAnchor = true,
|
|
topAnchor = false,
|
|
bottomAnchor = true,
|
|
left = 0,
|
|
right = -5,
|
|
top = -5 - 2 * CoD.TextSettings.NormalFont.Height,
|
|
bottom = -5 - CoD.TextSettings.NormalFont.Height,
|
|
red = Colors.primary_text_color.r,
|
|
green = Colors.primary_text_color.g,
|
|
blue = Colors.primary_text_color.b
|
|
}
|
|
},
|
|
handlers = {
|
|
popup_focus_changed = function ( f38_arg0, f38_arg1 )
|
|
local f38_local0 = LUI.FlowManager.GetMenuScopedDataByMenuName( "cac_customize_main" )
|
|
local f38_local1 = ""
|
|
if not SvS.IsSvS() and (IsPublicMatch() or IsOnlineAliens()) and f38_local0.currentElementRef then
|
|
local f38_local2 = getUnlockReqsForItemOfType( f38_local0.currentElementRef, f38_local0.currentField.UnlockType )
|
|
if f38_local2.chalAndTier and f38_local2.chalAndTier ~= "" then
|
|
local f38_local3, f38_local4 = parseChallengeName( f38_local2.chalAndTier )
|
|
local f38_local5 = getGroupRefForOperation( f38_local3 )
|
|
local f38_local6 = f38_local5
|
|
local f38_local7
|
|
if f38_local5 ~= "" then
|
|
f38_local7 = isOpActive( f38_local0.exclusiveControllerIndex, f38_local3 )
|
|
else
|
|
f38_local7 = false
|
|
end
|
|
if f38_local7 then
|
|
local f38_local8 = getOperationState( f38_local0.exclusiveControllerIndex, f38_local3 )
|
|
if f38_local8 <= f38_local4 then
|
|
local f38_local9 = operationGetTargetForTier( f38_local3, f38_local4, true )
|
|
local f38_local10 = operationGetProgress( f38_local0.exclusiveControllerIndex, f38_local3 )
|
|
if f38_local8 > 1 then
|
|
f38_local10 = f38_local10 + operationGetTargetForTier( f38_local3, f38_local8 - 1, true )
|
|
end
|
|
if f38_local3 == "ch_longersprint_pro" then
|
|
local f38_local11 = 528
|
|
f38_local9 = math.floor( tonumber( f38_local9 ) / f38_local11 )
|
|
f38_local10 = math.floor( f38_local10 / f38_local11 )
|
|
end
|
|
f38_local1 = f38_local10 .. "/" .. f38_local9
|
|
end
|
|
end
|
|
elseif f38_local2.killsExt and f38_local2.killsExt ~= "" then
|
|
local f38_local3 = tonumber( f38_local2.killsExt )
|
|
local f38_local4 = LUI.mp_menus.Aliens.getAliensCareerWeaponKills( f38_local0.exclusiveControllerIndex )
|
|
if f38_local4 < f38_local3 then
|
|
f38_local1 = f38_local4 .. "/" .. f38_local3
|
|
end
|
|
elseif f38_local2.escapesExt and f38_local2.escapesExt ~= "" then
|
|
local f38_local3 = tonumber( f38_local2.escapesExt )
|
|
local f38_local4 = LUI.mp_menus.Aliens.getAliensCareerEscapes( f38_local0.exclusiveControllerIndex )
|
|
if f38_local4 < f38_local3 then
|
|
f38_local1 = f38_local4 .. "/" .. f38_local3
|
|
end
|
|
elseif f38_local2.revivesExt and f38_local2.revivesExt ~= "" then
|
|
local f38_local3 = tonumber( f38_local2.revivesExt )
|
|
local f38_local4 = LUI.mp_menus.Aliens.getAliensCareerRevives( f38_local0.exclusiveControllerIndex )
|
|
if f38_local4 < f38_local3 then
|
|
f38_local1 = f38_local4 .. "/" .. f38_local3
|
|
end
|
|
end
|
|
end
|
|
f38_arg0:setText( f38_local1 )
|
|
end
|
|
|
|
}
|
|
}
|
|
end
|
|
|
|
function PreviewElement( f39_arg0, f39_arg1 )
|
|
local f39_local0 = LUI.FlowManager.GetMenuScopedDataByMenuName( "cac_customize_main" )
|
|
if f39_local0.currentField then
|
|
f39_arg0:dispatchEventToRoot( {
|
|
name = "preview_element",
|
|
immediate = true,
|
|
field = f39_local0.currentField,
|
|
elementRef = f39_arg1
|
|
} )
|
|
end
|
|
end
|
|
|
|
function RefreshScrollbar( f40_arg0, f40_arg1 )
|
|
if f40_arg1.scrollbar and f40_arg0.properties and f40_arg0.properties.elementsPerRow then
|
|
f40_arg1.scrollbar:manualUpdate( f40_arg1.rowsOffset, f40_arg0.properties.maxRows, math.ceil( #f40_arg1.elements / f40_arg0.properties.elementsPerRow ), f40_arg0.properties.rowHeight )
|
|
end
|
|
end
|
|
|
|
function ScrollBy( f41_arg0, f41_arg1, f41_arg2, f41_arg3 )
|
|
local f41_local0 = LUI.FlowManager.GetMenuScopedDataByMenuName( "cac_customize_main" )
|
|
local f41_local1 = math.ceil( #f41_local0.elements / f41_arg0.properties.elementsPerRow )
|
|
local f41_local2 = f41_local0.rowsOffset
|
|
f41_local0.rowsOffset = LUI.clamp( f41_local0.rowsOffset + f41_arg3, 0, math.max( 0, f41_local1 - f41_arg0.properties.maxRows ) )
|
|
if f41_local2 ~= f41_local0.rowsOffset then
|
|
if f41_arg1.qualifier ~= ButtonQualifiers.Mousewheel then
|
|
f41_local0.popup:processEvent( {
|
|
name = "lose_focus"
|
|
} )
|
|
end
|
|
f41_local0.popup:processEvent( {
|
|
name = "element_refresh",
|
|
dispatchChildren = true
|
|
} )
|
|
if f41_arg1.qualifier ~= ButtonQualifiers.Mousewheel then
|
|
assert( f41_arg2 )
|
|
local f41_local3 = "button" .. f41_arg2
|
|
local f41_local4 = f41_local0.popup:getFirstDescendentById( f41_local3 )
|
|
assert( f41_local4, "Element not found " .. f41_local3 )
|
|
f41_local4:processEvent( {
|
|
name = "gain_focus"
|
|
} )
|
|
end
|
|
RefreshScrollbar( f41_arg0, f41_local0 )
|
|
end
|
|
end
|
|
|
|
function CustomizePopupGamepadButton( f42_arg0, f42_arg1 )
|
|
local f42_local0 = LUI.FlowManager.GetMenuScopedDataByMenuName( "cac_customize_main" )
|
|
if not f42_local0.elements then
|
|
return
|
|
elseif f42_arg1.down and not f42_arg0.m_ignoreMouseFocus and f42_arg1.qualifier == ButtonQualifiers.Mousewheel then
|
|
if f42_arg1.button == "down" then
|
|
ScrollBy( f42_arg0, f42_arg1, nil, 1 )
|
|
elseif f42_arg1.button == "up" then
|
|
ScrollBy( f42_arg0, f42_arg1, nil, -1 )
|
|
end
|
|
return true
|
|
else
|
|
return LUI.UIElement.GamepadButton( f42_arg0, f42_arg1 )
|
|
end
|
|
end
|
|
|
|
function CustomizePopupButtonGamepadButton( f43_arg0, f43_arg1, f43_arg2 )
|
|
local f43_local0 = LUI.FlowManager.GetMenuScopedDataByMenuName( "cac_customize_main" )
|
|
if f43_arg1.down and f43_arg0:isInFocus() then
|
|
local f43_local1 = f43_arg2 <= f43_arg0.properties.elementsPerRow
|
|
if f43_arg1.button == "down" and f43_arg0.properties.elementsPerRow * (f43_arg0.properties.maxRows - 1) < f43_arg2 then
|
|
ScrollBy( f43_arg0, f43_arg1, f43_arg2, 1 )
|
|
return true
|
|
elseif f43_arg1.button == "up" and f43_local1 then
|
|
ScrollBy( f43_arg0, f43_arg1, f43_arg2, -1 )
|
|
return true
|
|
end
|
|
end
|
|
return LUI.UIButton.GamepadButton( f43_arg0, f43_arg1 )
|
|
end
|
|
|
|
function PropagateFocusChange( f44_arg0, f44_arg1, f44_arg2 )
|
|
f44_arg1.popup:processEvent( {
|
|
name = "popup_focus_changed"
|
|
} )
|
|
PreviewElement( f44_arg0, f44_arg2 )
|
|
end
|
|
|
|
function CustomizePopupGridButtonOver( f45_arg0, f45_arg1, f45_arg2 )
|
|
local f45_local0 = LUI.FlowManager.GetMenuScopedDataByMenuName( "cac_customize_main" )
|
|
if not f45_local0.elements or not f45_local0.popup then
|
|
return
|
|
end
|
|
local f45_local1 = math.ceil( f45_local0.currentButtonSlot / f45_arg0.properties.elementsPerRow )
|
|
local f45_local2 = math.ceil( f45_arg2 / f45_arg0.properties.elementsPerRow )
|
|
local f45_local3 = f45_local0.currentButtonSlot or f45_arg2
|
|
local f45_local4 = f45_local0.elements[f45_local0.rowsOffset * f45_arg0.properties.elementsPerRow + f45_arg2]
|
|
f45_local0.currentElementRef = f45_local4
|
|
f45_local0.currentButtonSlot = f45_arg2
|
|
if f45_local0.autoFocusButtonNumber == nil then
|
|
if f45_local1 ~= f45_local2 and (Engine.IsConsoleGame() or f45_arg1.focusType ~= FocusType.MouseOver) then
|
|
if f45_local2 == 1 then
|
|
ScrollBy( f45_arg0, f45_arg1, f45_local3, -1 )
|
|
elseif f45_local2 == f45_arg0.properties.maxRows then
|
|
ScrollBy( f45_arg0, f45_arg1, f45_local3, 1 )
|
|
end
|
|
end
|
|
else
|
|
f45_arg0.listDefaultFocus = nil
|
|
f45_local0.autoFocusButtonNumber = nil
|
|
end
|
|
PropagateFocusChange( f45_arg0, f45_local0, f45_local4 )
|
|
end
|
|
|
|
function CustomizePopupGridButtonActionFactory( f46_arg0, f46_arg1 )
|
|
return function ( f47_arg0, f47_arg1 )
|
|
if f46_arg1.rowsOffset then
|
|
f46_arg1.currentField.SaveRef( f47_arg1.controller, f46_arg1.squadLocation, f46_arg1.squadMemberIndex, f46_arg1.elements[f46_arg1.rowsOffset * f47_arg0.properties.elementsPerRow + f46_arg0] )
|
|
CloseCustomizeGrid( f47_arg0, f47_arg1 )
|
|
end
|
|
end
|
|
|
|
end
|
|
|
|
function CustomizePopupGridButtonActionDisableFactory( f48_arg0, f48_arg1 )
|
|
return function ( f49_arg0, f49_arg1 )
|
|
if f48_arg1.rowsOffset and f48_arg1.currentField.DLCOffer then
|
|
local f49_local0 = Engine.TableLookup( f48_arg1.currentField.csv, 0, f48_arg1.elements[f48_arg1.rowsOffset * f49_arg0.properties.elementsPerRow + f48_arg0], f48_arg1.currentField.DLCOffer )
|
|
if string.len( f49_local0 ) > 0 then
|
|
if Engine.IsPC() then
|
|
Sns.OpenStoreMenu( f49_arg1.controller )
|
|
else
|
|
Sns.OpenStoreLinkConfirmPopup( f49_arg1.controller, f49_local0 )
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
end
|
|
|
|
function CustomizePopupGridGenericButtonUpdateLock( f50_arg0, f50_arg1, f50_arg2 )
|
|
local f50_local0 = Cac.IsCustomizationItemUnlocked( f50_arg1.exclusiveControllerIndex, f50_arg1.currentField, f50_arg2 )
|
|
if f50_arg0:isInFocus() then
|
|
if f50_arg1.currentElementRef ~= f50_arg2 then
|
|
f50_arg1.currentElementRef = f50_arg2
|
|
PropagateFocusChange( f50_arg0, f50_arg1, f50_arg2 )
|
|
end
|
|
local f50_local1 = f50_arg0
|
|
local f50_local2 = f50_arg0.dispatchEventToChildren
|
|
local f50_local3 = {}
|
|
local f50_local4
|
|
if f50_local0 then
|
|
f50_local4 = "button_over"
|
|
if not f50_local4 then
|
|
|
|
else
|
|
f50_local3.name = f50_local4
|
|
f50_local3.dispatchChildren = true
|
|
f50_local2( f50_local1, f50_local3 )
|
|
end
|
|
end
|
|
f50_local4 = "button_over_disable"
|
|
else
|
|
local f50_local1 = f50_arg0
|
|
local f50_local2 = f50_arg0.processEvent
|
|
local f50_local3 = {}
|
|
local f50_local4
|
|
if f50_local0 then
|
|
f50_local4 = "button_up"
|
|
if not f50_local4 then
|
|
|
|
else
|
|
f50_local3.name = f50_local4
|
|
f50_local3.dispatchChildren = true
|
|
f50_local2( f50_local1, f50_local3 )
|
|
end
|
|
end
|
|
f50_local4 = "button_disable"
|
|
end
|
|
if not f50_local0 and Cac.IsCustomizationItemDLC( f50_arg1.currentField, f50_arg2 ) == true then
|
|
f50_arg0:processEvent( {
|
|
name = "button_dlc"
|
|
} )
|
|
else
|
|
f50_arg0:processEvent( {
|
|
name = "button_no_dlc"
|
|
} )
|
|
end
|
|
f50_arg0.disabled = true
|
|
if f50_local0 then
|
|
f50_arg0.disabled = false
|
|
end
|
|
end
|
|
|
|
function CustomizePopupNewIconCheckFactory( f51_arg0, f51_arg1, f51_arg2, f51_arg3 )
|
|
return function ( f52_arg0, f52_arg1 )
|
|
if f51_arg1.elements and f51_arg1.rowsOffset and f51_arg1.exclusiveControllerIndex and f51_arg1.currentField and f51_arg1.currentField.UnlockType then
|
|
local f52_local0 = f51_arg1.elements[f51_arg1.rowsOffset * f52_arg0.properties.elementsPerRow + f51_arg0]
|
|
local f52_local1 = Cac.ItemHasNewIcon
|
|
local f52_local2 = f51_arg1.exclusiveControllerIndex
|
|
local f52_local3 = f52_local0
|
|
local f52_local4 = f51_arg3
|
|
if not f52_local4 then
|
|
f52_local4 = f51_arg1.currentField.UnlockType
|
|
end
|
|
if f52_local1( f52_local2, f52_local3, f52_local4 ) then
|
|
f52_arg0:addElement( LUI.UITimer.new( 500, "clear_new_icon", nil, true ) )
|
|
end
|
|
end
|
|
end
|
|
|
|
end
|
|
|
|
function CustomizePopupNewIconFactory( f53_arg0, f53_arg1, f53_arg2, f53_arg3 )
|
|
return {
|
|
type = "UIImage",
|
|
id = "newIcon",
|
|
states = {
|
|
default = {
|
|
material = RegisterMaterial( "icon_new_2" ),
|
|
topAnchor = true,
|
|
bottomAnchor = false,
|
|
leftAnchor = true,
|
|
rightAnchor = false,
|
|
top = f53_arg2,
|
|
height = 32,
|
|
left = 2,
|
|
width = 32,
|
|
alpha = 0,
|
|
scale = 0
|
|
},
|
|
visible = {
|
|
alpha = 1,
|
|
scale = 0
|
|
},
|
|
darker = {
|
|
alpha = 0.5,
|
|
scale = -0.1
|
|
}
|
|
},
|
|
handlers = {
|
|
element_refresh = function ( f54_arg0, f54_arg1 )
|
|
local f54_local0 = f53_arg1.elements[f53_arg1.rowsOffset * f54_arg0.properties.elementsPerRow + f53_arg0]
|
|
if f54_local0 and Cac.ItemHasNewIcon( f53_arg1.exclusiveControllerIndex, f54_local0, f53_arg3 or nil, f53_arg1.currentField ) then
|
|
local f54_local1 = MBh.AnimateLoop( {
|
|
{
|
|
"visible",
|
|
0
|
|
},
|
|
{
|
|
"darker",
|
|
300
|
|
},
|
|
{
|
|
"visible",
|
|
300
|
|
}
|
|
} )
|
|
f54_local1( f54_arg0, f54_arg1 )
|
|
else
|
|
f54_arg0:animateToState( "default" )
|
|
end
|
|
end
|
|
,
|
|
button_over = CustomizePopupNewIconCheckFactory( f53_arg0, f53_arg1, f53_arg2, f53_arg3 ),
|
|
button_over_disable = CustomizePopupNewIconCheckFactory( f53_arg0, f53_arg1, f53_arg2, f53_arg3 ),
|
|
clear_new_icon = function ( f55_arg0, f55_arg1 )
|
|
if f53_arg1.elements and f53_arg1.rowsOffset and f53_arg1.exclusiveControllerIndex and f53_arg1.currentField and f53_arg1.currentField.UnlockType then
|
|
local f55_local0 = f53_arg1.elements[f53_arg1.rowsOffset * f55_arg0.properties.elementsPerRow + f53_arg0]
|
|
local f55_local1 = Cac.ItemHasNewIcon
|
|
local f55_local2 = f53_arg1.exclusiveControllerIndex
|
|
local f55_local3 = f55_local0
|
|
local f55_local4 = f53_arg3
|
|
if not f55_local4 then
|
|
f55_local4 = f53_arg1.currentField.UnlockType
|
|
end
|
|
if f55_local1( f55_local2, f55_local3, f55_local4 ) then
|
|
f55_local1 = Cac.MarkItemNoMoreNewIcon
|
|
f55_local2 = f53_arg1.exclusiveControllerIndex
|
|
f55_local3 = f55_local0
|
|
f55_local4 = f53_arg3
|
|
if not f55_local4 then
|
|
f55_local4 = f53_arg1.currentField.UnlockType
|
|
end
|
|
f55_local1( f55_local2, f55_local3, f55_local4 )
|
|
f55_arg0:animateToState( "default", 400 )
|
|
f55_arg0:dispatchEventToRoot( {
|
|
name = "refresh_new_icons"
|
|
} )
|
|
end
|
|
end
|
|
end
|
|
|
|
}
|
|
}
|
|
end
|
|
|
|
function CustomizePopupGridGenericButton( f56_arg0, f56_arg1 )
|
|
local f56_local0 = function ( f57_arg0, f57_arg1 )
|
|
local f57_local0 = 0
|
|
local f57_local1 = 1
|
|
if f56_arg1.rowsOffset and f57_arg0.properties.elementsPerRow then
|
|
f57_local1 = f56_arg1.elements[f56_arg1.rowsOffset * f57_arg0.properties.elementsPerRow + f56_arg0]
|
|
f57_local0 = tostring( f56_arg1.currentField.GetSavedRef( f56_arg1.exclusiveControllerIndex, f56_arg1.squadLocation, f56_arg1.squadMemberIndex ) )
|
|
end
|
|
if f57_local1 == f57_local0 then
|
|
f57_arg0:animateToState( "visible" )
|
|
else
|
|
f57_arg0:animateToState( "default" )
|
|
end
|
|
end
|
|
|
|
local f56_local1 = {
|
|
type = "UIGenericButton",
|
|
id = "button" .. f56_arg0,
|
|
listDefaultFocus = f56_arg0 == f56_arg1.autoFocusButtonNumber,
|
|
properties = {
|
|
style = GenericButtonSettings.Styles.GlassButton,
|
|
substyle = GenericButtonSettings.Styles.GlassButton.SubStyles.Popup,
|
|
maxRows = MBh.Property( "maxRows" ),
|
|
rowHeight = MBh.Property( "rowHeight" ),
|
|
elementWidth = MBh.Property( "elementWidth" ),
|
|
elementsPerRow = MBh.Property( "elementsPerRow" ),
|
|
allowDisabledAction = true,
|
|
button_over_func = function ( f58_arg0, f58_arg1 )
|
|
CustomizePopupGridButtonOver( f58_arg0, f58_arg1, f56_arg0 )
|
|
end,
|
|
button_over_disable_func = function ( f59_arg0, f59_arg1 )
|
|
CustomizePopupGridButtonOver( f59_arg0, f59_arg1, f56_arg0 )
|
|
end,
|
|
button_action_func = CustomizePopupGridButtonActionFactory( f56_arg0, f56_arg1 ),
|
|
button_action_disable_func = CustomizePopupGridButtonActionDisableFactory( f56_arg0, f56_arg1 )
|
|
},
|
|
states = {
|
|
default = {
|
|
leftAnchor = true,
|
|
rightAnchor = false,
|
|
topAnchor = true,
|
|
bottomAnchor = true,
|
|
left = 0,
|
|
right = MBh.Property( "elementWidth" ),
|
|
top = 0,
|
|
bottom = 0,
|
|
alpha = 1
|
|
},
|
|
hidden = {
|
|
alpha = 0
|
|
}
|
|
},
|
|
handlers = {
|
|
gamepad_button = function ( f60_arg0, f60_arg1 )
|
|
return CustomizePopupButtonGamepadButton( f60_arg0, f60_arg1, f56_arg0 )
|
|
end,
|
|
element_refresh = function ( f61_arg0, f61_arg1 )
|
|
local f61_local0 = f56_arg1.elements[f56_arg1.rowsOffset * f61_arg0.properties.elementsPerRow + f56_arg0]
|
|
if f61_local0 then
|
|
f61_arg0.m_focusable = true
|
|
local f61_local1 = f56_arg1.currentField.GetName( f61_local0 )
|
|
if f61_local1 then
|
|
f61_arg0:setText( Engine.Localize( f61_local1 ) )
|
|
end
|
|
CustomizePopupGridGenericButtonUpdateLock( f61_arg0, f56_arg1, f61_local0 )
|
|
else
|
|
f61_arg0:makeNotFocusable()
|
|
f61_arg0:animateToState( "hidden" )
|
|
end
|
|
end
|
|
}
|
|
}
|
|
local f56_local2 = {}
|
|
local f56_local3 = {
|
|
type = "UIImage",
|
|
id = "selection_triangle",
|
|
properties = {
|
|
elementsPerRow = MBh.Property( "elementsPerRow" )
|
|
},
|
|
states = {
|
|
default = CoD.ColorizeState( Colors.frontend_hilite, {
|
|
topAnchor = true,
|
|
bottomAnchor = false,
|
|
leftAnchor = true,
|
|
rightAnchor = false,
|
|
material = RegisterMaterial( "widg_triangle" ),
|
|
top = 3,
|
|
left = 3,
|
|
width = 12,
|
|
height = 12,
|
|
alpha = 0
|
|
} ),
|
|
visible = {
|
|
alpha = 1
|
|
}
|
|
},
|
|
handlers = {
|
|
button_over = MBh.AnimateToState( "default" ),
|
|
button_up = f56_local0,
|
|
element_refresh = f56_local0
|
|
}
|
|
}
|
|
local f56_local4 = {
|
|
type = "UIImage",
|
|
states = {
|
|
default = {
|
|
topAnchor = true,
|
|
bottomAnchor = false,
|
|
leftAnchor = false,
|
|
rightAnchor = true,
|
|
top = 4,
|
|
right = -24,
|
|
width = 24,
|
|
height = 24,
|
|
material = RegisterMaterial( "icon_dlc" ),
|
|
alpha = 0
|
|
},
|
|
visible = {
|
|
alpha = 1
|
|
}
|
|
},
|
|
handlers = {
|
|
button_no_dlc = MBh.AnimateToState( "default" ),
|
|
button_dlc = MBh.AnimateToState( "visible" )
|
|
}
|
|
}
|
|
local f56_local5 = CustomizePopupNewIconFactory( f56_arg0, f56_arg1, 0, f56_arg1.specialField and "Special" or nil )
|
|
f56_local1.children = f56_local3
|
|
return f56_local1
|
|
end
|
|
|
|
function CustomizePopupGridGraphicalButton( f62_arg0, f62_arg1 )
|
|
return {
|
|
type = "UIButton",
|
|
id = "button" .. f62_arg0,
|
|
listDefaultFocus = f62_arg0 == f62_arg1.autoFocusButtonNumber,
|
|
properties = {
|
|
elementsPerRow = MBh.Property( "elementsPerRow" ),
|
|
elementWidth = MBh.Property( "elementWidth" ),
|
|
rowHeight = MBh.Property( "rowHeight" ),
|
|
maxRows = MBh.Property( "maxRows" ),
|
|
allowDisabledAction = true
|
|
},
|
|
states = {
|
|
default = {
|
|
leftAnchor = true,
|
|
rightAnchor = false,
|
|
topAnchor = true,
|
|
bottomAnchor = true,
|
|
left = 0,
|
|
right = MBh.Property( "elementWidth" ),
|
|
top = 0,
|
|
bottom = 0,
|
|
alpha = 1
|
|
},
|
|
hidden = {
|
|
alpha = 0
|
|
}
|
|
},
|
|
handlers = {
|
|
gamepad_button = function ( f63_arg0, f63_arg1 )
|
|
return CustomizePopupButtonGamepadButton( f63_arg0, f63_arg1, f62_arg0 )
|
|
end
|
|
,
|
|
element_refresh = function ( f64_arg0, f64_arg1 )
|
|
local f64_local0 = f62_arg1.elements[f62_arg1.rowsOffset * f64_arg0.properties.elementsPerRow + f62_arg0]
|
|
if f64_local0 then
|
|
f64_arg0.m_focusable = true
|
|
CustomizePopupGridGenericButtonUpdateLock( f64_arg0, f62_arg1, f64_local0 )
|
|
else
|
|
f64_arg0:makeNotFocusable()
|
|
f64_arg0:animateToState( "hidden" )
|
|
end
|
|
end
|
|
,
|
|
button_over = function ( f65_arg0, f65_arg1 )
|
|
CustomizePopupGridButtonOver( f65_arg0, f65_arg1, f62_arg0 )
|
|
end
|
|
,
|
|
button_over_disable = function ( f66_arg0, f66_arg1 )
|
|
CustomizePopupGridButtonOver( f66_arg0, f66_arg1, f62_arg0 )
|
|
end
|
|
,
|
|
button_action = CustomizePopupGridButtonActionFactory( f62_arg0, f62_arg1 ),
|
|
button_action_disable = CustomizePopupGridButtonActionDisableFactory( f62_arg0, f62_arg1 ),
|
|
button_disable = function ( f67_arg0, f67_arg1 )
|
|
if f62_arg1.rowsOffset and f62_arg1.elements[f62_arg1.rowsOffset * f67_arg0.properties.elementsPerRow + f62_arg0] then
|
|
f67_arg0:animateToState( "default" )
|
|
end
|
|
end
|
|
,
|
|
button_up = function ( f68_arg0, f68_arg1 )
|
|
if f62_arg1.rowsOffset and f62_arg1.elements[f62_arg1.rowsOffset * f68_arg0.properties.elementsPerRow + f62_arg0] then
|
|
f68_arg0:animateToState( "default" )
|
|
end
|
|
end
|
|
|
|
},
|
|
children = {
|
|
{
|
|
type = "UIImage",
|
|
id = "patch",
|
|
states = {
|
|
default = {
|
|
topAnchor = true,
|
|
bottomAnchor = true,
|
|
leftAnchor = true,
|
|
rightAnchor = true,
|
|
top = 0,
|
|
bottom = 0,
|
|
left = 0,
|
|
right = 0,
|
|
alpha = 1
|
|
},
|
|
disabled = {
|
|
alpha = 0.2
|
|
}
|
|
},
|
|
handlers = {
|
|
element_refresh = function ( f69_arg0, f69_arg1 )
|
|
local f69_local0 = f62_arg1.elements[f62_arg1.rowsOffset * f69_arg0.properties.elementsPerRow + f62_arg0]
|
|
if f69_local0 then
|
|
f69_arg0:setImage( RegisterMaterial( f62_arg1.currentField.GetUIMaterial( f69_local0 ) ) )
|
|
end
|
|
end
|
|
,
|
|
button_disable = function ( f70_arg0, f70_arg1 )
|
|
if f62_arg1.rowsOffset and f62_arg1.elements[f62_arg1.rowsOffset * f70_arg0.properties.elementsPerRow + f62_arg0] then
|
|
f70_arg0:animateToState( "disabled" )
|
|
end
|
|
end
|
|
,
|
|
button_over_disable = function ( f71_arg0, f71_arg1 )
|
|
if f62_arg1.rowsOffset and f62_arg1.elements[f62_arg1.rowsOffset * f71_arg0.properties.elementsPerRow + f62_arg0] then
|
|
f71_arg0:animateToState( "disabled" )
|
|
end
|
|
end
|
|
,
|
|
button_up = function ( f72_arg0, f72_arg1 )
|
|
if f62_arg1.rowsOffset and f62_arg1.elements[f62_arg1.rowsOffset * f72_arg0.properties.elementsPerRow + f62_arg0] then
|
|
f72_arg0:animateToState( "default" )
|
|
end
|
|
end
|
|
,
|
|
button_over = function ( f73_arg0, f73_arg1 )
|
|
if f62_arg1.rowsOffset and f62_arg1.elements[f62_arg1.rowsOffset * f73_arg0.properties.elementsPerRow + f62_arg0] then
|
|
f73_arg0:animateToState( "default" )
|
|
end
|
|
end
|
|
|
|
}
|
|
},
|
|
CustomizePopupNewIconFactory( f62_arg0, f62_arg1, 2, nil ),
|
|
{
|
|
type = "UIImage",
|
|
states = {
|
|
default = {
|
|
topAnchor = false,
|
|
bottomAnchor = true,
|
|
leftAnchor = false,
|
|
rightAnchor = true,
|
|
bottom = -5,
|
|
right = -5,
|
|
width = 16,
|
|
height = 16,
|
|
material = RegisterMaterial( "icon_lock_mini" )
|
|
},
|
|
button_up = {
|
|
alpha = 0
|
|
},
|
|
button_over = {
|
|
alpha = 0
|
|
},
|
|
button_disable = {
|
|
alpha = 1
|
|
},
|
|
button_over_disable = {
|
|
alpha = 1
|
|
}
|
|
},
|
|
handlers = {
|
|
button_up = MBh.AnimateToState( "button_up" ),
|
|
button_over = MBh.AnimateToState( "button_over" ),
|
|
button_disable = MBh.AnimateToState( "button_disable" ),
|
|
button_over_disable = MBh.AnimateToState( "button_over_disable" )
|
|
}
|
|
},
|
|
{
|
|
type = "UIImage",
|
|
states = {
|
|
default = {
|
|
topAnchor = true,
|
|
bottomAnchor = false,
|
|
leftAnchor = false,
|
|
rightAnchor = true,
|
|
top = 5,
|
|
right = -2,
|
|
width = 24,
|
|
height = 24,
|
|
material = RegisterMaterial( "icon_dlc" ),
|
|
alpha = 0
|
|
},
|
|
visible = {
|
|
alpha = 1
|
|
}
|
|
},
|
|
handlers = {
|
|
button_no_dlc = MBh.AnimateToState( "default" ),
|
|
button_dlc = MBh.AnimateToState( "visible" )
|
|
}
|
|
},
|
|
{
|
|
type = "UIImage",
|
|
properties = {
|
|
elementsPerRow = MBh.Property( "elementsPerRow" )
|
|
},
|
|
states = {
|
|
default = CoD.ColorizeState( Colors.grey_4, {
|
|
topAnchor = true,
|
|
bottomAnchor = false,
|
|
leftAnchor = true,
|
|
rightAnchor = false,
|
|
material = RegisterMaterial( "widg_triangle" ),
|
|
top = 3,
|
|
left = 3,
|
|
width = 12,
|
|
height = 12
|
|
} ),
|
|
button_up = CoD.ColorizeState( Colors.grey_4, {
|
|
alpha = 0
|
|
} ),
|
|
button_disable = CoD.ColorizeState( Colors.grey_14, {
|
|
alpha = 0
|
|
} ),
|
|
button_over = CoD.ColorizeState( Colors.white, {
|
|
alpha = 1
|
|
} ),
|
|
button_over_disable = CoD.ColorizeState( Colors.white, {
|
|
alpha = 0
|
|
} ),
|
|
button_selected = CoD.ColorizeState( Colors.frontend_hilite, {
|
|
alpha = 1
|
|
} )
|
|
},
|
|
handlers = {
|
|
button_up = function ( f74_arg0, f74_arg1 )
|
|
local f74_local0 = 0
|
|
local f74_local1 = 1
|
|
if f62_arg1.rowsOffset and f74_arg0.properties.elementsPerRow then
|
|
f74_local1 = f62_arg1.elements[f62_arg1.rowsOffset * f74_arg0.properties.elementsPerRow + f62_arg0]
|
|
f74_local0 = tostring( f62_arg1.currentField.GetSavedRef( f62_arg1.exclusiveControllerIndex, f62_arg1.squadLocation, f62_arg1.squadMemberIndex ) )
|
|
end
|
|
if f74_local1 == f74_local0 then
|
|
f74_arg0:animateToState( "button_selected" )
|
|
else
|
|
f74_arg0:animateToState( "button_up" )
|
|
end
|
|
end
|
|
,
|
|
button_disable = MBh.AnimateToState( "button_disable" ),
|
|
button_over = function ( f75_arg0, f75_arg1 )
|
|
local f75_local0 = 0
|
|
local f75_local1 = 1
|
|
if f62_arg1.rowsOffset and f75_arg0.properties.elementsPerRow then
|
|
f75_local1 = f62_arg1.elements[f62_arg1.rowsOffset * f75_arg0.properties.elementsPerRow + f62_arg0]
|
|
f75_local0 = tostring( f62_arg1.currentField.GetSavedRef( f62_arg1.exclusiveControllerIndex, f62_arg1.squadLocation, f62_arg1.squadMemberIndex ) )
|
|
end
|
|
if f75_local1 == f75_local0 then
|
|
f75_arg0:animateToState( "button_selected" )
|
|
else
|
|
f75_arg0:animateToState( "button_over" )
|
|
end
|
|
end
|
|
,
|
|
button_over_disable = MBh.AnimateToState( "button_over_disable" )
|
|
}
|
|
},
|
|
{
|
|
type = "generic_border",
|
|
properties = {
|
|
inner = true,
|
|
thickness = Engine.IsConsoleGame() and 1 or 2,
|
|
border_red = Colors.grey_4.r,
|
|
border_green = Colors.grey_4.g,
|
|
border_blue = Colors.grey_4.b
|
|
},
|
|
handlers = {
|
|
button_up = function ( f76_arg0, f76_arg1 )
|
|
f76_arg0:processEvent( {
|
|
name = "updateBorderColor",
|
|
red = Colors.grey_4.r,
|
|
green = Colors.grey_4.g,
|
|
blue = Colors.grey_4.b
|
|
} )
|
|
end
|
|
,
|
|
button_disable = function ( f77_arg0, f77_arg1 )
|
|
f77_arg0:processEvent( {
|
|
name = "updateBorderColor",
|
|
red = Colors.grey_14.r,
|
|
green = Colors.grey_14.g,
|
|
blue = Colors.grey_14.b
|
|
} )
|
|
end
|
|
,
|
|
button_over = function ( f78_arg0, f78_arg1 )
|
|
f78_arg0:processEvent( {
|
|
name = "updateBorderColor",
|
|
red = Colors.white.r,
|
|
green = Colors.white.g,
|
|
blue = Colors.white.b
|
|
} )
|
|
end
|
|
,
|
|
button_over_disable = function ( f79_arg0, f79_arg1 )
|
|
f79_arg0:processEvent( {
|
|
name = "updateBorderColor",
|
|
red = Colors.white.r,
|
|
green = Colors.white.g,
|
|
blue = Colors.white.b
|
|
} )
|
|
end
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
end
|
|
|
|
function CustomizePopupGridFeeder( f80_arg0 )
|
|
local f80_local0 = LUI.FlowManager.GetMenuScopedDataByMenuName( "cac_customize_main" )
|
|
if not f80_local0.popup then
|
|
return {}
|
|
end
|
|
local f80_local1 = {}
|
|
for f80_local2 = 1, f80_arg0.maxRows * f80_arg0.elementsPerRow, 1 do
|
|
table.insert( f80_local1, f80_local0.currentField.SelectionButtonFactory( f80_local2, f80_local0 ) )
|
|
end
|
|
return f80_local1
|
|
end
|
|
|
|
function cac_customize_base_popup( f81_arg0 )
|
|
local f81_local0 = f81_arg0.width or 448
|
|
local f81_local1 = 10
|
|
local f81_local2 = LUI.FlowManager.GetMenuScopedDataByMenuName( "cac_customize_main" )
|
|
if not f81_local2.currentField then
|
|
DebugPrint( "WARNING: Opening cac_customize_grid_popup while no field or page is currently selected, this should only happen on LUI reload. Closing popup." )
|
|
return {
|
|
type = "UIElement",
|
|
handlers = {
|
|
menu_create = MBh.LeaveMenu()
|
|
}
|
|
}
|
|
end
|
|
local f81_local3 = {
|
|
type = "UIElement",
|
|
id = "cac_customize_popup",
|
|
properties = {
|
|
maxRows = f81_arg0.maxRows or 4,
|
|
elementsPerRow = f81_arg0.elementsPerRow or 4,
|
|
rowHeight = f81_arg0.rowHeight or 95,
|
|
elementWidth = f81_arg0.elementWidth or 95
|
|
},
|
|
states = {
|
|
visible = {
|
|
leftAnchor = true,
|
|
rightAnchor = false,
|
|
topAnchor = true,
|
|
bottomAnchor = false,
|
|
left = 100,
|
|
top = 108,
|
|
width = f81_local0,
|
|
height = 530
|
|
},
|
|
default = {
|
|
leftAnchor = true,
|
|
rightAnchor = false,
|
|
topAnchor = true,
|
|
bottomAnchor = false,
|
|
left = -f81_local0,
|
|
top = 108,
|
|
width = f81_local0,
|
|
height = 530
|
|
}
|
|
},
|
|
handlers = {
|
|
popup_active = function ( f83_arg0, f83_arg1 )
|
|
f83_arg0.m_ignoreMouseFocus = true
|
|
UnbindShoulderButtons( f83_arg0, f83_arg1 )
|
|
end,
|
|
popup_inactive = function ( f84_arg0, f84_arg1 )
|
|
f84_arg0.m_ignoreMouseFocus = nil
|
|
RebindShoulderButtons( f84_arg0, f84_arg1 )
|
|
end,
|
|
gamepad_button = CustomizePopupGamepadButton,
|
|
menu_create = function ( f85_arg0, f85_arg1 )
|
|
f85_arg0:animateToState( "visible", 80 )
|
|
local f85_local0 = f85_arg0:getFirstDescendentById( "custom_elements_grid" )
|
|
f85_local0 = f85_local0.vlist
|
|
f81_local2.scrollbar = f85_arg0:getFirstDescendentById( "scrollbar" )
|
|
f81_local2.scrollbar:setList( f85_local0 )
|
|
f85_arg0:dispatchEventToRoot( {
|
|
name = "open_customize_popup",
|
|
immediate = true
|
|
} )
|
|
if #f81_local2.categories <= 1 then
|
|
RebindShoulderButtons( f85_arg0, f85_arg1 )
|
|
else
|
|
f85_arg0:dispatchEventToRoot( {
|
|
name = "add_button_helper_text",
|
|
button_ref = "button_shoulderl",
|
|
button_ref2 = "",
|
|
helper_text = "",
|
|
side = "left",
|
|
clickable = true,
|
|
immediate = true
|
|
} )
|
|
end
|
|
f85_arg0:addElement( LUI.MenuBuilder.buildItems( {
|
|
type = "online_friends_widget",
|
|
states = {
|
|
default = {
|
|
scale = -1,
|
|
alpha = 0
|
|
}
|
|
}
|
|
}, {} ) )
|
|
f85_arg0:dispatchEventToRoot( {
|
|
name = "rebind_back_button",
|
|
immediate = true
|
|
} )
|
|
if not Engine.IsAliensMode() and f81_local2.squadLocation == "squadMembers" then
|
|
f85_arg0:dispatchEventToRoot( {
|
|
name = "add_button_helper_text",
|
|
button_ref = "button_alt1",
|
|
button_ref2 = "",
|
|
helper_text = Engine.Localize( "@LUA_MENU_OPERATIONS" ),
|
|
side = "left",
|
|
clickable = true,
|
|
immediate = true
|
|
} )
|
|
else
|
|
f85_arg0:dispatchEventToRoot( {
|
|
name = "add_button_helper_text",
|
|
button_ref = "button_alt1",
|
|
button_ref2 = "",
|
|
helper_text = "",
|
|
side = "left",
|
|
clickable = true,
|
|
immediate = true
|
|
} )
|
|
end
|
|
f85_arg0:processEvent( {
|
|
name = "change_page",
|
|
diff = 0
|
|
} )
|
|
end,
|
|
close_customize_popup = function ( f86_arg0, f86_arg1 )
|
|
f86_arg0:dispatchEventToRoot( {
|
|
name = "add_loadout_button_helper"
|
|
} )
|
|
f86_arg0:dispatchEventToRoot( {
|
|
name = "update_camo"
|
|
} )
|
|
f86_arg0:animateToState( "default", 80 )
|
|
f86_arg0:registerEventHandler( LUI.FormatAnimStateFinishEvent( "default" ), MBh.LeaveMenu() )
|
|
end,
|
|
menu_close = function ( f87_arg0, f87_arg1 )
|
|
f87_arg0:dispatchEventToRoot( {
|
|
name = "character_full_refresh",
|
|
immediate = true
|
|
} )
|
|
end,
|
|
change_page = function ( f82_arg0, f82_arg1 )
|
|
assert( f82_arg1.diff, "Invalid page change" )
|
|
if not f81_local2.categories then
|
|
return
|
|
elseif f82_arg1.diff ~= 0 and #f81_local2.categories <= 1 then
|
|
return
|
|
end
|
|
f81_local2.popup = f82_arg0
|
|
if f82_arg1.diff ~= 0 then
|
|
f81_local2.currentPage = f81_local2.currentPage or 1
|
|
f81_local2.currentPage = 1 + (f81_local2.currentPage - 1 + f82_arg1.diff) % #f81_local2.categories
|
|
f81_local2.rowsOffset = 0
|
|
f81_local2.currentButtonSlot = 1
|
|
end
|
|
f81_local2.elements = f81_local2.categories[f81_local2.currentPage].elements
|
|
f82_arg0:processEvent( {
|
|
name = "refresh_info_pane_header",
|
|
header = f81_local2.categories[f81_local2.currentPage].name
|
|
} )
|
|
local f82_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( f82_arg0 )
|
|
if f82_arg1.diff ~= 0 then
|
|
f82_arg0:processEvent( {
|
|
name = "lose_focus"
|
|
} )
|
|
end
|
|
if f82_local0.filledGrid then
|
|
f82_arg0:processEvent( {
|
|
name = "element_refresh",
|
|
page_change = true,
|
|
dispatchChildren = true
|
|
} )
|
|
else
|
|
f82_arg0:processEvent( {
|
|
name = "menu_refresh"
|
|
} )
|
|
f82_arg0:processEvent( {
|
|
name = "update_navigation"
|
|
} )
|
|
f82_local0.filledGrid = true
|
|
end
|
|
if f82_arg1.diff ~= 0 then
|
|
f82_arg0:processEvent( {
|
|
name = "update_navigation"
|
|
} )
|
|
f82_arg0:clearSavedState()
|
|
if not f82_arg1.mouse then
|
|
f82_arg0:processEvent( {
|
|
name = "gain_focus"
|
|
} )
|
|
end
|
|
RefreshScrollbar( f82_arg0, f81_local2 )
|
|
end
|
|
end,
|
|
dlc_mount_complete = function ( f88_arg0, f88_arg1 )
|
|
f88_arg0:processEvent( {
|
|
name = "element_refresh"
|
|
} )
|
|
end
|
|
}
|
|
}
|
|
local f81_local4 = {}
|
|
local f81_local5 = {
|
|
type = "cac_basic_info_pane_header",
|
|
properties = {
|
|
titleText = "Oink",
|
|
width = f81_local0,
|
|
height = GenericTitleBarDims.TitleBarHeight
|
|
},
|
|
handlers = {
|
|
menu_create = function ( f89_arg0, f89_arg1 )
|
|
if #f81_local2.categories > 1 then
|
|
f89_arg0:processEvent( {
|
|
name = "show_lt"
|
|
} )
|
|
f89_arg0:processEvent( {
|
|
name = "show_rt"
|
|
} )
|
|
else
|
|
f89_arg0:processEvent( {
|
|
name = "hide_lt"
|
|
} )
|
|
f89_arg0:processEvent( {
|
|
name = "hide_rt"
|
|
} )
|
|
end
|
|
end,
|
|
info_panel_go_left = MBh.EmitEventToParent( {
|
|
name = "change_page",
|
|
mouse = true,
|
|
diff = -1
|
|
} ),
|
|
info_panel_go_right = MBh.EmitEventToParent( {
|
|
name = "change_page",
|
|
mouse = true,
|
|
diff = 1
|
|
} )
|
|
}
|
|
}
|
|
local f81_local6 = {
|
|
type = "generic_menu_background_withfade"
|
|
}
|
|
local f81_local7 = cac_customize_navigation_dots()
|
|
local f81_local8 = {
|
|
type = "UIVerticalScrollbar",
|
|
id = "scrollbar",
|
|
properties = {
|
|
maxRows = MBh.Property( "maxRows" ),
|
|
rowHeight = MBh.Property( "rowHeight" ),
|
|
elementsPerRow = MBh.Property( "elementsPerRow" ),
|
|
on_move_func = function ( f90_arg0, f90_arg1, f90_arg2, f90_arg3 )
|
|
if f81_local2.elements then
|
|
local f90_local0 = math.ceil( #f81_local2.elements / f90_arg3.elementsPerRow )
|
|
f81_local2.rowsOffset = math.floor( f90_arg2 * f90_local0 )
|
|
f81_local2.rowsOffset = LUI.clamp( f81_local2.rowsOffset, 0, math.max( 0, f90_local0 - f90_arg3.maxRows ) )
|
|
f90_arg1:processEvent( {
|
|
name = "element_refresh",
|
|
dispatchChildren = true,
|
|
immediate = true
|
|
} )
|
|
f90_arg0:manualUpdate( f81_local2.rowsOffset, f90_arg3.maxRows, f90_local0, f90_arg3.rowHeight )
|
|
end
|
|
end
|
|
}
|
|
}
|
|
local f81_local9 = {}
|
|
local f81_local10 = {
|
|
topAnchor = true,
|
|
bottomAnchor = false,
|
|
leftAnchor = false,
|
|
rightAnchor = true
|
|
}
|
|
local f81_local11
|
|
if #f81_local2.categories > 1 then
|
|
f81_local11 = 64
|
|
if not f81_local11 then
|
|
|
|
else
|
|
f81_local10.top = f81_local11
|
|
f81_local10.height = 2 + f81_arg0.maxRows * f81_arg0.rowHeight + f81_local1 * math.max( 0, f81_arg0.maxRows - 1 )
|
|
f81_local10.width = 10
|
|
f81_local10.right = -5
|
|
f81_local9.default = f81_local10
|
|
f81_local8.states = f81_local9
|
|
f81_local8.handlers = {
|
|
init_scrollbar = function ( f91_arg0, f91_arg1 )
|
|
local f91_local0 = f91_arg0.properties
|
|
if f81_local2.elements then
|
|
f91_arg0:manualUpdate( f81_local2.rowsOffset, f91_local0.maxRows, math.ceil( #f81_local2.elements / f91_local0.elementsPerRow ), f91_local0.rowHeight )
|
|
end
|
|
end
|
|
}
|
|
f81_local8.children = {
|
|
{
|
|
type = "UITimer",
|
|
properties = {
|
|
event = "init_scrollbar",
|
|
interval = 1,
|
|
disposable = true,
|
|
deferNextFrame = true
|
|
}
|
|
}
|
|
}
|
|
f81_local9 = cac_customize_element_description()
|
|
f81_local10 = cac_customize_element_counter()
|
|
f81_local11 = {
|
|
type = "UIGrid",
|
|
id = "custom_elements_grid",
|
|
properties = {
|
|
maxRows = MBh.Property( "maxRows" ),
|
|
elementsPerRow = MBh.Property( "elementsPerRow" ),
|
|
rowHeight = MBh.Property( "rowHeight" ),
|
|
elementWidth = MBh.Property( "elementWidth" ),
|
|
hSpacing = 10,
|
|
vSpacing = f81_local1,
|
|
disableVWrap = true,
|
|
disableHWrap = true
|
|
}
|
|
}
|
|
local f81_local12 = {}
|
|
local f81_local13 = {
|
|
leftAnchor = true,
|
|
rightAnchor = true,
|
|
topAnchor = true,
|
|
bottomAnchor = true
|
|
}
|
|
local f81_local14
|
|
if #f81_local2.categories > 1 then
|
|
f81_local14 = 64
|
|
if not f81_local14 then
|
|
|
|
else
|
|
f81_local13.top = f81_local14
|
|
f81_local13.left = 6
|
|
f81_local13.right = 0
|
|
f81_local13.bottom = 0
|
|
f81_local12.default = f81_local13
|
|
f81_local11.states = f81_local12
|
|
f81_local11.childrenFeeder = CustomizePopupGridFeeder
|
|
f81_local12 = {
|
|
type = "UIBindButton",
|
|
handlers = {
|
|
button_secondary = CloseCustomizeGrid,
|
|
button_shoulderl = function ( f92_arg0, f92_arg1 )
|
|
if Engine.IsConsoleGame() or Engine.IsGamepadEnabled() == 1 then
|
|
local f92_local0 = f92_arg0:getParent()
|
|
f92_local0:processEvent( {
|
|
name = "change_page",
|
|
diff = -1
|
|
} )
|
|
end
|
|
end,
|
|
button_shoulderr = function ( f93_arg0, f93_arg1 )
|
|
if Engine.IsConsoleGame() or Engine.IsGamepadEnabled() == 1 then
|
|
local f93_local0 = f93_arg0:getParent()
|
|
f93_local0:processEvent( {
|
|
name = "change_page",
|
|
diff = 1
|
|
} )
|
|
end
|
|
end,
|
|
button_alt1 = function ( f94_arg0, f94_arg1 )
|
|
local f94_local0 = LUI.FlowManager.GetMenuScopedDataByMenuName( "cac_customize_main" )
|
|
if not Engine.IsAliensMode() and f94_local0 and f94_local0.squadLocation == "squadMembers" then
|
|
LUI.FlowManager.RequestPopupMenu( f94_arg0, "operations_main_menu", true, f94_arg1.controller, false )
|
|
end
|
|
end
|
|
}
|
|
}
|
|
f81_local4[1] = f81_local5
|
|
f81_local4[2] = f81_local6
|
|
f81_local4[3] = f81_local7
|
|
f81_local4[4] = f81_local8
|
|
f81_local4[5] = f81_local9
|
|
f81_local4[6] = f81_local10
|
|
f81_local4[7] = f81_local11
|
|
f81_local4[8] = f81_local12
|
|
f81_local3.children = f81_local4
|
|
return f81_local3
|
|
end
|
|
end
|
|
f81_local14 = 42
|
|
end
|
|
end
|
|
f81_local11 = 42
|
|
end
|
|
|
|
function ComputeCustomizationPopupDefaultFocus( f95_arg0, f95_arg1, f95_arg2 )
|
|
local f95_local0 = LUI.FlowManager.GetMenuScopedDataByMenuName( "cac_customize_main" )
|
|
if not f95_local0.currentField then
|
|
return
|
|
end
|
|
local f95_local1 = f95_local0.currentField.GetSavedRef( f95_local0.exclusiveControllerIndex, f95_local0.squadLocation, f95_local0.squadMemberIndex )
|
|
for f95_local8, f95_local9 in ipairs( f95_local0.categories ) do
|
|
for f95_local5, f95_local6 in ipairs( f95_local9.elements ) do
|
|
if Cac.ItemHasNewIcon( f95_local0.exclusiveControllerIndex, f95_local6, f95_local0.specialField and "Special" or f95_local0.currentField.UnlockType ) then
|
|
f95_local0.currentPage = f95_local8
|
|
f95_local0.rowsOffset = LUI.clamp( math.ceil( f95_local5 / f95_arg2 ) - 1, 0, math.max( 0, math.ceil( #f95_local9.elements / f95_arg2 ) - f95_arg1 ) )
|
|
if f95_local0.rowsOffset ~= f95_local5 - 1 then
|
|
f95_local0.autoFocusButtonNumber = f95_local5 - f95_local0.rowsOffset * f95_arg2
|
|
f95_local0.currentButtonSlot = f95_local0.autoFocusButtonNumber
|
|
end
|
|
return
|
|
end
|
|
end
|
|
end
|
|
for f95_local8, f95_local9 in ipairs( f95_local0.categories ) do
|
|
for f95_local5, f95_local6 in ipairs( f95_local9.elements ) do
|
|
if tonumber( f95_local6 ) == f95_local1 then
|
|
f95_local0.currentPage = f95_local8
|
|
f95_local0.rowsOffset = LUI.clamp( math.ceil( f95_local5 / f95_arg2 ) - 1, 0, math.max( 0, math.ceil( #f95_local9.elements / f95_arg2 ) - f95_arg1 ) )
|
|
if f95_local0.rowsOffset ~= f95_local5 - 1 then
|
|
f95_local0.autoFocusButtonNumber = f95_local5 - f95_local0.rowsOffset * f95_arg2
|
|
f95_local0.currentButtonSlot = f95_local0.autoFocusButtonNumber
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
function cac_customize_buttons_popup()
|
|
local f96_local0 = LUI.FlowManager.GetMenuScopedDataByMenuName( "cac_customize_main" )
|
|
local f96_local1
|
|
if f96_local0.categories then
|
|
if #f96_local0.categories > 1 then
|
|
f96_local1 = 11
|
|
if not f96_local1 then
|
|
|
|
else
|
|
local f96_local2 = 1
|
|
ComputeCustomizationPopupDefaultFocus( f96_local0, f96_local1, f96_local2 )
|
|
return cac_customize_base_popup( {
|
|
width = 436,
|
|
maxRows = f96_local1,
|
|
elementsPerRow = f96_local2,
|
|
rowHeight = GenericButtonSettings.Styles.GlassButton.SubStyles.Default.height,
|
|
elementWidth = 410
|
|
} )
|
|
end
|
|
end
|
|
f96_local1 = 12
|
|
if not f96_local1 then
|
|
f96_local1 = 1
|
|
end
|
|
else
|
|
f96_local1 = 1
|
|
end
|
|
local f96_local2 = 1
|
|
ComputeCustomizationPopupDefaultFocus( f96_local0, f96_local1, f96_local2 )
|
|
return cac_customize_base_popup( {
|
|
width = 436,
|
|
maxRows = f96_local1,
|
|
elementsPerRow = f96_local2,
|
|
rowHeight = GenericButtonSettings.Styles.GlassButton.SubStyles.Default.height,
|
|
elementWidth = 410
|
|
} )
|
|
end
|
|
|
|
function cac_customize_vlist_popup()
|
|
local f97_local0 = LUI.FlowManager.GetMenuScopedDataByMenuName( "cac_customize_main" )
|
|
local f97_local1 = 6
|
|
local f97_local2 = 1
|
|
ComputeCustomizationPopupDefaultFocus( f97_local0, f97_local1, f97_local2 )
|
|
return cac_customize_base_popup( {
|
|
width = 436,
|
|
maxRows = f97_local1,
|
|
elementsPerRow = f97_local2,
|
|
rowHeight = 59,
|
|
elementWidth = 410
|
|
} )
|
|
end
|
|
|
|
function cac_customize_grid_popup()
|
|
local f98_local0 = LUI.FlowManager.GetMenuScopedDataByMenuName( "cac_customize_main" )
|
|
local f98_local1 = 4
|
|
local f98_local2 = 4
|
|
ComputeCustomizationPopupDefaultFocus( f98_local0, f98_local1, f98_local2 )
|
|
return cac_customize_base_popup( {
|
|
width = 436,
|
|
maxRows = f98_local1,
|
|
elementsPerRow = f98_local2,
|
|
rowHeight = 95,
|
|
elementWidth = 95
|
|
} )
|
|
end
|
|
|
|
function refresh_customize_new_icon( f99_arg0, f99_arg1, f99_arg2, f99_arg3, f99_arg4 )
|
|
local f99_local0 = Cac.GetCurrentGender( f99_arg1, f99_arg2, f99_arg3 )
|
|
if not Cac.IsCommonGender( f99_local0 ) then
|
|
f99_local0 = Cac.Customization.Gender.Male
|
|
end
|
|
if Cac.AnyUnseenMDLCItems( f99_arg1, {
|
|
f99_arg4.UnlockType
|
|
}, f99_local0 ) then
|
|
f99_arg0:processEvent( {
|
|
name = "show_new_icon"
|
|
} )
|
|
else
|
|
f99_arg0:processEvent( {
|
|
name = "hide_new_icon"
|
|
} )
|
|
end
|
|
end
|
|
|
|
function refresh_customize_new_icon_gender( f100_arg0, f100_arg1, f100_arg2, f100_arg3, f100_arg4 )
|
|
local f100_local0 = Cac.GetCurrentGender( f100_arg1, f100_arg2, f100_arg3 )
|
|
local f100_local1 = nil
|
|
if f100_local0 == "m" then
|
|
f100_local1 = "f"
|
|
else
|
|
f100_local1 = "m"
|
|
end
|
|
if Cac.AnyUnseenMDLCItems( f100_arg1, {
|
|
"Head",
|
|
"Body"
|
|
}, f100_local1 ) then
|
|
f100_arg0:processEvent( {
|
|
name = "show_new_icon"
|
|
} )
|
|
else
|
|
f100_arg0:processEvent( {
|
|
name = "hide_new_icon"
|
|
} )
|
|
end
|
|
end
|
|
|
|
function fields_vlist()
|
|
local f101_local0 = LUI.FlowManager.GetMenuScopedDataByMenuName( "cac_customize_main" )
|
|
local f101_local1 = function ( f102_arg0, f102_arg1 )
|
|
f102_arg0:dispatchEventToRoot( {
|
|
name = "show_playercard",
|
|
immediate = true,
|
|
fade = 100
|
|
} )
|
|
end
|
|
|
|
local f101_local2 = function ( f103_arg0, f103_arg1 )
|
|
f103_arg0:dispatchEventToRoot( {
|
|
name = "hide_playercard",
|
|
immediate = true,
|
|
fade = 100
|
|
} )
|
|
end
|
|
|
|
local f101_local3 = function ( f104_arg0, f104_arg1 )
|
|
if f104_arg1.ImpactsPlayercard then
|
|
f101_local1( f104_arg0, event )
|
|
else
|
|
f101_local2( f104_arg0, event )
|
|
end
|
|
end
|
|
|
|
local f101_local4 = function ( f105_arg0, f105_arg1 )
|
|
local f105_local0 = Cac.Customization.Fields[Cac.Customization.FieldIndexes.Head]
|
|
local f105_local1 = f105_arg1 == Cac.Customization.Fields[Cac.Customization.FieldIndexes.Helmet]
|
|
local f105_local2 = f105_arg1 == Cac.Customization.Fields[Cac.Customization.FieldIndexes.Body]
|
|
local f105_local3 = f105_arg1 == Cac.Customization.Fields[Cac.Customization.FieldIndexes.GuardDog]
|
|
local f105_local4 = f105_arg1 == Cac.Customization.Fields[Cac.Customization.FieldIndexes.Announcer]
|
|
local f105_local5 = f105_arg1 == f105_local0
|
|
local f105_local6 = f105_arg1 == "gender"
|
|
local f105_local7 = f105_arg1 == "special"
|
|
local f105_local8 = not Cac.IsCommonGender( Cac.GetCurrentGender( f101_local0.exclusiveControllerIndex, f101_local0.squadLocation, f101_local0.squadMemberIndex ) )
|
|
if f105_local5 or f105_local2 or f105_local1 or f105_local6 then
|
|
if f105_local8 then
|
|
f105_arg0:dispatchEventToRoot( {
|
|
name = "show_warning",
|
|
immediate = true,
|
|
text = Engine.Localize( "LUA_MENU_CUSTOMIZATION_SPECIAL_WARNING" )
|
|
} )
|
|
elseif f105_local1 and not Cac.DoesHeadUseHelmet( f105_local0.GetSavedRef( f101_local0.exclusiveControllerIndex, f101_local0.squadLocation, f101_local0.squadMemberIndex ) ) then
|
|
f105_arg0:dispatchEventToRoot( {
|
|
name = "show_warning",
|
|
immediate = true,
|
|
text = Engine.Localize( "LUA_MENU_CUSTOMIZATION_HELMET_WARNING" )
|
|
} )
|
|
else
|
|
f105_arg0:dispatchEventToRoot( {
|
|
name = "hide_warning",
|
|
immediate = true
|
|
} )
|
|
end
|
|
elseif f105_local7 and not f105_local8 then
|
|
f105_arg0:dispatchEventToRoot( {
|
|
name = "show_warning",
|
|
immediate = true,
|
|
text = Engine.Localize( "LUA_MENU_CUSTOMIZATION_RESET_WARNING" )
|
|
} )
|
|
elseif f105_local3 then
|
|
f105_arg0:dispatchEventToRoot( {
|
|
name = "show_warning",
|
|
immediate = true,
|
|
text = Engine.Localize( "LUA_MENU_MP_CUSTOMIZATION_DOG_WARNING" )
|
|
} )
|
|
elseif f105_local4 then
|
|
f105_arg0:dispatchEventToRoot( {
|
|
name = "show_warning",
|
|
immediate = true,
|
|
text = Engine.Localize( "LUA_MENU_MP_CUSTOMIZATION_DOG_WARNING" )
|
|
} )
|
|
else
|
|
f105_arg0:dispatchEventToRoot( {
|
|
name = "hide_warning",
|
|
immediate = true
|
|
} )
|
|
end
|
|
end
|
|
|
|
local f101_local5 = {
|
|
type = "UIVerticalList",
|
|
id = "fields_vlist",
|
|
states = {
|
|
default = {
|
|
topAnchor = true,
|
|
bottomAnchor = true,
|
|
leftAnchor = true,
|
|
rightAnchor = false,
|
|
left = GenericMenuDims.menu_left,
|
|
right = GenericMenuDims.menu_right,
|
|
top = GenericMenuDims.menu_top,
|
|
bottom = 9000,
|
|
alpha = 1
|
|
},
|
|
hidden = {
|
|
alpha = 0
|
|
}
|
|
},
|
|
handlers = {
|
|
open_customize_popup = MBh.AnimateToState( "hidden", 80 ),
|
|
close_customize_popup = MBh.AnimateToState( "default", 80 )
|
|
},
|
|
children = {}
|
|
}
|
|
table.insert( f101_local5.children, {
|
|
type = "UIGenericButton",
|
|
id = "button_special",
|
|
properties = {
|
|
button_text = Engine.Localize( "@LUA_MENU_CUSTOMIZATION_FIELD_SPECIAL_CAPS" ),
|
|
desc_text = Engine.Localize( "@LUA_MENU_CUSTOMIZATION_FIELD_DESC_SPECIAL" ),
|
|
button_action_func = function ( f106_arg0, f106_arg1 )
|
|
f101_local0.currentField = Cac.Customization.Fields[Cac.Customization.FieldIndexes.Body]
|
|
f101_local0.specialField = true
|
|
f101_local0.currentPage = 1
|
|
f101_local0.rowsOffset = 0
|
|
f101_local0.currentButtonSlot = 1
|
|
f101_local0.categories = Cac.Customization.GetCategorizedElementRefsForField( f106_arg1.controller, f101_local0.currentField, function ( f107_arg0 )
|
|
return not Cac.IsCommonGender( f107_arg0 )
|
|
end )
|
|
LUI.FlowManager.RequestPopupMenu( f106_arg0, "cac_customize_buttons_popup", true, f106_arg1.controller, false )
|
|
end,
|
|
button_over_func = function ( f108_arg0, f108_arg1 )
|
|
f101_local2( f108_arg0, f108_arg1 )
|
|
f101_local4( f108_arg0, "special" )
|
|
end,
|
|
additional_handlers = {
|
|
refresh_new_icons = function ( f109_arg0, f109_arg1 )
|
|
if Cac.AnyUnseenMDLCItems( f101_local0.exclusiveControllerIndex, {
|
|
"Special"
|
|
} ) then
|
|
f109_arg0:processEvent( {
|
|
name = "show_new_icon"
|
|
} )
|
|
else
|
|
f109_arg0:processEvent( {
|
|
name = "hide_new_icon"
|
|
} )
|
|
end
|
|
end,
|
|
menu_create = function ( f110_arg0, f110_arg1 )
|
|
if Cac.AnyUnseenMDLCItems( f101_local0.exclusiveControllerIndex or 0, {
|
|
"Special"
|
|
} ) then
|
|
f110_arg0:processEvent( {
|
|
name = "show_new_icon"
|
|
} )
|
|
end
|
|
end
|
|
}
|
|
}
|
|
} )
|
|
table.insert( f101_local5.children, {
|
|
type = "UIGenericButton",
|
|
id = "button_gender",
|
|
properties = {
|
|
button_text = Engine.Localize( "@LUA_MENU_CUSTOMIZATION_FIELD_GENDER_CAPS" ),
|
|
desc_text = Engine.Localize( "@LUA_MENU_CUSTOMIZATION_FIELD_DESC_GENDER" ),
|
|
button_action_func = function ( f111_arg0, f111_arg1 )
|
|
LUI.FlowManager.RequestPopupMenu( f111_arg0, "cac_customize_gender_popup", true, f111_arg1.controller, false, {} )
|
|
end,
|
|
button_over_func = function ( f112_arg0, f112_arg1 )
|
|
f101_local2( f112_arg0, f112_arg1 )
|
|
f101_local4( f112_arg0, "gender" )
|
|
end,
|
|
additional_handlers = {
|
|
refresh_new_icons = function ( f113_arg0, f113_arg1 )
|
|
if Engine.IsAliensMode() then
|
|
refresh_customize_new_icon_gender( f113_arg0, f101_local0.exclusiveControllerIndex, "coopSquadMembers", 0, field )
|
|
else
|
|
refresh_customize_new_icon_gender( f113_arg0, f101_local0.exclusiveControllerIndex, f101_local0.squadLocation, f101_local0.squadMemberIndex, field )
|
|
end
|
|
end,
|
|
menu_create = function ( f114_arg0, f114_arg1 )
|
|
if Engine.IsAliensMode() then
|
|
refresh_customize_new_icon_gender( f114_arg0, f101_local0.exclusiveControllerIndex, "coopSquadMembers", 0, field )
|
|
else
|
|
refresh_customize_new_icon_gender( f114_arg0, f101_local0.exclusiveControllerIndex, f101_local0.squadLocation, f101_local0.squadMemberIndex, field )
|
|
end
|
|
end
|
|
}
|
|
}
|
|
} )
|
|
local f101_local6 = IsPublicMatch()
|
|
if not f101_local6 then
|
|
f101_local6 = IsOnlineAliens()
|
|
end
|
|
for f101_local22, f101_local23 in ipairs( Cac.Customization.Fields ) do
|
|
if not f101_local23.PublicOnly or f101_local6 then
|
|
local f101_local10 = f101_local22 == Cac.Customization.FieldIndexes.ClanTag
|
|
local f101_local11 = f101_local22 == Cac.Customization.FieldIndexes.Patchbacking
|
|
local f101_local12 = f101_local22 == Cac.Customization.FieldIndexes.GuardDog
|
|
local f101_local13 = f101_local22 == Cac.Customization.FieldIndexes.Announcer
|
|
local f101_local14
|
|
if 1 == Engine.GetDvarInt( "igs_swp" ) then
|
|
f101_local14 = not Engine.IsAliensMode()
|
|
else
|
|
f101_local14 = false
|
|
end
|
|
local f101_local15
|
|
if 0 ~= Engine.GetDvarInt( "igs_announcer" ) then
|
|
f101_local15 = not Engine.IsAliensMode()
|
|
else
|
|
f101_local15 = false
|
|
end
|
|
if not f101_local11 and (not f101_local10 or Engine.IsConsoleGame()) and (not f101_local12 or f101_local14) and (not f101_local13 or f101_local15) then
|
|
local f101_local16 = f101_local23.buttonVariant
|
|
if not f101_local16 then
|
|
f101_local16 = GenericButtonSettings.Variants.Plain
|
|
end
|
|
if f101_local12 then
|
|
table.insert( f101_local5.children, {
|
|
type = "generic_separator"
|
|
} )
|
|
end
|
|
local f101_local17 = table.insert
|
|
local f101_local18 = f101_local5.children
|
|
local f101_local19 = {
|
|
type = "UIGenericButton",
|
|
id = "button_" .. f101_local23.LocName
|
|
}
|
|
local f101_local20 = {}
|
|
local f101_local21
|
|
if f101_local16 ~= GenericButtonSettings.Variants.Plain then
|
|
f101_local21 = {
|
|
leftAnchor = true,
|
|
rightAnchor = false,
|
|
topAnchor = true,
|
|
bottomAnchor = false,
|
|
top = 0,
|
|
bottom = GenericButtonSettings.Styles.GradientButton.height,
|
|
right = GenericMenuDims.menu_right_wide,
|
|
left = 0
|
|
}
|
|
if not f101_local21 then
|
|
|
|
else
|
|
f101_local20.default = f101_local21
|
|
f101_local19.states = f101_local20
|
|
f101_local19.properties = {
|
|
variant = f101_local16,
|
|
button_text = Engine.Localize( "@LUA_MENU_CUSTOMIZATION_FIELD_" .. f101_local23.LocName .. "_CAPS" ),
|
|
desc_text = Engine.Localize( "@LUA_MENU_CUSTOMIZATION_FIELD_DESC_" .. f101_local23.LocName ),
|
|
button_display_func = function ( f115_arg0, f115_arg1 )
|
|
local f115_local0 = assert
|
|
local f115_local1 = f101_local23.GetSavedRef
|
|
if f115_local1 then
|
|
f115_local1 = f101_local23.GetName
|
|
end
|
|
f115_local0( f115_local1 )
|
|
return Engine.Localize( f101_local23.GetName( f101_local23.GetSavedRef( f101_local0.exclusiveControllerIndex or 0 ) ) )
|
|
end,
|
|
button_action_func = function ( f116_arg0, f116_arg1 )
|
|
f101_local0.currentPage = 1
|
|
f101_local0.rowsOffset = 0
|
|
f101_local0.currentButtonSlot = 1
|
|
if not f101_local10 then
|
|
local f116_local0 = Cac.GetCurrentGender( f101_local0.exclusiveControllerIndex, f101_local0.squadLocation, f101_local0.squadMemberIndex )
|
|
if not Cac.IsCommonGender( f116_local0 ) then
|
|
f116_local0 = Cac.Customization.Gender.Male
|
|
end
|
|
f101_local0.categories = Cac.Customization.GetCategorizedElementRefsForField( f116_arg1.controller, f101_local0.currentField, f116_local0 )
|
|
end
|
|
LUI.FlowManager.RequestPopupMenu( f116_arg0, f101_local23.SelectionPopup, true, f116_arg1.controller, false )
|
|
end,
|
|
button_over_func = function ( f117_arg0, f117_arg1 )
|
|
f101_local0.currentField = f101_local23
|
|
f101_local0.specialField = false
|
|
f117_arg0:dispatchEventToRoot( {
|
|
name = "current_field_changed",
|
|
immediate = true
|
|
} )
|
|
f117_arg0:processEvent( {
|
|
name = "content_refresh"
|
|
} )
|
|
f101_local3( f117_arg0, f101_local23 )
|
|
f101_local4( f117_arg0, f101_local23 )
|
|
end,
|
|
button_over_disable_func = function ( f118_arg0, f118_arg1 )
|
|
f101_local3( f118_arg0, f101_local23 )
|
|
f101_local4( f118_arg0, f101_local23 )
|
|
end,
|
|
additional_handlers = {
|
|
refresh_new_icons = function ( f119_arg0, f119_arg1 )
|
|
if Engine.IsAliensMode() then
|
|
refresh_customize_new_icon( f119_arg0, f101_local0.exclusiveControllerIndex, "coopSquadMembers", 0, f101_local23 )
|
|
else
|
|
refresh_customize_new_icon( f119_arg0, f101_local0.exclusiveControllerIndex, f101_local0.squadLocation, f101_local0.squadMemberIndex, f101_local23 )
|
|
end
|
|
end,
|
|
menu_create = function ( f120_arg0, f120_arg1 )
|
|
if Engine.IsAliensMode() then
|
|
refresh_customize_new_icon( f120_arg0, f101_local0.exclusiveControllerIndex, "coopSquadMembers", 0, f101_local23 )
|
|
else
|
|
refresh_customize_new_icon( f120_arg0, f101_local0.exclusiveControllerIndex, f101_local0.squadLocation, f101_local0.squadMemberIndex, f101_local23 )
|
|
end
|
|
end
|
|
},
|
|
text_padding_with_content = 250,
|
|
content_width = 225
|
|
}
|
|
f101_local17( f101_local18, f101_local19 )
|
|
end
|
|
end
|
|
f101_local21 = {}
|
|
end
|
|
end
|
|
end
|
|
table.insert( f101_local5.children, {
|
|
type = "button_desc_text",
|
|
properties = {
|
|
lines = 1
|
|
}
|
|
} )
|
|
table.insert( f101_local5.children, {
|
|
type = "cac_customize_warning"
|
|
} )
|
|
return f101_local5
|
|
end
|
|
|
|
function cac_customize_warning()
|
|
local f121_local0 = {
|
|
"icon_new",
|
|
"icon_new_2"
|
|
}
|
|
local f121_local1 = {
|
|
"default",
|
|
"alt"
|
|
}
|
|
return {
|
|
type = "UIElement",
|
|
id = "warning",
|
|
properties = {
|
|
text_offset = 2
|
|
},
|
|
states = {
|
|
default = {
|
|
leftAnchor = true,
|
|
rightAnchor = true,
|
|
topAnchor = true,
|
|
bottomAnchor = true,
|
|
left = 0,
|
|
right = 0,
|
|
top = 0,
|
|
bottom = 0,
|
|
alpha = 0
|
|
},
|
|
visible = {
|
|
alpha = 1
|
|
}
|
|
},
|
|
handlers = {
|
|
hide_warning = MBh.AnimateToState( "default", 100 ),
|
|
show_warning = function ( f122_arg0, f122_arg1 )
|
|
f122_arg0:animateToState( "visible", 100 )
|
|
if f122_arg1.text then
|
|
local f122_local0 = f122_arg0:getChildById( "warning_text" )
|
|
f122_local0:setText( f122_arg1.text )
|
|
if f122_arg1.style and f122_arg1.style > 0 and f122_arg1.style <= #f121_local1 then
|
|
f122_local0 = f122_arg0:getChildById( "warning_text" )
|
|
f122_local0:animateToState( f121_local1[f122_arg1.style] )
|
|
end
|
|
end
|
|
if f122_arg1.style and f122_arg1.style > 0 and f122_arg1.style <= #f121_local0 then
|
|
local f122_local0 = f122_arg0:getChildById( "warning_exclamation" )
|
|
f122_local0:setImage( RegisterMaterial( f121_local0[f122_arg1.style] ) )
|
|
end
|
|
end
|
|
|
|
},
|
|
children = {
|
|
{
|
|
type = "UIImage",
|
|
id = "warning_exclamation",
|
|
states = {
|
|
default = {
|
|
material = RegisterMaterial( "icon_new" ),
|
|
leftAnchor = true,
|
|
rightAnchor = false,
|
|
topAnchor = true,
|
|
bottomAnchor = false,
|
|
left = 95,
|
|
width = 32,
|
|
top = 0,
|
|
height = 32
|
|
}
|
|
}
|
|
},
|
|
{
|
|
type = "UIText",
|
|
id = "warning_text",
|
|
states = {
|
|
default = CoD.ColorizeState( Cac.Swatches.warning_text, {
|
|
alignment = LUI.Alignment.Left,
|
|
font = CoD.TextSettings.NormalFont.Font,
|
|
leftAnchor = true,
|
|
rightAnchor = true,
|
|
topAnchor = true,
|
|
bottomAnchor = false,
|
|
left = 130,
|
|
right = 0,
|
|
top = MBh.Property( "text_offset" ),
|
|
height = CoD.TextSettings.NormalFont.Height
|
|
} ),
|
|
alt = CoD.ColorizeState( Cac.Swatches.new_icon_text, {
|
|
alignment = LUI.Alignment.Left,
|
|
font = CoD.TextSettings.NormalFont.Font,
|
|
leftAnchor = true,
|
|
rightAnchor = true,
|
|
topAnchor = true,
|
|
bottomAnchor = false,
|
|
left = 130,
|
|
right = 0,
|
|
top = MBh.Property( "text_offset" ),
|
|
height = CoD.TextSettings.NormalFont.Height
|
|
} )
|
|
}
|
|
}
|
|
}
|
|
}
|
|
end
|
|
|
|
function SetCamoButtonHelper( f123_arg0, f123_arg1 )
|
|
f123_arg0:processEvent( {
|
|
name = "add_button_helper_text",
|
|
priority = 1,
|
|
button_ref = "button_shoulderl",
|
|
button_ref2 = "button_shoulderr",
|
|
helper_text = Engine.Localize( "PATCH_MENU_CAMO_PREVIEW" ),
|
|
side = "left",
|
|
clickable = true,
|
|
immediate = true
|
|
} )
|
|
end
|
|
|
|
function MenuCreate( f124_arg0, f124_arg1 )
|
|
local f124_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( f124_arg0 )
|
|
if not f124_local0.exclusiveControllerIndex then
|
|
DebugPrint( "WARNING: Opening cac_customize_main menu without exclusive controller, controller index 0 will be used. This should ONLY happen on LUI reload." )
|
|
f124_local0.exclusiveControllerIndex = 0
|
|
end
|
|
f124_local0.currentCamo = 5
|
|
f124_local0.camos = Cac.GetCamoRefs()
|
|
f124_local0.squadLocation = f124_arg0.properties.squadLocation
|
|
f124_local0.squadMemberIndex = f124_arg0.properties.squadMemberIndex
|
|
f124_arg0:processEvent( {
|
|
name = "update_playercard",
|
|
gamertag = Engine.GetUsernameByController and Engine.GetUsernameByController( f124_local0.exclusiveControllerIndex ) or nil
|
|
} )
|
|
f124_arg0:processEvent( {
|
|
name = "hide_playercard"
|
|
} )
|
|
f124_arg0:processEvent( {
|
|
name = "update_camo"
|
|
} )
|
|
end
|
|
|
|
function BackButtonAction( f125_arg0, f125_arg1 )
|
|
local f125_local0 = CoD.GetStatsGroupForGameMode()
|
|
Cac.SyncPrivateDataFromPlayercard( f125_arg1.controller )
|
|
Engine.Exec( "uploadstats", f125_arg1.controller )
|
|
if f125_local0 == CoD.StatsGroup.Ranked or f125_local0 == CoD.StatsGroup.Coop then
|
|
Engine.Exec( "upload_playercard", f125_arg1.controller )
|
|
end
|
|
local f125_local1 = LUI.FlowManager.GetMenuScopedDataFromElement( f125_arg0 )
|
|
if f125_local1.alternateCacMenus then
|
|
local f125_local2 = GetInterMenuData( f125_arg0 )
|
|
f125_local2.alternateCacMenus = not f125_local2.alternateCacMenus
|
|
LUI.FlowManager.RequestAddMenu( f125_arg0, "cac_edit_main", true, f125_arg1.controller, true, f125_local2 )
|
|
else
|
|
LUI.FlowManager.RequestLeaveMenu( f125_arg0 )
|
|
end
|
|
end
|
|
|
|
function cac_customize_main()
|
|
local f126_local0 = {
|
|
type = "UIElement",
|
|
id = "cac_customize_main",
|
|
states = {
|
|
default = {
|
|
leftAnchor = true,
|
|
rightAnchor = true,
|
|
topAnchor = true,
|
|
bottomAnchor = true,
|
|
left = 0,
|
|
right = 0,
|
|
top = 0,
|
|
bottom = 0
|
|
}
|
|
},
|
|
properties = {
|
|
classLocation = "loadouts",
|
|
alternateCacMenus = false,
|
|
squadLocation = Cac.GetSquadLoc(),
|
|
squadMemberIndex = 0,
|
|
loadout_slot = 0
|
|
},
|
|
handlers = {
|
|
menu_create = MenuCreate,
|
|
preview_element = function ( f127_arg0, f127_arg1 )
|
|
f127_arg0.currentSetup = f127_arg0.currentSetup or {}
|
|
local f127_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( f127_arg0 )
|
|
assert( f127_arg1.field, "Missing field for previewing element!" )
|
|
assert( f127_arg1.field.PreviewFunction and f127_arg1.elementRef, "Missing data for previewing element" )
|
|
local f127_local1 = f127_arg1.field.PreviewFunction( f127_local0.exclusiveControllerIndex, f127_arg0, "customize_char_handle", f127_arg1.elementRef, f127_local0.squadMemberIndex, f127_local0.camos[f127_local0.currentCamo] )
|
|
if f127_local1 then
|
|
for f127_local5, f127_local6 in pairs( f127_local1 ) do
|
|
f127_arg0.currentSetup[f127_local5] = f127_local6
|
|
end
|
|
end
|
|
end,
|
|
update_camo = function ( f128_arg0, f128_arg1 )
|
|
f128_arg0.currentSetup = f128_arg0.currentSetup or {}
|
|
local f128_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( f128_arg0 )
|
|
local f128_local1 = Cac.Customization.Fields[Cac.Customization.FieldIndexes.Body]
|
|
local f128_local2 = Cac.Customization.Fields[Cac.Customization.FieldIndexes.Head]
|
|
local f128_local3 = Cac.Customization.Fields[Cac.Customization.FieldIndexes.Helmet]
|
|
local f128_local4 = Cac.Customization.Fields[Cac.Customization.FieldIndexes.Patch]
|
|
local f128_local5 = f128_arg0.currentSetup[f128_local1]
|
|
if not f128_local5 then
|
|
f128_local5 = f128_local1.GetSavedRef( f128_local0.exclusiveControllerIndex, f128_local0.squadLocation, f128_local0.squadMemberIndex )
|
|
end
|
|
local f128_local6 = f128_local1.MakeModelName( f128_local5, f128_local0.camos[f128_local0.currentCamo] )
|
|
local f128_local7 = f128_local4.GetSavedRef( f128_local0.exclusiveControllerIndex, f128_local0.squadLocation, f128_local0.squadMemberIndex )
|
|
local f128_local8 = f128_arg0.currentSetup[f128_local2]
|
|
if not f128_local8 then
|
|
f128_local8 = f128_local2.GetSavedRef( f128_local0.exclusiveControllerIndex, f128_local0.squadLocation, f128_local0.squadMemberIndex )
|
|
end
|
|
local f128_local9 = f128_arg0.currentSetup[f128_local3]
|
|
if not f128_local9 then
|
|
f128_local9 = f128_local3.GetSavedRef( f128_local0.exclusiveControllerIndex, f128_local0.squadLocation, f128_local0.squadMemberIndex )
|
|
end
|
|
local f128_local10 = f128_local2.MakeModelName( f128_local8, f128_local9, f128_local0.camos[f128_local0.currentCamo] )
|
|
CharacterScene.ChangeBody( "customize_char_handle", f128_local6, f128_local7 )
|
|
CharacterScene.ChangeHead( "customize_char_handle", f128_local10 )
|
|
SetCamoButtonHelper( f128_arg0, f128_local0 )
|
|
end,
|
|
text_input_complete = InputClanTagComplete
|
|
}
|
|
}
|
|
local f126_local1 = {}
|
|
local f126_local2 = {
|
|
type = "UIImage",
|
|
id = "menu_background",
|
|
states = {
|
|
default = {
|
|
material = RegisterMaterial( "bkgd_cas" ),
|
|
topAnchor = true,
|
|
bottomAnchor = true,
|
|
leftAnchor = true,
|
|
rightAnchor = true,
|
|
top = 0,
|
|
bottom = 0,
|
|
left = 0,
|
|
right = 0
|
|
}
|
|
}
|
|
}
|
|
local f126_local3 = {
|
|
type = "generic_menu_title",
|
|
properties = {
|
|
menu_title = Engine.Localize( "@LUA_MENU_CUSTOMIZE_APPEARANCE_CAPS" )
|
|
}
|
|
}
|
|
local f126_local4 = fields_vlist()
|
|
local f126_local5 = {
|
|
type = "UISquadMemberWindow"
|
|
}
|
|
local f126_local6 = {
|
|
use_playercard = true,
|
|
use_background = true
|
|
}
|
|
local f126_local7 = {}
|
|
local f126_local8 = IsPublicMatch()
|
|
if not f126_local8 then
|
|
f126_local8 = Engine.IsAliensMode()
|
|
end
|
|
f126_local7.use_level_progress = f126_local8
|
|
f126_local6.card_props = f126_local7
|
|
f126_local6.card_dims = {
|
|
top = -120,
|
|
bottom = -155,
|
|
left = -50,
|
|
right = -50
|
|
}
|
|
f126_local6.card_scale = -0.15
|
|
f126_local6.charHandle = "customize_char_handle"
|
|
f126_local6.default_anim = Cac.Customization.Animations.default
|
|
f126_local6.char_window_dims = {
|
|
top = 0,
|
|
bottom = 610,
|
|
left = -175,
|
|
right = 435
|
|
}
|
|
f126_local6.uv_values = {
|
|
0,
|
|
0,
|
|
1,
|
|
1
|
|
}
|
|
f126_local6.character_pos = CharacterCameraPresets.CustomizeMenu.Default.Position
|
|
f126_local6.controller = MBh.Property( "exclusiveController" )
|
|
f126_local6.squad_member_index = MBh.Property( "squadMemberIndex" )
|
|
f126_local6.squad_location = MBh.Property( "squadLocation" )
|
|
f126_local6.loadout_slot = MBh.Property( "loadout_slot" )
|
|
f126_local6.mask_pos_data = {
|
|
top = 17,
|
|
bottom = 0,
|
|
left = 0,
|
|
right = 0
|
|
}
|
|
f126_local5.properties = f126_local6
|
|
f126_local5.states = {
|
|
default = {
|
|
topAnchor = true,
|
|
leftAnchor = false,
|
|
bottomAnchor = false,
|
|
rightAnchor = true,
|
|
top = 70,
|
|
left = 0 + Cac.Layout.CacEditPanel.shift_delta,
|
|
bottom = 670,
|
|
right = 746 + Cac.Layout.CacEditPanel.shift_delta
|
|
}
|
|
}
|
|
f126_local5.handlers = {
|
|
character_full_refresh = function ( f129_arg0, f129_arg1 )
|
|
local f129_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( f129_arg0 )
|
|
f129_arg0:updateSquadMember( f129_local0.exclusiveControllerIndex, f129_local0.squadMemberIndex )
|
|
local f129_local1 = f129_arg0:getParent()
|
|
f129_local1.currentSetup = {}
|
|
f129_local1 = f129_arg0:getParent()
|
|
f129_local1:processEvent( {
|
|
name = "update_camo"
|
|
} )
|
|
end,
|
|
current_field_changed = function ( f130_arg0, f130_arg1 )
|
|
local f130_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( f130_arg0 )
|
|
assert( f130_local0.currentField )
|
|
end,
|
|
character_init_complete = function ( f131_arg0, f131_arg1 )
|
|
local f131_local0 = f131_arg0:getParent()
|
|
f131_local0 = f131_local0.currentSetup
|
|
if f131_local0 then
|
|
for f131_local4, f131_local5 in pairs( f131_local0 ) do
|
|
f131_arg0:dispatchEventToRoot( {
|
|
name = "preview_element",
|
|
immediate = true,
|
|
field = f131_local4,
|
|
elementRef = f131_local5
|
|
} )
|
|
end
|
|
end
|
|
end
|
|
}
|
|
f126_local6 = Cac.GetEditCurrency()
|
|
f126_local7 = {
|
|
type = "button_helper_text_main",
|
|
handlers = {
|
|
menu_create = function ( f132_arg0, f132_arg1 )
|
|
f132_arg0:processEvent( LUI.ButtonHelperText.CommonEvents.addBackButton )
|
|
f132_arg0:processEvent( {
|
|
name = "add_loadout_button_helper"
|
|
} )
|
|
end,
|
|
add_loadout_button_helper = function ( f133_arg0, f133_arg1 )
|
|
if not Engine.IsAliensMode() then
|
|
f133_arg0:processEvent( {
|
|
name = "add_button_helper_text",
|
|
button_ref = "button_alt1",
|
|
helper_text = Engine.Localize( "@LUA_MENU_LOADOUT_EDIT" ),
|
|
side = "left",
|
|
clickable = true,
|
|
immediate = true
|
|
} )
|
|
end
|
|
end,
|
|
rebind_shoulder_buttons = MBh.EmitEvent( {
|
|
name = "rebind",
|
|
buttonLeft = ButtonMap.button_shoulderl
|
|
} ),
|
|
rebind_back_button = MBh.EmitEvent( {
|
|
name = "rebind",
|
|
buttonLeft = ButtonMap.button_secondary
|
|
} )
|
|
}
|
|
}
|
|
f126_local8 = {
|
|
type = "online_friends_widget",
|
|
properties = {
|
|
ignorePopups = true
|
|
}
|
|
}
|
|
local f126_local9 = {
|
|
type = "UIBindButton",
|
|
id = "customization_button_bind",
|
|
handlers = {
|
|
button_secondary = BackButtonAction,
|
|
button_alt1 = function ( f134_arg0, f134_arg1 )
|
|
if not Engine.IsAliensMode() then
|
|
local f134_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( f134_arg0 )
|
|
f134_local0.alternateCacMenus = not f134_local0.alternateCacMenus
|
|
local f134_local1 = GetInterMenuData( f134_arg0 )
|
|
f134_local1.alternateCacMenus = f134_local0.alternateCacMenus
|
|
LUI.FlowManager.RequestAddMenu( f134_arg0, "cac_edit_main", true, f134_arg1.controller, true, f134_local1 )
|
|
end
|
|
end
|
|
}
|
|
}
|
|
local f126_local10 = {
|
|
type = "UIBindButton",
|
|
id = "customization_shoulder_buttons_bind",
|
|
handlers = {
|
|
button_shoulderl = function ( f135_arg0, f135_arg1 )
|
|
Engine.PlaySound( CoD.SFX.SubMenuMouseOver )
|
|
local f135_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( f135_arg0 )
|
|
f135_local0.currentCamo = 1 + (#f135_local0.camos + f135_local0.currentCamo - 2) % #f135_local0.camos
|
|
f135_arg0:dispatchEventToRoot( {
|
|
name = "update_camo"
|
|
} )
|
|
end,
|
|
button_shoulderr = function ( f136_arg0, f136_arg1 )
|
|
Engine.PlaySound( CoD.SFX.SubMenuMouseOver )
|
|
local f136_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( f136_arg0 )
|
|
f136_local0.currentCamo = 1 + f136_local0.currentCamo % #f136_local0.camos
|
|
f136_arg0:dispatchEventToRoot( {
|
|
name = "update_camo"
|
|
} )
|
|
end,
|
|
rebind_shoulder_buttons = function ( f137_arg0, f137_arg1 )
|
|
LUI.UIBindButton.ElementEnable( f137_arg0 )
|
|
end,
|
|
unbind_shoulder_buttons = function ( f138_arg0, f138_arg1 )
|
|
LUI.UIBindButton.ElementDisable( f138_arg0 )
|
|
end
|
|
}
|
|
}
|
|
f126_local1[1] = f126_local2
|
|
f126_local1[2] = f126_local3
|
|
f126_local1[3] = f126_local4
|
|
f126_local1[4] = f126_local5
|
|
f126_local1[5] = f126_local6
|
|
f126_local1[6] = f126_local7
|
|
f126_local1[7] = f126_local8
|
|
f126_local1[8] = f126_local9
|
|
f126_local1[9] = f126_local10
|
|
f126_local0.children = f126_local1
|
|
return f126_local0
|
|
end
|
|
|
|
LUI.MenuBuilder.registerDef( "cac_customize_buttons_popup", cac_customize_buttons_popup )
|
|
LUI.MenuBuilder.registerDef( "cac_customize_vlist_popup", cac_customize_vlist_popup )
|
|
LUI.MenuBuilder.registerDef( "cac_customize_grid_popup", cac_customize_grid_popup )
|
|
LUI.MenuBuilder.registerType( "cac_customize_small_popup", cac_customize_small_popup )
|
|
LUI.MenuBuilder.registerDef( "cac_customize_clan_tag_popup", cac_customize_clan_tag_popup )
|
|
LUI.MenuBuilder.registerDef( "cac_customize_gender_popup", cac_customize_gender_popup )
|
|
LUI.MenuBuilder.registerDef( "cac_customize_warning", cac_customize_warning )
|
|
LUI.MenuBuilder.registerDef( "cac_customize_main", cac_customize_main )
|
|
LockTable( _M )
|