local f0_local0 = module local f0_local1, f0_local2 = ... f0_local0( f0_local1, package.seeall ) CoD.PrintModuleLoad( _NAME ) function SquadsModeMenuCreate( f1_arg0, f1_arg1 ) local f1_local0 = Engine.GetFirstActiveController() assert( Engine.GetDvarBool( "onlinegame" ) ) Engine.SetDvarBool( "squad_match", false ) f1_arg0:processEvent( LUI.ButtonHelperText.CommonEvents.addBackButton ) if (Engine.IsPS3() or Engine.IsPS4()) and SvS.ShowChatRestrict == true then f1_arg0:dispatchEventToRoot( { name = "show_chat_restrict", controller = f1_arg1.controller } ) SvS.ShowChatRestrict = false end end function SquadsHQCreate( f2_arg0, f2_arg1 ) f2_arg0:processEvent( LUI.ButtonHelperText.CommonEvents.addBackButton ) Engine.ExecNow( "uploadstats", f2_arg1.controller ) end function OnMenuBackOut( f3_arg0, f3_arg1 ) local f3_local0 = Engine.GetFirstActiveController() Engine.SetDvarBool( "onlinegame", false ) Engine.SetDvarBool( "splitscreen", false ) Engine.ExecNow( "forcesplitscreencontrol menu_xboxlive_CLOSE", f3_local0 ) LUI.FlowManager.RequestLeaveMenu( f3_arg0 ) end function SelectMode( f4_arg0, f4_arg1 ) if not SvS.IsSquadModeDisabled( f4_arg1 ) then Engine.ExecNow( "resetSplitscreenSignIn", f4_arg0 ) Engine.SetDvarBool( "splitscreen", false ) Engine.ExecNow( "xstartprivateparty", f4_arg0 ) SvS.SetCurrentSquadModeInfo( f4_arg1 ) LUI.FlowManager.RequestAddMenu( nil, "menu_xboxlive", false, f4_arg0, false ) end end function DisplaySubModePopup( f5_arg0, f5_arg1 ) LUI.FlowManager.RequestPopupMenu( self, "squads_mode_sub_mode_popup", true, f5_arg0, false, { categoryInfo = f5_arg1 } ) end function SubMenuSelectionAction( f6_arg0, f6_arg1 ) return SelectMode( f6_arg1.controller, f6_arg0.properties.modeInfo ) end function CategoryButtonAction( f7_arg0, f7_arg1 ) local f7_local0 = f7_arg0.properties.categoryInfo if #f7_local0.Modes == 1 then return SelectMode( f7_arg1.controller, f7_local0.Modes[1] ) else return DisplaySubModePopup( f7_arg1.controller, f7_local0 ) end end function CheckCategoryDisabled( f8_arg0 ) for f8_local0 = 1, #f8_arg0.Modes, 1 do if not SvS.IsSquadModeDisabled( f8_arg0.Modes[f8_local0] ) then return false end end return true end function RefreshCategoryButtonDisabled( f9_arg0, f9_arg1 ) local f9_local0 = CheckCategoryDisabled( f9_arg0.properties.categoryInfo ) if f9_local0 and not f9_arg0.disabled then f9_arg0:processEvent( { name = "disable" } ) elseif not f9_local0 and f9_arg0.disabled then f9_arg0:processEvent( { name = "enable" } ) end end function SubModePopupChildfeeder( f10_arg0 ) assert( f10_arg0 and f10_arg0.categoryInfo ) local f10_local0 = f10_arg0.categoryInfo local f10_local1 = {} for f10_local2 = 1, #f10_local0.Modes, 1 do local f10_local5 = f10_local0.Modes[f10_local2] if not SvS.IsSquadModeDisabled( f10_local5 ) then local f10_local6, f10_local7 = SvS.GetPlaylistFromSquadMode( f10_local5 ) f10_local1[#f10_local1 + 1] = { type = "UIGenericButton", id = "sub_mode_popup_" .. f10_local2, properties = { style = GenericButtonSettings.Styles.GlassButton, substyle = GenericButtonSettings.Styles.GlassButton.SubStyles.Popup, text = Playlist.GetItemName( f10_local6, f10_local7 ), modeInfo = f10_local5 }, handlers = { button_action = SubMenuSelectionAction, button_over = function ( f11_arg0, f11_arg1 ) f11_arg0:dispatchEventToRoot( { name = "update_popup_desc_text", modeInfo = f11_arg0.properties.modeInfo, immediate = true } ) end } } end end return f10_local1 end function squads_mode_sub_mode_popup() local f12_local0 = 550 local f12_local1 = 250 local f12_local2 = 30 return { type = "UIElement", id = "squads_mode_sub_mode_popup_container_id", properties = { categoryInfo = {} }, states = { default = { topAnchor = true, leftAnchor = true, bottomAnchor = true, rightAnchor = true, top = 0, bottom = 0, left = 0, right = 0 } }, children = { { type = "UIImage", id = "squads_mode_sub_mode_popup_overlay_id", states = { default = CoD.ColorizeState( Swatches.Overlay.Color, { topAnchor = true, leftAnchor = true, bottomAnchor = true, rightAnchor = true, top = -200, bottom = 175, left = 0, right = 0, material = RegisterMaterial( "white" ), alpha = Swatches.Overlay.AlphaMore } ) } }, { type = "UIElement", id = "squads_mode_sub_mode_popup_id", states = { default = { topAnchor = false, bottomAnchor = false, leftAnchor = false, rightAnchor = false, top = -(f12_local1 / 2 + f12_local2), bottom = f12_local1 / 2 - f12_local2, width = f12_local0 } }, children = { { type = "generic_drop_shadow", id = "squads_mode_sub_mode_popup_dropshadow_id", properties = { offset_shadow = 0 } }, { type = "generic_menu_titlebar", id = "squads_mode_sub_mode_popup_titlebar_id", properties = { title_bar_text = Engine.Localize( "MENU_GAME_TYPES" ), fill_alpha = 1 } }, { type = "generic_menu_background", id = "squads_mode_sub_mode_popup_background_id", properties = { fill_alpha = 1, categoryInfo = MBh.Property( "categoryInfo" ) }, children = { { type = "UIElement", id = "squads_mode_sub_mode_popup_icon_container_id", states = { default = { topAnchor = true, bottomAnchor = false, leftAnchor = true, rightAnchor = false, top = 3, left = 3, width = 128, height = 128 } }, children = { { type = "UIImage", id = "squads_mode_sub_mode_popup_icon_id", states = { default = { topAnchor = true, bottomAnchor = false, leftAnchor = false, rightAnchor = false, top = -20, width = 192, height = 192 } }, handlers = { update_popup_desc_text = function ( f13_arg0, f13_arg1 ) if f13_arg1.modeInfo then local f13_local0 = SvS.GetSquadPlaylistImageByMode( f13_arg1.modeInfo ) if f13_arg1.modeInfo == SvS.SquadModes.SafeguardExtended and f13_local0 == "icon_pl_safeguard" then f13_local0 = "icon_pl_safeguard_extended" end if f13_local0 and f13_local0 ~= "" then f13_arg0:setImage( RegisterMaterial( f13_local0 ) ) end end end } } } }, { type = "UIImage", states = { default = CoD.ColorizeState( Swatches.GenericMenu.Border, { topAnchor = true, bottomAnchor = true, leftAnchor = true, rightAnchor = false, top = 1, bottom = -1, left = 133, width = 1, material = RegisterMaterial( "white" ), alpha = Swatches.GenericMenu.BackgroundAlpha } ) } }, { type = "UIStencil", id = "squads_mode_sub_mode_popup_list_container_id", properties = { categoryInfo = MBh.Property( "categoryInfo" ) }, states = { default = { topAnchor = true, bottomAnchor = false, leftAnchor = true, rightAnchor = true, top = 5, left = 138, right = -5, height = 115, alignment = LUI.Alignment.Top } }, children = { { type = "UIVerticalList", id = "squads_mode_sub_mode_popup_list_id", properties = { categoryInfo = MBh.Property( "categoryInfo" ) }, states = { default = { topAnchor = true, bottomAnchor = true, leftAnchor = true, rightAnchor = true, top = 0, bottom = 0, left = 0, right = 0 } }, childrenFeeder = SubModePopupChildfeeder } } }, { type = "UIMarqueeText", id = "squads_mode_sub_mode_popup_mode_desc_id", properties = { text = "", useTextWrapping = true, textHeight = CoD.TextSettings.NormalFont.Height }, states = { default = CoD.ColorizeState( Colors.secondary_text_color, { topAnchor = true, bottomAnchor = false, leftAnchor = true, rightAnchor = true, top = 115, left = 138, right = -5, height = 3 * CoD.TextSettings.NormalFont.Height, font = CoD.TextSettings.NormalFont.Font, alignment = LUI.Alignment.Center } ) }, handlers = { update_popup_desc_text = function ( f14_arg0, f14_arg1 ) if f14_arg1.modeInfo then f14_arg0:setText( SvS.GetSquadModeDesc( f14_arg1.modeInfo ) ) end end } }, { type = "UIText", id = "squads_mode_sub_mode_popup_player_desc_id", properties = { categoryInfo = MBh.Property( "categoryInfo" ) }, states = { default = CoD.ColorizeState( Colors.secondary_text_color, { topAnchor = false, bottomAnchor = true, leftAnchor = true, rightAnchor = true, bottom = -10, left = 138, right = -5, height = CoD.TextSettings.ExtraBigFont.Height, font = CoD.TextSettings.ExtraBigFont.Font, alignment = LUI.Alignment.Center } ) }, handlers = { menu_create = function ( f15_arg0, f15_arg1 ) local f15_local0 = f15_arg0.properties.categoryInfo.PlayersAltDescLocRef local f15_local1 = "" if f15_local0 ~= "" then f15_local1 = Engine.Localize( f15_local0 ) end f15_arg0:setText( f15_local1 ) end } } } } } }, { type = "UIBindButton", handlers = { button_secondary = function ( f16_arg0, f16_arg1 ) LUI.FlowManager.RequestLeaveMenu( f16_arg0 ) end } } } } end function BuildSquadsCategoryButton( f17_arg0 ) return { type = "UIGenericButton", id = "squads_mode_button_" .. f17_arg0.Devname, disabled = CheckCategoryDisabled( f17_arg0 ), listDefaultFocus = SvS.GetSquadCategoryFromMode( SvS.GetCurrentSquadModeInfo() ) == f17_arg0, properties = { button_text = Engine.Localize( f17_arg0.NameLocRefCaps ), button_action_func = CategoryButtonAction, categoryInfo = f17_arg0, additional_handlers = { check_buttons = RefreshCategoryButtonDisabled } }, handlers = { button_over = function ( f18_arg0, f18_arg1 ) f18_arg0:dispatchEventToRoot( { name = "update_squads_mode_desc", categoryInfo = f17_arg0 } ) end , button_over_disable = function ( f19_arg0, f19_arg1 ) f19_arg0:dispatchEventToRoot( { name = "update_squads_mode_desc", categoryInfo = f17_arg0 } ) end } } end function HideDescPanelEvent( f20_arg0, f20_arg1 ) f20_arg0:dispatchEventToRoot( { name = "update_squads_mode_desc" } ) end function SquadsModeMainButtonListChildFeeder( f21_arg0 ) local f21_local0 = {} for f21_local1 = 1, #SvS.SquadCategories, 1 do f21_local0[#f21_local0 + 1] = BuildSquadsCategoryButton( SvS.SquadCategories[f21_local1] ) end local f21_local1 = Engine.GetDvarInt( "num_available_map_packs" ) if 1 <= f21_local1 or f21_local1 < #SvS.SquadDLCCategories then f21_local0[#f21_local0 + 1] = BuildSquadsCategoryButton( SvS.SquadDLCCategories[f21_local1] ) end f21_local0[#f21_local0 + 1] = { type = "generic_separator", id = "spacer_line_id" } f21_local0[#f21_local0 + 1] = { type = "UIGenericButton", id = "squads_mode_button_squad_reports", properties = { button_text = Engine.Localize( "@LUA_MENU_SQUAD_HQ_CAPS" ), desc_text = Engine.Localize( "@LUA_MENU_SQUAD_HQ_DESC" ), button_action_func = function ( f22_arg0, f22_arg1 ) LUI.FlowManager.RequestAddMenu( f22_arg0, "squads_hq_menu", true, f22_arg1.controller, false, { controller = f22_arg1.controller } ) end, additional_handlers = { button_over = HideDescPanelEvent } } } f21_local0[#f21_local0 + 1] = { type = "UIGenericButton", id = "store_button_id", disabled = false, properties = { button_text = Engine.Localize( "@LUA_MENU_STORE_CAPS" ), button_action_func = function ( f23_arg0, f23_arg1 ) Cac.ClearAllNewIconsForType( f23_arg1.controller, "Store" ) Sns.OpenStoreMenu( f23_arg1.controller ) end, desc_text = Engine.Localize( "@LUA_MENU_STORE_DESC" ), additional_handlers = { button_over = HideDescPanelEvent, refresh_new_icons = function ( f24_arg0, f24_arg1 ) if Cac.AnyUnseenMDLCItems( Engine.GetFirstActiveController(), { "Store" } ) then f24_arg0:processEvent( { name = "show_new_icon" } ) end end } } } f21_local0[#f21_local0 + 1] = { type = "button_desc_text", id = "squads_mode_desc_text_id", states = { default = {}, visible = { alpha = 1 }, hidden = { alpha = 0 } }, handlers = { update_squads_mode_desc = function ( f25_arg0, f25_arg1 ) if f25_arg1.categoryInfo then f25_arg0:animateToState( "hidden", 100 ) else f25_arg0:animateToState( "visible", 100 ) end end } } return f21_local0 end function squad_mode_desc_pane() local f26_local0 = 100 - GenericTitleBarDims.TitleBarHeight local f26_local1 = 650 return { type = "UIElement", id = "gamemode_desc_pane_id", states = { default = { leftAnchor = false, rightAnchor = false, topAnchor = false, bottomAnchor = true, left = -120, right = 576, top = 1024, bottom = 1024 + f26_local1 - f26_local0 }, visible = { leftAnchor = false, rightAnchor = false, topAnchor = true, bottomAnchor = false, left = -120, right = 576, top = f26_local0, bottom = f26_local1 } }, handlers = { update_squads_mode_desc = function ( f27_arg0, f27_arg1 ) if f27_arg1.categoryInfo and f27_arg1.categoryInfo.Image ~= "" then f27_arg0:animateToState( "visible", 250 ) else f27_arg0:animateToState( "default", 250 ) end f27_arg0:dispatchEventToChildren( f27_arg1 ) end }, children = { { type = "generic_menu_background_withfade", id = "gamemode_bg_fade_id", properties = { shadow_top_offset = GenericTitleBarDims.TitleBarHeight }, children = { { type = "UIImage", id = "gamemode_image_id", states = { default = { topAnchor = true, bottomAnchor = false, leftAnchor = true, rightAnchor = false, top = GenericTitleBarDims.TitleBarHeight + 10, left = 10, height = 370, width = 676 }, hidden = { alpha = 0 } }, handlers = { update_squads_mode_desc = function ( f28_arg0, f28_arg1 ) if f28_arg1.categoryInfo and f28_arg1.categoryInfo.Image ~= "" then f28_arg0:setImage( RegisterMaterial( f28_arg1.categoryInfo.Image ) ) end end } }, { type = "UIImage", id = "playlist_image_id", states = { default = { topAnchor = true, bottomAnchor = false, leftAnchor = true, rightAnchor = false, top = 325, left = -40, width = 256, height = 256, alpha = 1 }, hidden = { alpha = 0 } }, handlers = { update_squads_mode_desc = function ( f29_arg0, f29_arg1 ) if f29_arg1.categoryInfo then local f29_local0 = SvS.GetSquadPlaylistImage( f29_arg1.categoryInfo ) if f29_local0 == "" and f29_arg1.categoryInfo.Devname == "squads_dlc" then f29_local0 = SvS.GetSquadPlaylistImage( SvS.SquadDLCCategories[1] ) end if f29_local0 and f29_local0 ~= "" then f29_arg0:setImage( RegisterMaterial( f29_local0 ) ) f29_arg0:animateToState( "default", 0 ) else f29_arg0:animateToState( "hidden", 0 ) end end end } }, { type = "UIMarqueeText", id = "gamemode_desc_id", properties = { textHeight = CoD.TextSettings.NormalFont.Height, useTextWrapping = true }, states = { default = { topAnchor = true, bottomAnchor = false, leftAnchor = true, rightAnchor = true, left = 165, top = 415, right = -5, height = CoD.TextSettings.NormalFont.Height * 3, font = CoD.TextSettings.NormalFont.Font, alignment = LUI.Alignment.Left, red = Colors.primary_text_color.r, green = Colors.primary_text_color.g, blue = Colors.primary_text_color.b } }, handlers = { update_squads_mode_desc = function ( f30_arg0, f30_arg1 ) if f30_arg1.categoryInfo then f30_arg0:setText( SvS.GetSquadCategoryDesc( f30_arg1.categoryInfo ) ) end end } }, { type = "UIText", id = "gamemode_players_desc_id", states = { default = { topAnchor = true, bottomAnchor = false, leftAnchor = true, rightAnchor = true, left = 165, top = 490, right = -5, height = CoD.TextSettings.ExtraBigFont.Height + 10, font = CoD.TextSettings.ExtraBigFont.Font, alignment = LUI.Alignment.Left, red = Colors.secondary_text_color.r, green = Colors.secondary_text_color.g, blue = Colors.secondary_text_color.b } }, handlers = { update_squads_mode_desc = function ( f31_arg0, f31_arg1 ) local f31_local0 = "" if f31_arg1.categoryInfo and f31_arg1.categoryInfo.PlayersDescLocRef ~= "" then f31_local0 = Engine.Localize( f31_arg1.categoryInfo.PlayersDescLocRef ) end f31_arg0:setText( f31_local0 ) end } } } } } } end function SquadsShowChatRestrict( f32_arg0, f32_arg1 ) if Engine.IsPS3() or Engine.IsPS4() then LUI.FlowManager.RequestPopupMenu( f32_arg0, "mp_no_squad_assault", true, f32_arg1.controller, false ) end end function squads_mode_select_menu() return { type = "UIElement", id = "squads_mode_select_menu", properties = { additional_handlers = { gain_focus = function ( f34_arg0, f34_arg1 ) f34_arg0:dispatchEventToRoot( { name = "refresh_new_icons", immediate = true } ) f34_arg0:dispatchEventToRoot( { name = "open_motd", immediate = true } ) end , restore_focus = function ( f35_arg0, f35_arg1 ) f35_arg0:dispatchEventToRoot( { name = "refresh_new_icons", immediate = true } ) end } }, states = { default = { topAnchor = true, bottomAnchor = true, leftAnchor = true, rightAnchor = true, top = 0, bottom = 0, left = 0, right = 0 } }, handlers = { menu_create = SquadsModeMenuCreate, show_chat_restrict = SquadsShowChatRestrict }, children = { { type = "generic_menu_title", id = "squads_mode_select_menu_title_text_id", properties = { menu_title = Engine.Localize( "@LUA_MENU_SQUAD_MODE_CAPS" ) } }, { type = "UIVerticalList", id = "squads_mode_select_menu_button_list_id", states = { default = { topAnchor = true, bottomAnchor = false, leftAnchor = true, rightAnchor = false, top = GenericMenuDims.menu_top, bottom = GenericMenuDims.menu_bottom, left = GenericMenuDims.menu_left, right = GenericMenuDims.menu_right, alignment = LUI.Alignment.Top } }, childrenFeeder = SquadsModeMainButtonListChildFeeder }, { type = "squad_mode_desc_pane", id = "squads_mode_select_desc_pane_id" }, { type = "button_helper_text_main", id = "squads_mode_select_button_helper_text_id" }, { type = "online_friends_widget", id = "squads_mode_select_friends_widget_id" }, { type = "SocialFeedTicker", id = "social_ticker_id" }, { type = "UIBindButton", id = "squads_mode_select_bind_button", handlers = { button_secondary = OnMenuBackOut } }, { type = "UITimer", id = "bnt_lock_tmr", properties = { event = "check_buttons", interval = 100, disposable = false } } } } end function squads_hq_stat_bar() return { type = "UIElement", states = { default = { topAnchor = true, bottomAnchor = false, leftAnchor = true, rightAnchor = true, top = 0, bottom = 26, left = 0, right = 0 } }, children = { { type = "UIImage", id = "squads_hq_stat_bar_bg", states = { default = CoD.ColorizeState( Colors.very_dark_cyan, { topAnchor = true, bottomAnchor = true, leftAnchor = true, rightAnchor = true, top = 0, bottom = 0, left = 0, right = 0, material = RegisterMaterial( "white" ), alpha = 0.8 } ) } }, { type = "UIImage", id = "squads_hq_stat_bar_cap", states = { default = CoD.ColorizeState( Colors.grey_22, { topAnchor = true, bottomAnchor = true, leftAnchor = false, rightAnchor = true, top = 0, bottom = 0, left = -272, right = -240, material = RegisterMaterial( "box_angle_ltcap" ), alpha = 0.5 } ) } }, { type = "UIImage", id = "squads_hq_stat_bar_alt_bg", states = { default = CoD.ColorizeState( Colors.grey_22, { topAnchor = true, bottomAnchor = true, leftAnchor = false, rightAnchor = true, top = 0, bottom = 0, left = -240, right = 0, material = RegisterMaterial( "white" ), alpha = 0.5 } ) } }, { type = "UIText", id = "squads_hq_stat_bar_title_text", states = { default = CoD.ColorizeState( Colors.primary_text_color, { topAnchor = true, bottomAnchor = false, leftAnchor = true, rightAnchor = false, top = 3, bottom = 3 + CoD.TextSettings.NormalFont.Height, left = 5, right = 300, font = CoD.TextSettings.NormalFont.Font, alignment = LUI.Alignment.Left } ) }, properties = { text = MBh.Property( "title_text" ) } }, { type = "UIText", id = "squads_hq_stat_bar_value_text", states = { default = CoD.ColorizeState( Colors.primary_text_color, { topAnchor = true, bottomAnchor = false, leftAnchor = false, rightAnchor = true, top = 3, bottom = 3 + CoD.TextSettings.NormalFont.Height, left = -240, right = -10, font = CoD.TextSettings.NormalFont.Font, alignment = LUI.Alignment.Center } ) }, properties = { text = MBh.Property( "value_text" ) }, handlers = { set_stat_value = function ( f37_arg0, f37_arg1 ) f37_arg0:setText( f37_arg1.text ) end } } } } end function SquadsHQStatListChildFeeder( f38_arg0 ) local f38_local0 = {} local f38_local1 = f38_arg0.exclusiveController local f38_local2 = SvS.GetLocalPlayerBaseName( f38_local1 ) local f38_local3 = Engine.GetPlayerDataEx( f38_local1, CoD.StatsGroup.Ranked, "squadHQ", "squad_mode" ) local f38_local4 = nil if f38_local3 then f38_local4 = Engine.Localize( Engine.TableLookup( GameTypesTable.File, GameTypesTable.Cols.Ref, f38_local3, GameTypesTable.Cols.Name ) ) end local f38_local5 = Engine.GetPlayerDataEx( f38_local1, CoD.StatsGroup.Ranked, "squadHQ", "wins" ) local f38_local6 = Engine.GetPlayerDataEx( f38_local1, CoD.StatsGroup.Ranked, "squadHQ", "loses" ) local f38_local7 = Engine.GetPlayerDataEx( f38_local1, CoD.StatsGroup.Ranked, "squadHQ", "win_streak" ) local f38_local8 = Engine.FormatTimeHoursMinutesSeconds( Engine.GetPlayerDataEx( f38_local1, CoD.StatsGroup.Ranked, "prestigeDoubleXpMaxTimePlayed" ) - Engine.GetPlayerDataEx( f38_local1, CoD.StatsGroup.Ranked, "prestigeDoubleXpTimePlayed" ) ) local f38_local9 = nil if f38_local5 + f38_local6 == 0 then f38_local9 = 0 elseif f38_local6 == 0 then f38_local9 = f38_local5 elseif f38_local5 == 0 then f38_local9 = 0 else f38_local9 = f38_local5 / f38_local6 end local f38_local10 = string.format( "%.3f", f38_local9 ) f38_local0[#f38_local0 + 1] = { type = "UIImage", id = "squads_hq_stat_map_image_id", states = { default = CoD.ColorizeState( Colors.white, { topAnchor = true, bottomAnchor = false, leftAnchor = true, rightAnchor = false, top = 0, left = 0, height = 256, width = 512, material = RegisterMaterial( SvS.GetBasePreviewImageLarge( f38_local2 ) ) } ) } } f38_local0[#f38_local0 + 1] = { type = "squads_hq_stat_bar", id = "squads_hq_stat_name_id", properties = { title_text = Engine.Localize( "LUA_MENU_SQUAD_NAME" ), value_text = Engine.MarkLocalized( Squad.GetPlayerSquadName( f38_arg0.exclusiveController ) ), exclusiveController = f38_arg0.exclusiveController }, handlers = { update_squad_name = function ( f39_arg0, f39_arg1 ) f39_arg0:processEvent( { name = "set_stat_value", text = Engine.MarkLocalized( Squad.GetPlayerSquadName( f39_arg0.properties.exclusiveController ) ) } ) end } } f38_local0[#f38_local0 + 1] = { type = "squads_hq_stat_bar", id = "squads_hq_stat_mode_id", properties = { title_text = Engine.Localize( "LUA_MENU_SQUAD_GAME_MODE" ), value_text = f38_local4 } } f38_local0[#f38_local0 + 1] = { type = "squads_hq_stat_bar", id = "squads_hq_stat_map_id", properties = { title_text = Engine.Localize( "LUA_MENU_SQUAD_BASE" ), value_text = Engine.MarkLocalized( Squad.GetRealBaseNameFromLoadName( SvS.GetLocalPlayerBaseName( f38_local1 ) ) ) } } f38_local0[#f38_local0 + 1] = { type = "UIImage", id = "squads_hq_stat_spacer_id", states = { default = CoD.ColorizeState( Colors.white, { topAnchor = true, bottomAnchor = false, leftAnchor = true, rightAnchor = true, top = 0, left = 0, right = 0, height = 4, alpha = 0.15, material = RegisterMaterial( "white" ) } ) } } f38_local0[#f38_local0 + 1] = { type = "squads_hq_stat_bar", id = "squads_hq_stat_wins_id", properties = { title_text = Engine.Localize( "LUA_MENU_WINS" ), value_text = f38_local5 } } f38_local0[#f38_local0 + 1] = { type = "squads_hq_stat_bar", id = "squads_hq_stat_losses_id", properties = { title_text = Engine.Localize( "MENU_LOSSES" ), value_text = f38_local6 } } f38_local0[#f38_local0 + 1] = { type = "squads_hq_stat_bar", id = "squads_hq_stat_ratio_id", properties = { title_text = Engine.Localize( "LUA_MENU_WL_RATIO" ), value_text = f38_local10 } } f38_local0[#f38_local0 + 1] = { type = "squads_hq_stat_bar", id = "squads_hq_stat_streak_id", properties = { title_text = Engine.Localize( "LUA_MENU_CURRENT_STREAK" ), value_text = f38_local7 } } f38_local0[#f38_local0 + 1] = { type = "squads_hq_stat_bar", id = "squads_hq_stat_xp_time_id", properties = { title_text = Engine.Localize( "LUA_MENU_XP_TIME_REMAINING" ), value_text = f38_local8 } } return f38_local0 end function SquadsHQMainButtonListChildFeeder( f40_arg0 ) local f40_local0 = {} local f40_local1 = f40_arg0.exclusiveController f40_local0[#f40_local0 + 1] = { type = "UIGenericButton", id = "squads_mode_button_create_a_class", disabled = false, properties = { button_text = Engine.Localize( "@LUA_MENU_CREATE_A_CLASS_CAPS" ), desc_text = Engine.Localize( "@LUA_MENU_DESC_CREATE_A_CLASS" ), button_action_func = function ( f41_arg0, f41_arg1 ) Cac.ValidateAllPlayersPublicSquadMembers() LUI.FlowManager.RequestAddMenu( f41_arg0, "cac_member_select_main", true, f41_arg1.controller, false, { next_screen = "cac_edit_main", squad_location = "squadMembers", class_location = "loadouts" } ) end } } f40_local0[#f40_local0 + 1] = { type = "UIGenericButton", id = "squads_mode_button_leaderboards", properties = { button_text = Engine.Localize( "@LUA_MENU_LEADERBOARDS_CAPS" ), desc_text = Engine.Localize( "@LUA_MENU_DESC_LEADERBOARDS_SQUADS" ), button_action_func = function ( f42_arg0, f42_arg1 ) LUI.FlowManager.RequestAddMenu( f42_arg0, "leaderboards", true, f42_arg1.controller ) end } } f40_local0[#f40_local0 + 1] = { type = "UIGenericButton", id = "squads_mode_button_squad_reports", properties = { button_text = Engine.Localize( "@LUA_MENU_SQUAD_REPORTS" ), desc_text = Engine.Localize( "@LUA_MENU_SQUAD_REPORTS_DESC" ), button_action_func = function ( f43_arg0, f43_arg1 ) LUI.FlowManager.RequestAddMenu( f43_arg0, "squad_reports_menu", false, f43_arg1.controller, false, { controller = f43_arg1.controller, fromSquadsModeMenu = true } ) end } } f40_local0[#f40_local0 + 1] = { type = "UIGenericButton", id = "squad_name_button", properties = { button_text = Engine.Localize( "@LUA_MENU_EDIT_SQUAD_NAME_CAPS" ), desc_text = Engine.Localize( "@LUA_MENU_EDIT_SQUAD_NAME_DESC" ), button_action_func = function ( f44_arg0, f44_arg1 ) Squad.ChangeName( f44_arg1.controller ) end } } f40_local0[#f40_local0 + 1] = { type = "UIGenericButton", id = "squad_game_mode_button", properties = { button_text = Engine.Localize( "@LUA_MENU_EDIT_SQUAD_GAME_MODE_CAPS" ), desc_text = Engine.Localize( "@LUA_MENU_EDIT_SQUAD_GAME_MODE_DESC" ), button_action_func = function ( f45_arg0, f45_arg1 ) LUI.FlowManager.RequestAddMenu( f45_arg0, "settings_recipe_choosetype", true, f45_arg1.controller, false, { requestedGameMode = "Standard", menu_title = Cac.GetGameModeTypeString( "Standard" ), squadBaseSelect = true, teamsOnly = true } ) end } } f40_local0[#f40_local0 + 1] = { type = "UIGenericButton", id = "squad_base_button", properties = { button_text = Engine.Localize( "@LUA_MENU_EDIT_SQUAD_BASE_CAPS" ), desc_text = Engine.Localize( "@LUA_MENU_EDIT_SQUAD_BASE_DESC" ), button_action_func = function ( f46_arg0, f46_arg1 ) LUI.FlowManager.RequestAddMenu( f46_arg0, "mapsetup_menu_main", true, f46_arg1.controller, false, { rotationAllowed = false, squadBaseSelect = true } ) end } } f40_local0[#f40_local0 + 1] = { type = "UIGenericButton", id = "squad_order_button", properties = { button_text = Engine.Localize( "@LUA_MENU_SET_SQUAD_ORDER_CAPS" ), desc_text = Engine.Localize( "@LUA_MENU_SET_SQUAD_ORDER_DESC" ), button_action_func = function ( f47_arg0, f47_arg1 ) LUI.FlowManager.RequestPopupMenu( f47_arg0, "cac_squad_order_popup", true, f47_arg1.controller, false, { squad_location = "squadMembers" } ) end } } f40_local0[#f40_local0 + 1] = { type = "button_desc_text", id = "squads_mode_desc_text_id", properties = { lines = 4 } } return f40_local0 end function squads_hq_menu() return { type = "UIElement", id = "squads_hq_menu", properties = {}, states = { default = { topAnchor = true, bottomAnchor = true, leftAnchor = true, rightAnchor = true, top = 0, bottom = 0, left = 0, right = 0 } }, handlers = { menu_create = SquadsHQCreate, cac_update_header_text = function ( f49_arg0, f49_arg1 ) if f49_arg0.properties.exclusiveController then Engine.Exec( "uploadstats", f49_arg0.properties.exclusiveController ) end f49_arg0:processEvent( { name = "update_squad_name" } ) end }, children = { { type = "generic_menu_title", id = "squads_hq_menu_title_text_id", properties = { menu_title = Engine.Localize( "@LUA_MENU_SQUAD_HQ_CAPS" ) } }, { type = "UIVerticalList", id = "squads_hq_menu_button_list_id", states = { default = { topAnchor = true, bottomAnchor = false, leftAnchor = true, rightAnchor = false, top = GenericMenuDims.menu_top, bottom = GenericMenuDims.menu_bottom, left = GenericMenuDims.menu_left, right = GenericMenuDims.menu_right, alignment = LUI.Alignment.Top } }, childrenFeeder = SquadsHQMainButtonListChildFeeder }, { type = "generic_menu_background_withfade", id = "squads_hq_menu_stats_pane_id", properties = { shadow_top_offset = GenericTitleBarDims.TitleBarHeight }, states = { default = { topAnchor = true, bottomAnchor = false, leftAnchor = false, rightAnchor = true, top = 100 - GenericTitleBarDims.TitleBarHeight, bottom = 650, left = -720, width = 532 }, hidden = { alpha = 0 } }, handlers = { update_squads_mode_desc = function ( f50_arg0, f50_arg1 ) if f50_arg1.categoryInfo then f50_arg0:setImage( RegisterMaterial( f50_arg1.categoryInfo.Image ) ) end end }, children = { { type = "UIVerticalList", id = "squads_hq_menu_stat_list_id", states = { default = { spacing = 4, topAnchor = true, bottomAnchor = true, leftAnchor = true, rightAnchor = true, top = GenericTitleBarDims.TitleBarHeight + 10, bottom = 0, left = 10, right = -10 } }, childrenFeeder = SquadsHQStatListChildFeeder } } }, { type = "button_helper_text_main", id = "squads_hq_button_helper_text_id" }, { type = "online_friends_widget", id = "squads_hq_friends_widget_id" }, { type = "generic_back_button" } } } end LUI.MenuBuilder.registerDef( "squads_mode_select_menu", squads_mode_select_menu ) LUI.MenuBuilder.registerDef( "squads_mode_sub_mode_popup", squads_mode_sub_mode_popup ) LUI.MenuBuilder.registerDef( "squad_mode_desc_pane", squad_mode_desc_pane ) LUI.FlowManager.RegisterStackPushBehaviour( "squads_mode_select_menu", function () PersistentBackground.ProcessEvent( { name = "blur_persistent_background", duration = 500 } ) end ) LUI.FlowManager.RegisterStackPopBehaviour( "squads_mode_select_menu", function () PersistentBackground.ProcessEvent( { name = "unblur_persistent_background", duration = 500 } ) end ) LUI.MenuBuilder.registerDef( "squads_hq_menu", squads_hq_menu ) LUI.MenuBuilder.registerDef( "squads_hq_stat_bar", squads_hq_stat_bar ) LockTable( _M )