local f0_local0 = module local f0_local1, f0_local2 = ... f0_local0( f0_local1, package.seeall ) CoD.PrintModuleLoad( "Registering " .. _NAME ) if Engine.InFrontend() then function InputFieldOpensVirtualKeyboard( f1_arg0 ) return Engine.IsConsoleGame() or f1_arg0 end function InputFieldAction( f2_arg0, f2_arg1 ) local f2_local0 = Engine.GetDvarString( f2_arg0.properties.dvar_hook ) local f2_local1 if not Engine.IsConsoleGame() and not f2_arg1.mouse then f2_local1 = not f2_arg1.keyboard else f2_local1 = false end f2_arg0.properties.isPCGamepad = f2_local1 if InputFieldOpensVirtualKeyboard( f2_local1 ) then f2_arg0.properties.active = true local f2_local2 = Engine.OpenScreenKeyboard local f2_local3 = f2_arg1.controller if not f2_local3 then f2_local3 = Engine.GetFirstActiveController() end local f2_local4 = f2_arg0.properties.field_name if f2_local0 then local f2_local5 = f2_local0 end f2_local2( f2_local3, f2_local4, f2_local5 or "", f2_arg0.properties.max_length, f2_arg0.properties.verify_string, f2_arg0.properties.filter_profanity, f2_arg0.properties.keyboard_type ) elseif f2_arg0.properties.active then f2_arg0:processEvent( { name = "finish_editing" } ) f2_arg0.properties.active = false else local f2_local2 = f2_arg0:getChildById( "input_text" ) f2_local2:setTextEditActive() f2_arg0.properties.active = true end end function InputFieldUpdateText( f3_arg0, f3_arg1 ) if f3_arg1.text then local f3_local0 = f3_arg0.properties.password_field and string.rep( "*", #f3_arg1.text ) or f3_arg1.text local f3_local1 = f3_arg0:getChildById( "input_text" ) f3_local1:setTextEditText( f3_local0 ) Engine.SetDvarString( f3_arg0.properties.dvar_hook, f3_arg1.text ) end end function InitField( f4_arg0, f4_arg1 ) f4_arg0:setTextEditText( f4_arg0.properties.text ) local f4_local0 = Engine.GetDvarString( f4_arg0.properties.dvar_hook ) if f4_local0 ~= nil and f4_local0 ~= "" then f4_arg0:setTextEditText( f4_arg0.properties.password_field and string.rep( "*", #f4_local0 ) or f4_local0 ) end end function DefaultFieldEditedAction() end function generic_input_field() return { type = "UIButton", id = "generic_input_field_id", focusable = true, properties = { help_value = "Placeholder field help", field_name = "Placeholder Field name", dvar_hook = "override_this_with_a_DVarString_name", max_length = 16, password_field = false, use_auto_align = false, active = false, isPCGamepad = false, field_edited_func = DefaultFieldEditedAction, verify_string = false, filter_profanity = false, keyboard_type = CoD.KeyboardInputTypes.Normal, text_alignment = LUI.Alignment.Left }, states = { default = { leftAnchor = true, rightAnchor = true, topAnchor = true, bottomAnchor = false, left = 0, right = 0, top = 0, bottom = GenericButtonDims.button_height, alpha = 0.5 }, over = { alpha = 1 } }, handlers = { button_over = MBh.AnimateToState( "over", 0 ), button_up = MBh.AnimateToState( "default", 0 ), button_action = InputFieldAction, text_edit_complete = function ( f7_arg0, f7_arg1 ) if not InputFieldOpensVirtualKeyboard( f7_arg0.properties.isPCGamepad ) and f7_arg0.properties.active then f7_arg1.text = f7_arg0.properties:field_edited_func( f7_arg1 ) or f7_arg1.text InputFieldUpdateText( f7_arg0, f7_arg1 ) end end , text_input_complete = function ( f8_arg0, f8_arg1 ) if InputFieldOpensVirtualKeyboard( f8_arg0.properties.isPCGamepad ) and f8_arg0.properties.active then f8_arg1.text = f8_arg0.properties:field_edited_func( f8_arg1 ) or f8_arg1.text InputFieldUpdateText( f8_arg0, f8_arg1 ) f8_arg0.properties.active = false end end , edit_unfocus = function ( f9_arg0, f9_arg1 ) if not InputFieldOpensVirtualKeyboard( f9_arg0.properties.isPCGamepad ) and f9_arg0.properties.active then f9_arg0:processEvent( { name = "finish_editing" } ) f9_arg0.properties.active = false end end }, children = { { type = "UITextEdit", id = "input_text", properties = { text = MBh.Property( "help_value" ), max_length = MBh.Property( "max_length" ), dvar_hook = MBh.Property( "dvar_hook" ), password_field = MBh.Property( "password_field" ), use_auto_align = MBh.Property( "use_auto_align" ), text_alignment = MBh.Property( "text_alignment" ) }, handlers = { menu_create = InitField, finish_editing = function ( f10_arg0, f10_arg1 ) f10_arg0:setTextEditActive( false ) end , colorize = function ( f11_arg0, f11_arg1 ) f11_arg0:registerAnimationState( "colorized", { red = f11_arg1.red, green = f11_arg1.green, blue = f11_arg1.blue } ) f11_arg0:animateToState( "colorized" ) end }, states = { default = { leftAnchor = true, rightAnchor = true, topAnchor = true, bottomAnchor = false, left = 0, right = 0, top = 0, bottom = CoD.TextSettings.SmallFont.Height, font = CoD.TextSettings.SmallFont.Font, alignment = MBh.Property( "text_alignment" ) } } } } } end function AutoUpdateDescText( f12_arg0, f12_arg1 ) if f12_arg0.properties.desc_text then local f12_local0 = "" if type( f12_arg0.properties.desc_text ) == "string" then f12_local0 = f12_arg0.properties.desc_text elseif type( f12_arg0.properties.desc_text ) == "function" then f12_local0 = f12_arg0.properties:desc_text( f12_arg1 ) assert( type( f12_local0 ) == "string" ) end f12_arg0:dispatchEventToRoot( { name = "set_button_info_text", text = f12_local0, [1] = immediate } ) end end end function generic_back_button() local self = LUI.UIBindButton.new() self.id = "generic_back_button" self:registerEventHandler( "button_secondary", MBh.LeaveMenu() ) return self end f0_local0 = function ( f14_arg0, f14_arg1 ) if f14_arg1.string then f14_arg0:setText( f14_arg1.string ) end end function HandleMenuTitleShow( f15_arg0, f15_arg1 ) local f15_local0 = f15_arg1.preAnimTime or 0 local f15_local1 = f15_arg1.animTime or 0 if f15_arg0.properties.isHidden then local f15_local2 = MBh.AnimateSequence( { { "hidden", f15_local0 }, { "shown", f15_local1 } } ) f15_local2( f15_arg0 ) f15_arg0.properties.isHidden = false end end function HandleMenuTitleHide( f16_arg0, f16_arg1 ) local f16_local0 = f16_arg1.preAnimTime or 0 local f16_local1 = f16_arg1.animTime or 0 if not f16_arg0.properties.isHidden then local f16_local2 = MBh.AnimateSequence( { { "shown", f16_local0 }, { "hidden", f16_local1 } } ) f16_local2( f16_arg0 ) f16_arg0.properties.isHidden = true end end function generic_menu_title( f17_arg0, f17_arg1 ) local f17_local0 = 100 local f17_local1 = 52 if not f17_arg1 then f17_arg1 = {} end local self = LUI.UIElement.new() self.id = "generic_menu_title_container_id" self:registerAnimationState( "default", { leftAnchor = true, rightAnchor = true, topAnchor = true, bottomAnchor = false, left = 0, right = 0, top = 0, bottom = 128 } ) self:registerAnimationState( "hidden", { leftAnchor = true, rightAnchor = true, topAnchor = true, bottomAnchor = false, left = 0, right = 0, top = -128, bottom = 0 } ) self:animateToState( "default" ) local f17_local3 = LUI.UIImage.new( { leftAnchor = true, topAnchor = true, rightAnchor = true, bottomAnchor = false, left = 0, right = 0, bottom = 0, height = 300, red = 0, green = 0, blue = 0, alpha = 1, material = RegisterMaterial( "white" ) } ) f17_local3.id = "black_bar" f17_local3:setPriority( 10 ) self:addElement( f17_local3 ) local f17_local4 = LUI.UIImage.new() f17_local4.id = "generic_menu_title_background_id" f17_local4:registerAnimationState( "default", { material = RegisterMaterial( "bkgd_title_bar" ), topAnchor = true, bottomAnchor = false, leftAnchor = true, rightAnchor = true, top = -10, bottom = 118, left = 0, right = 0, alpha = 0.75 } ) f17_local4:animateToState( "default" ) self:addElement( f17_local4 ) if Engine.IsAliensMode() then local f17_local5 = LUI.UIImage.new() f17_local5.id = "generic_menu_title_flare_id" f17_local5:registerAnimationState( "default", { material = RegisterMaterial( "box_alien_header_footer" ), topAnchor = true, bottomAnchor = false, leftAnchor = true, rightAnchor = true, top = 72, bottom = 102, left = 0, right = 0, alpha = 1 } ) f17_local5:animateToState( "default" ) self:addElement( f17_local5 ) end local f17_local5 = LUI.UIElement.new() f17_local5.id = "generic_menu_title_id" f17_local5.properties = { isHidden = false } f17_local5:registerAnimationState( "default", { leftAnchor = true, rightAnchor = false, topAnchor = true, bottomAnchor = false, top = f17_local1, bottom = f17_local1 + CoD.TextSettings.ExtraBigFont.Height, left = f17_local0, right = 1280 - f17_local0 } ) f17_local5:registerAnimationState( "hidden", { alpha = 0 } ) f17_local5:registerAnimationState( "shown", { alpha = 1 } ) f17_local5:animateToState( "default" ) f17_local5:registerEventHandler( "menu_title_show", HandleMenuTitleShow ) f17_local5:registerEventHandler( "menu_title_hide", HandleMenuTitleHide ) self:addElement( f17_local5 ) local f17_local6 = { leftAnchor = true, rightAnchor = false, topAnchor = true, bottomAnchor = false, left = 16, right = 530, top = 0, bottom = CoD.TextSettings.ExtraBigFont.Height, font = CoD.TextSettings.ExtraBigFont.Font, alignment = LUI.Alignment.Left } local f17_local7 = LUI.UIMarqueeText.new( f17_local6 ) f17_local7.id = "header_text" f17_local7:setText( f17_arg1.menu_title or "TITLE" ) f17_local7:registerAnimationState( "default", f17_local6 ) f17_local7:registerEventHandler( "update_header_text", f0_local0 ) f17_local7:animateToState( "default" ) f17_local5:addElement( f17_local7 ) local f17_local8 = LUI.UIImage.new() f17_local8.id = "header_left_box" f17_local8:registerAnimationState( "default", CoD.ColorizeState( Engine.IsAliensMode() and Colors.alien_frontend_hilite or Colors.frontend_hilite, { leftAnchor = true, rightAnchor = false, topAnchor = true, bottomAnchor = false, left = 0, right = 6, top = 5, bottom = 22, material = RegisterMaterial( "white" ) } ) ) f17_local8:animateToState( "default" ) f17_local5:addElement( f17_local8 ) if IsPublicMatch and IsPublicMatch() and not f17_arg1.disableLobbyStatus and package.loaded["LUI.mp_menus.mpLobbyWidgets"] and LUI.mp_menus.mpLobbyWidgets.lobby_status then self:addElement( LUI.mp_menus.mpLobbyWidgets.lobby_status( {}, {} ) ) end local f17_local9 = MLG if f17_local9 then f17_local9 = MLG.IsFeatureAvailable if f17_local9 then f17_local9 = MLG.IsFeatureAvailable() end end if not f17_arg1.disableMLGRulesVersionNumber and Engine.InFrontend() and f17_local9 then local f17_local10 = LUI.UIText.new() f17_local10.id = "codEsportText" f17_local10:setText( Engine.Localize( "PATCH_MENU_MLG_RULES_VERSION", MLG.GetRulesVersionNumber() ) ) f17_local10:registerAnimationState( "default", CoD.ColorizeState( Colors.primary_text_color, { font = CoD.TextSettings.SmallFont.Font, alignment = LUI.Alignment.Left, topAnchor = true, bottomAnchor = false, leftAnchor = true, rightAnchor = true, left = 0, bottom = 0, right = 0, height = CoD.TextSettings.SmallFont.Height, alpha = 0 } ) ) f17_local10:registerAnimationState( "visible", { alpha = 1 } ) f17_local10:registerEventHandler( "mlg_disabled", MBh.AnimateToState( "default" ) ) f17_local10:registerEventHandler( "mlg_enabled", function ( element, event ) element:setText( Engine.Localize( "PATCH_MENU_MLG_RULES_VERSION", MLG.GetRulesVersionNumber() ) ) element:animateToState( "visible", 0 ) end ) f17_local10:registerEventHandler( "menu_create", function ( element, event ) if MLG.AreMLGRulesEnabled() then element:processEvent( { name = "mlg_enabled" } ) else element:processEvent( { name = "mlg_disabled" } ) end end ) f17_local10:animateToState( "default" ) f17_local5:addElement( f17_local10 ) end return self end function left_header() local f20_local0 = 35 return { type = "UIElement", id = "left_header_id", properties = { text = "Placement Text" }, children = { { type = "UIText", id = "header_text", properties = { text = MBh.Property( "text" ) }, states = { default = { leftAnchor = true, rightAnchor = true, topAnchor = true, bottomAnchor = false, left = 0, right = -GenericButtonDims.pad_button_width, top = 0, bottom = CoD.TextSettings.BigFont.Height, font = CoD.TextSettings.BigFont.Font, alignment = LUI.Alignment.Right } }, handlers = { update_header_text = f0_local0 } }, { type = "UIImage", id = "sep_image", states = { default = { leftAnchor = true, rightAnchor = true, topAnchor = true, bottomAnchor = false, left = 0, right = 0, top = f20_local0 - GenericButtonDims.button_height / 4, bottom = f20_local0 + GenericButtonDims.button_height / 4, material = RegisterMaterial( "navbar_tick" ) } } } }, states = { default = { leftAnchor = true, rightAnchor = false, topAnchor = true, bottomAnchor = false, top = 60, left = 0, bottom = 60 + f20_local0, right = 450, font = CoD.TextSettings.NormalFont.Font } } } end function generic_border( f21_arg0, f21_arg1 ) local f21_local0 = false if f21_arg1.inner ~= nil then f21_local0 = f21_arg1.inner end local f21_local1 = f21_arg1.thickness if not f21_local1 then f21_local1 = 1 end local f21_local2 = f21_arg1.border_red if not f21_local2 then f21_local2 = 1 end local f21_local3 = f21_arg1.border_green if not f21_local3 then f21_local3 = 1 end local f21_local4 = f21_arg1.border_blue if not f21_local4 then f21_local4 = 1 end local f21_local5 = f21_arg1.border_alpha if not f21_local5 then f21_local5 = 1 end local f21_local6 = f21_arg1.hide_bottom if not f21_local6 then f21_local6 = false end local self = LUI.UIElement.new() local f21_local8 = self local f21_local9 = self.registerAnimationState local f21_local10 = "default" local f21_local11 = { topAnchor = true, bottomAnchor = true, leftAnchor = true, rightAnchor = true } if f21_local0 then local f21_local12 = f21_local1 end f21_local11.top = f21_local12 or 0 local f21_local13 if f21_local0 then f21_local13 = -f21_local1 if not f21_local13 then else f21_local11.bottom = f21_local13 if f21_local0 then local f21_local14 = f21_local1 end f21_local11.left = f21_local14 or 0 if f21_local0 then f21_local13 = -f21_local1 if not f21_local13 then else f21_local11.right = f21_local13 f21_local9( f21_local8, f21_local10, f21_local11 ) self:animateToState( "default" ) f21_local9 = LUI.UIImage.new() f21_local9.id = "top" f21_local9:registerAnimationState( "default", { material = RegisterMaterial( "white" ), topAnchor = true, bottomAnchor = false, leftAnchor = true, rightAnchor = true, top = -f21_local1, bottom = 0, left = 0, right = 0 } ) f21_local9:animateToState( "default" ) self:addElement( f21_local9 ) f21_local8 = nil if not f21_local6 then f21_local8 = LUI.UIImage.new() f21_local8.id = "bottom" f21_local8:registerAnimationState( "default", { material = RegisterMaterial( "white" ), topAnchor = false, bottomAnchor = true, leftAnchor = true, rightAnchor = true, top = 0, bottom = f21_local1 or 0, left = 0, right = 0 } ) f21_local8:animateToState( "default" ) self:addElement( f21_local8 ) end f21_local10 = LUI.UIImage.new() f21_local10.id = "left" f21_local13 = f21_local10 f21_local11 = f21_local10.registerAnimationState local f21_local15 = "default" local f21_local16 = { material = RegisterMaterial( "white" ), topAnchor = true, bottomAnchor = true, leftAnchor = true, rightAnchor = false, top = -f21_local1 } if not f21_local6 then local f21_local17 = f21_local1 end f21_local16.bottom = f21_local17 or 0 f21_local16.left = -f21_local1 f21_local16.right = 0 f21_local11( f21_local13, f21_local15, f21_local16 ) f21_local10:animateToState( "default" ) self:addElement( f21_local10 ) f21_local11 = LUI.UIImage.new() f21_local11.id = "right" f21_local15 = f21_local11 f21_local13 = f21_local11.registerAnimationState f21_local16 = "default" local f21_local18 = { material = RegisterMaterial( "white" ), topAnchor = true, bottomAnchor = true, leftAnchor = false, rightAnchor = true, top = -f21_local1 } if not f21_local6 then local f21_local19 = f21_local1 end f21_local18.bottom = f21_local19 or 0 f21_local18.left = 0 f21_local18.right = f21_local1 f21_local13( f21_local15, f21_local16, f21_local18 ) f21_local11:animateToState( "default" ) self:addElement( f21_local11 ) self.colorize = function ( f22_arg0, f22_arg1, f22_arg2, f22_arg3 ) for f22_local3, f22_local4 in ipairs( { f21_local9, f21_local11, f21_local10, f21_local8 } ) do f22_local4:registerAnimationState( "current", { red = f22_arg0, green = f22_arg1, blue = f22_arg2, alpha = f22_arg3 } ) f22_local4:animateToState( "current" ) end end self.colorize( f21_local2, f21_local3, f21_local4, f21_local5 ) self:registerEventHandler( "updateBorderColor", function ( element, event ) element.colorize( event.red, event.green, event.blue, event.alpha ) end ) return self end end f21_local13 = 0 end end f21_local13 = 0 end function generic_drop_shadow( f24_arg0, f24_arg1 ) local f24_local0 = f24_arg1.alpha or 0.75 local f24_local1 = f24_arg1.offset_shadow or -8 local self = LUI.UIElement.new() self.id = "generic_drop_shadow" self:registerAnimationState( "default", { topAnchor = true, bottomAnchor = true, leftAnchor = true, rightAnchor = true, top = 0, bottom = 0, left = 0, right = 0, alpha = f24_local0 } ) self:animateToState( "default" ) local f24_local3 = LUI.UIElement.new() f24_local3.id = "container" f24_local3:registerAnimationState( "default", { topAnchor = true, bottomAnchor = true, leftAnchor = true, rightAnchor = true, top = 0, bottom = f24_local1, left = 0, right = f24_local1 } ) f24_local3:animateToState( "default" ) local f24_local4 = LUI.UIImage.new() f24_local4:registerAnimationState( "default", { topAnchor = false, bottomAnchor = true, leftAnchor = true, rightAnchor = false, top = -12, bottom = 20, left = 0, right = 32, material = RegisterMaterial( "box_dropshadow_ltcap" ) } ) f24_local4:animateToState( "default" ) f24_local3:addElement( f24_local4 ) local f24_local5 = LUI.UIImage.new() f24_local5:registerAnimationState( "default", { topAnchor = false, bottomAnchor = true, leftAnchor = true, rightAnchor = true, top = -12, bottom = 20, left = 32, right = -11, material = RegisterMaterial( "box_dropshadow_hori_spacer" ) } ) f24_local5:animateToState( "default" ) f24_local3:addElement( f24_local5 ) local f24_local6 = LUI.UIImage.new() f24_local6:registerAnimationState( "default", { topAnchor = false, bottomAnchor = true, leftAnchor = false, rightAnchor = true, top = -12, bottom = 20, left = -11, right = 21, material = RegisterMaterial( "box_dropshadow_midcap" ) } ) f24_local6:animateToState( "default" ) f24_local3:addElement( f24_local6 ) local f24_local7 = LUI.UIImage.new() f24_local7:registerAnimationState( "default", { topAnchor = true, bottomAnchor = true, leftAnchor = false, rightAnchor = true, top = 32, bottom = -12, left = -11, right = 21, material = RegisterMaterial( "box_dropshadow_vert_spacer" ) } ) f24_local7:animateToState( "default" ) f24_local3:addElement( f24_local7 ) local f24_local8 = LUI.UIImage.new() f24_local8:registerAnimationState( "default", { topAnchor = true, bottomAnchor = false, leftAnchor = false, rightAnchor = true, top = 0, bottom = 32, left = -11, right = 21, material = RegisterMaterial( "box_dropshadow_rtcap" ) } ) f24_local8:animateToState( "default" ) f24_local3:addElement( f24_local8 ) self:addElement( f24_local3 ) return self end function generic_drop_shadow_withfade( f25_arg0, f25_arg1 ) local f25_local0 = f25_arg1.alpha or 0.75 local f25_local1 = f25_arg1.fade_height or 150 local f25_local2 = f25_arg1.top_offset or 0 local self = LUI.UIElement.new() self.id = "generic_drop_shadow_withfade" self:registerAnimationState( "default", { topAnchor = true, bottomAnchor = true, leftAnchor = true, rightAnchor = true, top = f25_local2, bottom = 0, left = 0, right = 0, alpha = f25_local0 } ) self:animateToState( "default" ) local f25_local4 = LUI.UIImage.new() f25_local4:registerAnimationState( "default", { topAnchor = true, bottomAnchor = false, leftAnchor = false, rightAnchor = true, top = 0, bottom = 32, left = -11, right = 21, material = RegisterMaterial( "box_dropshadow_rtcap" ) } ) f25_local4:animateToState( "default" ) self:addElement( f25_local4 ) local f25_local5 = LUI.UIImage.new() f25_local5:registerAnimationState( "default", { topAnchor = true, bottomAnchor = true, leftAnchor = false, rightAnchor = true, top = 32, bottom = -f25_local1, left = -11, right = 21, material = RegisterMaterial( "box_dropshadow_vert_spacer" ) } ) f25_local5:animateToState( "default" ) self:addElement( f25_local5 ) local f25_local6 = LUI.UIImage.new() f25_local6:registerAnimationState( "default", { topAnchor = false, bottomAnchor = true, leftAnchor = false, rightAnchor = true, top = -f25_local1, bottom = 0, left = -11, right = 21, material = RegisterMaterial( "box_dropshadow_vert_footer" ) } ) f25_local6:animateToState( "default" ) self:addElement( f25_local6 ) return self end function generic_popup_message() return { type = "UIElement", id = "generic_test_id", properties = { message_text = "message text" }, states = { default = { topAnchor = true, bottomAnchor = true, leftAnchor = true, rightAnchor = true, top = 0, bottom = 0, left = 0, right = 0 } }, children = { { type = "UIImage", states = { default = { topAnchor = true, bottomAnchor = true, leftAnchor = true, rightAnchor = true, top = 0, bottom = 0, left = 0, right = 0, material = RegisterMaterial( "white" ), red = 0.1, green = 0.14, blue = 0.16, alpha = 0.85 } } }, { type = "UIElement", states = { default = { topAnchor = false, bottomAnchor = false, leftAnchor = false, rightAnchor = false, top = -75, left = -200, right = 200, height = 85 } }, children = { { type = "live_dialog_popup_background" }, { type = "UIText", properties = { text = MBh.Property( "message_text" ) }, states = { default = { topAnchor = false, bottomAnchor = false, leftAnchor = true, rightAnchor = true, left = 0, right = 0, height = CoD.TextSettings.NormalFont.Height, font = CoD.TextSettings.NormalFont.Font, alignment = LUI.Alignment.Center, red = Colors.secondary_text_color.r, green = Colors.secondary_text_color.g, blue = Colors.secondary_text_color.b } } } } } } } end f0_local1 = function () return { type = "UIElement", id = "spacer", states = { default = { leftAnchor = true, rightAnchor = true, topAnchor = true, bottomAnchor = false, left = 0, right = 0, top = 0, bottom = 12 } } } end f0_local2 = function ( f28_arg0, f28_arg1 ) f28_arg0:setText( f28_arg1.message_text ) f28_arg0:dispatchEventToRoot( { name = "resize_popup" } ) end function generic_confirmation_popup() return { type = "generic_selectionList_popup", id = "confirmation_popup_id", properties = { message_text_alignment = LUI.Alignment.Center, popup_title = "", message_text = "", button_text = Engine.Localize( "@MENU_EXIT" ), confirmation_action = function ( f30_arg0, f30_arg1 ) DebugPrint( "Running generic_confirmation_popup default action" ) end , callback_params = {}, padding_top = 12, cancel_will_close = true, popup_childfeeder = function () return { { type = "UIText", id = "message_text_id", properties = { text = MBh.Property( "message_text" ), message_text_alignment = MBh.Property( "message_text_alignment" ) }, states = { default = { topAnchor = true, bottomAnchor = false, leftAnchor = true, rightAnchor = true, top = 0, bottom = CoD.TextSettings.NormalFont.Height, left = 12, right = -12, alignment = MBh.Property( "message_text_alignment" ), font = CoD.TextSettings.NormalFont.Font, red = Colors.primary_text_color.r, green = Colors.primary_text_color.g, blue = Colors.primary_text_color.b } }, handlers = { update_message = f0_local2 } }, f0_local1(), { type = "UIGenericButton", id = "exit_button_id", properties = { style = GenericButtonSettings.Styles.GlassButton, substyle = GenericButtonSettings.Styles.GlassButton.SubStyles.Popup, text = MBh.Property( "button_text" ), confirmation_action = MBh.Property( "confirmation_action" ), button_action_func = function ( f32_arg0, f32_arg1 ) f32_arg0.properties:confirmation_action( f32_arg1 ) LUI.FlowManager.RequestLeaveMenu( f32_arg0 ) end , callback_params = MBh.Property( "callback_params" ) } } } end }, states = { default = { topAnchor = true, bottomAnchor = true, leftAnchor = true, rightAnchor = true, left = 0, right = 0, top = 0, bottom = 0 } } } end function CreatePurchasePopupRow( f33_arg0, f33_arg1, f33_arg2, f33_arg3, f33_arg4 ) local f33_local0 = 15 local f33_local1 = 16 return { type = "UIHorizontalList", id = "yesno_message_" .. f33_arg0 .. "_hl_id", states = { default = { topAnchor = true, leftAnchor = true, bottomAnchor = false, rightAnchor = true, top = 0, left = 12 + f33_arg1, right = -32, height = CoD.TextSettings.NormalFont.Height } }, children = { { type = "UIText", id = "yesno_message_" .. f33_arg0 .. "_text_id", properties = { text = MBh.Property( f33_arg2 ) }, states = { default = { topAnchor = true, leftAnchor = true, bottomAnchor = false, rightAnchor = true, top = 0, left = 0, right = -(f33_local1 + 32 + f33_local0), height = CoD.TextSettings.NormalFont.Height, font = CoD.TextSettings.NormalFont.Font, alignment = LUI.Alignment.Right, red = Colors.primary_text_color.r, green = Colors.primary_text_color.g, blue = Colors.primary_text_color.b } } }, { type = "UIElement", id = "yesno_message_" .. f33_arg0 .. "_spacer", states = { default = { topAnchor = true, leftAnchor = true, bottomAnchor = true, rightAnchor = false, top = 0, left = 0, width = f33_local0 } } }, { type = "UIImage", id = "yesno_message_" .. f33_arg0 .. "_image_id", states = { default = { topAnchor = false, leftAnchor = false, bottomAnchor = false, rightAnchor = false, top = -f33_local1 * 0.5, left = -f33_local1 * 0.5, bottom = f33_local1 * 0.5, right = f33_local1 * 0.5, material = f33_arg3 } } }, { type = "UIText", id = "yesno_message_" .. f33_arg0 .. "_id", properties = { text = MBh.Property( f33_arg4 ) }, states = { default = { topAnchor = true, leftAnchor = true, bottomAnchor = false, rightAnchor = true, top = 0, left = 0, right = -12, height = CoD.TextSettings.NormalFont.Height, font = CoD.TextSettings.NormalFont.Font, alignment = LUI.Alignment.Left, red = Colors.white.r, green = Colors.white.g, blue = Colors.white.b } } } } } end function YesNoFeeder( f34_arg0 ) local f34_local0 = {} if not f34_arg0.message_image then f34_local0[#f34_local0 + 1] = { type = "UIText", id = "yesno_message_text_id", properties = { text = MBh.Property( "message_text" ), message_text_alignment = MBh.Property( "message_text_alignment" ) }, states = { default = { 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 = MBh.Property( "message_text_alignment" ), red = Colors.primary_text_color.r, green = Colors.primary_text_color.g, blue = Colors.primary_text_color.b } }, handlers = { update_message = f0_local2 } } else f34_local0[#f34_local0 + 1] = { type = "UIElement", id = "yesno_message_container_id", states = { default = { topAnchor = true, leftAnchor = true, bottomAnchor = false, rightAnchor = true, top = 0, left = 12, right = -12, height = 0 } }, children = { { type = "UIImage", id = "yesno_message_image_id", states = { default = { topAnchor = true, leftAnchor = true, bottomAnchor = false, rightAnchor = false, top = f34_arg0.message_image_top, left = f34_arg0.message_image_left, height = f34_arg0.message_image_height, width = f34_arg0.message_image_width, material = f34_arg0.message_image } } } } } if f34_arg0.message_text then f34_local0[#f34_local0 + 1] = { type = "UIText", id = "yesno_message_text_id", properties = { text = MBh.Property( "message_text" ), message_text_alignment = MBh.Property( "message_text_alignment" ) }, states = { default = { topAnchor = true, leftAnchor = true, bottomAnchor = false, rightAnchor = true, top = 0, left = 12 + f34_arg0.message_image_width + 20, right = -12, height = CoD.TextSettings.NormalFont.Height, font = CoD.TextSettings.NormalFont.Font, alignment = MBh.Property( "message_text_alignment" ), red = Colors.primary_text_color.r, green = Colors.primary_text_color.g, blue = Colors.primary_text_color.b } } } else if f34_arg0.message_required_rank_image then f34_local0[#f34_local0 + 1] = CreatePurchasePopupRow( "required_rank", f34_arg0.message_image_width, "message_required_rank_text", f34_arg0.message_required_rank_image, "message_required_rank" ) f34_local0[#f34_local0 + 1] = CreatePurchasePopupRow( "current_rank", f34_arg0.message_image_width, "message_current_rank_text", f34_arg0.message_current_rank_image, "message_current_rank" ) f34_local0[#f34_local0 + 1] = { type = "UIElement", id = "yesno_message_separator_container_id", states = { default = { topAnchor = true, leftAnchor = false, bottomAnchor = false, rightAnchor = true, top = 0, right = 0, height = 5, width = 300 } }, children = { { type = "UIImage", id = "yesno_message_separator_image_id", states = { default = { topAnchor = true, leftAnchor = true, bottomAnchor = false, rightAnchor = true, top = 2, left = 0, height = 1, material = RegisterMaterial( "white" ), alpha = 0.1 } } } } } end if f34_arg0.message_cost_image then f34_local0[#f34_local0 + 1] = CreatePurchasePopupRow( "cost", f34_arg0.message_image_width, "message_cost_text", f34_arg0.message_cost_image, "message_cost" ) f34_local0[#f34_local0 + 1] = CreatePurchasePopupRow( "squad_points", f34_arg0.message_image_width, "message_squad_points_text", f34_arg0.message_squad_points_image, "message_squad_points" ) end end end f34_local0[#f34_local0 + 1] = f0_local1() if f34_arg0.yes_text then local f34_local1 = #f34_local0 + 1 local f34_local2 = { type = "UIGenericButton", id = "yes_button_id", audio = { button_over = CoD.SFX.SubMenuMouseOver } } local f34_local3 = { style = GenericButtonSettings.Styles.GlassButton, substyle = GenericButtonSettings.Styles.GlassButton.SubStyles.YesNoPopup, text = MBh.Property( "yes_text" ), action = MBh.Property( "yes_action" ) } local f34_local4 = MBh.DoMultiple local f34_local5 = {} local f34_local6 = MBh.RunPropertyFunc( "action" ) local f34_local7 = MBh.LeaveMenu() f34_local3.button_action_func = f34_local4( f34_local6 ) f34_local3.callback_params = MBh.Property( "callback_params" ) f34_local2.properties = f34_local3 f34_local0[f34_local1] = f34_local2 end local f34_local1 = #f34_local0 + 1 local f34_local2 = { type = "UIGenericButton", id = "no_button_id", audio = { button_over = CoD.SFX.SubMenuMouseOver } } local f34_local3 = { style = GenericButtonSettings.Styles.GlassButton, substyle = GenericButtonSettings.Styles.GlassButton.SubStyles.YesNoPopup, text = MBh.Property( "no_text" ), action = MBh.Property( "no_action" ) } local f34_local4 = MBh.DoMultiple local f34_local5 = {} local f34_local6 = MBh.RunPropertyFunc( "action" ) local f34_local7 = MBh.LeaveMenu() f34_local3.button_action_func = f34_local4( f34_local6 ) f34_local3.callback_params = MBh.Property( "callback_params" ) f34_local2.properties = f34_local3 f34_local0[f34_local1] = f34_local2 if f34_arg0.default_focus_index then f34_local1 = assert if f34_arg0.default_focus_index <= 0 or f34_arg0.default_focus_index > #f34_local0 then f34_local2 = false else f34_local2 = true end f34_local1( f34_local2 ) f34_local1 = #f34_local0 - 2 f34_local0[#f34_local0 - 2 + f34_arg0.default_focus_index].listDefaultFocus = true end return f34_local0 end function generic_yesno_popup() return { type = "generic_selectionList_popup", states = { default = { topAnchor = true, bottomAnchor = true, leftAnchor = true, rightAnchor = true, left = 0, right = 0, top = 0, bottom = 0 } }, properties = { message_text_alignment = LUI.Alignment.Center, popup_title = "", message_text = "", padding_top = 12, cancel_means_no = true, yes_action = function ( f36_arg0, f36_arg1 ) DebugPrint( "Running generic_confirmation_popup yes action" ) end , no_action = function ( f37_arg0, f37_arg1 ) DebugPrint( "Running generic_confirmation_popup no action" ) end , yes_text = Engine.Localize( "@LUA_MENU_YES" ), no_text = Engine.Localize( "@LUA_MENU_NO" ), callback_params = {}, default_focus_index = 2, popup_childfeeder = YesNoFeeder }, handlers = { popup_back = function ( f38_arg0, f38_arg1 ) if f38_arg0.properties.cancel_means_no then f38_arg0.properties:no_action( f38_arg1 ) end end , menu_create = function ( f39_arg0, f39_arg1 ) f39_arg0:clearSavedState() end } } end function generic_yesno_with_image_popup() return { type = "generic_selectionList_popup", states = { default = { topAnchor = true, bottomAnchor = true, leftAnchor = true, rightAnchor = true, left = 0, right = 0, top = 0, bottom = 0 } }, properties = { message_text_alignment = LUI.Alignment.Left, popup_title = "", message_image = nil, message_text = nil, message_required_rank_text = nil, message_required_rank_image = nil, message_required_rank = nil, message_current_rank_text = nil, message_current_rank_image = nil, message_current_rank = nil, message_cost_text = nil, message_cost_image = nil, message_cost = nil, message_squad_points_text = nil, message_squad_points_image = nil, message_squad_points = nil, message_image_top = 0, message_image_left = 5, message_image_height = 64, message_image_width = 64, purchase_cost = 0, padding_top = 20, cancel_means_no = true, yes_action = function ( f41_arg0, f41_arg1 ) DebugPrint( "Running generic_confirmation_popup yes action" ) end , no_action = function ( f42_arg0, f42_arg1 ) DebugPrint( "Running generic_confirmation_popup no action" ) end , yes_text = nil, no_text = nil, callback_params = {}, default_focus_index = 2, popup_childfeeder = YesNoFeeder }, handlers = { popup_back = function ( f43_arg0, f43_arg1 ) if f43_arg0.properties.cancel_means_no then f43_arg0.properties:no_action( f43_arg1 ) end end , menu_create = function ( f44_arg0, f44_arg1 ) f44_arg0:clearSavedState() end } } end local f0_local3 = function ( f45_arg0 ) return { { type = "UIGenericButton", id = "selection_button_confirm", properties = { text = Engine.Localize( "@LUA_MENU_YES" ), button_action_func = function ( f46_arg0, f46_arg1 ) DebugPrint( "Running generic_selectionList_popup confirm/yes action" ) LUI.FlowManager.RequestLeaveMenu( f46_arg0 ) end } }, { type = "UIGenericButton", id = "selection_button_cancel", properties = { text = Engine.Localize( "@LUA_MENU_NO" ), button_action_func = function ( f47_arg0, f47_arg1 ) DebugPrint( "Running generic_selectionList_popup cancel/no action" ) LUI.FlowManager.RequestLeaveMenu( f47_arg0 ) end } } } end local f0_local4 = function ( f48_arg0, f48_arg1, f48_arg2, f48_arg3, f48_arg4 ) local f48_local0 = 30 if f48_arg0:getRect() then local f48_local1 = f48_arg1:getNumChildren() local f48_local2 = GenericTitleBarDims.TitleBarHeight + f48_arg3 + f48_arg4 local f48_local3 = f48_arg1:getFirstChild() while f48_local3 do local f48_local4 = nil if f48_local3.getText and f48_local3:getText() then local f48_local5 = nil f48_local5, f48_local4 = f48_local3:getElementTextDims() else f48_local4 = f48_local3:getHeight() end end if f48_arg0.animateIn then f48_arg0:registerAnimationState( "initState", { topAnchor = false, bottomAnchor = false, leftAnchor = false, rightAnchor = false, left = -f48_arg2 / 2 - 500, right = f48_arg2 / 2 - 500, top = -(f48_local2 / 2 + f48_local0), bottom = f48_local2 / 2 - f48_local0, alpha = 0 } ) f48_arg0:animateToState( "initState" ) end f48_arg0:registerAnimationState( "newState", { topAnchor = false, bottomAnchor = false, leftAnchor = false, rightAnchor = false, left = -f48_arg2 / 2, right = f48_arg2 / 2, top = -(f48_local2 / 2 + f48_local0), bottom = f48_local2 / 2 - f48_local0, alpha = 1 } ) if f48_arg0.animateIn then f48_arg0:animateToState( "newState", 75, false, true ) f48_arg0.animateIn = false else f48_arg0:animateToState( "newState" ) end f48_local2 = f48_local2 + f48_local4 f48_local3 = f48_local3:getNextSibling() else f48_arg0:animateToState( "start", 1 ) end end function generic_selectionList_popup( f49_arg0, f49_arg1 ) if not f49_arg1 then f49_arg1 = {} end local f49_local0 = f49_arg1.padding_bottom or 8 local f49_local1 = f49_arg1.padding_right or 5 local f49_local2 = f49_arg1.padding_left or 5 local f49_local3 = f49_arg1.padding_top or 5 local f49_local4 = f49_arg1.popup_title_alignment if not f49_local4 then f49_local4 = LUI.Alignment.Center end local f49_local5 = f49_arg1.popup_title or "popup_title property" local f49_local6 if f49_arg1.cancel_will_close ~= nil then f49_local6 = f49_arg1.cancel_will_close else f49_local6 = true end local f49_local7 = CoD.TextSettings.ExtraBigFont local f49_local8 = f49_arg1.popup_list_spacing or 0 local f49_local9 = f49_arg1.popup_stop_background_fade_in or false local f49_local10, f49_local11, f49_local12, f49_local13 = GetTextDimensions( f49_local5, f49_local7.Font, f49_local7.Height ) local f49_local14 = f49_arg1.popup_width if not f49_local14 then f49_local14 = LUI.clamp( f49_local12 - f49_local10 + 60, 430, 1200 ) end local self = LUI.UIElement.new() self:registerAnimationState( "default", { topAnchor = true, bottomAnchor = true, leftAnchor = true, rightAnchor = true, top = 0, bottom = 0, left = 0, right = 0 } ) self:animateToState( "default" ) local f49_local16 = LUI.UIImage.new() f49_local16.id = "generic_selectionList_background" local f49_local17 = f49_local16 local f49_local18 = f49_local16.registerAnimationState local f49_local19 = "init" local f49_local20 = CoD.ColorizeState local f49_local21 = Swatches.Overlay.Color local f49_local22 = { material = Engine.IsAliensMode() and RegisterMaterial( "box_alien_color_tint" ) or RegisterMaterial( "white" ), topAnchor = true, bottomAnchor = true, leftAnchor = true, rightAnchor = true, top = -200, bottom = 200, left = 0, right = 0 } local f49_local23 if f49_local9 then f49_local23 = Swatches.Overlay.AlphaMore if not f49_local23 then else f49_local22.alpha = f49_local23 f49_local18( f49_local17, f49_local19, f49_local20( f49_local21, f49_local22 ) ) if not f49_local9 then f49_local16:registerAnimationState( "default", CoD.ColorizeState( Swatches.Overlay.Color, { alpha = Swatches.Overlay.AlphaMore } ) ) end f49_local16:animateToState( "init" ) if not f49_local9 then f49_local16:animateToState( "default", 100 ) end self:addElement( f49_local16 ) f49_local18 = LUI.UIElement.new() f49_local18.id = "generic_selectionList_window_id" f49_local18:registerAnimationState( "default", { topAnchor = true, bottomAnchor = true, leftAnchor = false, rightAnchor = false, left = -f49_local14 / 2, right = f49_local14 / 2, top = 0, bottom = 0, alpha = 0 } ) f49_local18:registerAnimationState( "start", { topAnchor = true, bottomAnchor = true, leftAnchor = false, rightAnchor = false, left = -f49_local14 / 2, right = f49_local14 / 2, top = 0, bottom = 0, alpha = 0 } ) f49_local18:animateToState( "default" ) f49_local18:animateToState( "start", 1 ) self:addElement( f49_local18 ) f49_local18:addElement( generic_drop_shadow( {}, { offset_shadow = 0 } ) ) f49_local19 = generic_menu_background( nil, { fill_alpha = 1 } ) f49_local19:registerAnimationState( "default", { topAnchor = true, bottomAnchor = true, leftAnchor = true, rightAnchor = true, left = 0, right = 0, top = GenericTitleBarDims.TitleBarHeight, bottom = 0 } ) f49_local19:animateToState( "default" ) f49_local18:addElement( f49_local19 ) f49_local18:addElement( generic_menu_titlebar( nil, { font = f49_local7, title_bar_text = f49_local5, title_bar_alignment = f49_local4, fill_alpha = 1 } ) ) f49_local21 = LUI.UIVerticalList.new() f49_local21.id = "generic_selectionList_content_id" f49_local21:registerAnimationState( "default", { topAnchor = true, bottomAnchor = true, leftAnchor = true, rightAnchor = true, left = f49_local2, right = -f49_local1, top = GenericTitleBarDims.TitleBarHeight + f49_local3, bottom = -f49_local0, spacing = f49_local8 } ) f49_local21:animateToState( "default" ) f49_local18:addElement( f49_local21 ) f49_local22 = function ( f50_arg0, f50_arg1 ) if f50_arg1.name == "menu_create" then f50_arg0.animateIn = true end f0_local4( f50_arg0, f49_local21, f49_local14, f49_local3, f49_local0 ) end f49_local18:addEventHandler( "menu_create", f49_local22 ) f49_local18:addEventHandler( "resize_popup", f49_local22 ) f49_local18:addEventHandler( "transition_complete_start", f49_local22 ) f49_local23 = f49_arg1.popup_childfeeder or function () return {} end if type( f49_local23 ) == "table" and f49_local23.isProperty then f49_local23 = f49_local23.func( f49_arg1 ) end assert( type( f49_local23 ) == "function", "Feeders must be a function or referenced by the MBh.Property helper" ) local f49_local24 = f49_local23( f49_arg1 ) f49_local21.childrenFeeder = f49_local23 if f49_local24 then LUI.MenuBuilder.buildChildren( f49_local21, f49_arg1, f49_local24 ) end self.addListElement = function ( f52_arg0 ) assert( f52_arg0 ) f49_local21:addElement( f52_arg0 ) end local f49_local25 = LUI.UIBindButton.new() f49_local25.id = "generic_selectionList_back_id" f49_local25:registerEventHandler( "button_secondary", function ( element, event ) self:processEvent( { name = "popup_back", controller = event.controller } ) if f49_local6 then LUI.FlowManager.RequestLeaveMenu( element ) end end ) self:addElement( f49_local25 ) return self end end f49_local23 = 0 end function DebugMessageBox( f54_arg0, f54_arg1, f54_arg2, f54_arg3 ) if not f54_arg1 or f54_arg1 == -1 then f54_arg1 = Engine.GetFirstActiveController() end if not f54_arg2 then f54_arg2 = "" end if not f54_arg3 then f54_arg3 = "" end Engine.ExecNow( "set LUIDebugMessageBoxTitle " .. f54_arg2 ) Engine.ExecNow( "set LUIDebugMessageBoxMessage " .. f54_arg3 ) LUI.FlowManager.RequestPopupMenu( f54_arg0, "generic_debugMessageBox_popup", true, f54_arg1, false ) end function generic_debugMessageBox_popup() return { type = "generic_confirmation_popup", id = "debug_message_box_popup_id", properties = { popup_title = Engine.GetDvarString( "LUIDebugMessageBoxTitle" ), message_text = Engine.GetDvarString( "LUIDebugMessageBoxMessage" ), button_text = Engine.Localize( "@MENU_OK" ) } } end function generic_menu_background( f56_arg0, f56_arg1 ) if not f56_arg1 then f56_arg1 = {} end local f56_local0 = f56_arg1.bottom_offset or 0 local f56_local1 = f56_arg1.top_offset if not f56_local1 then f56_local1 = GenericTitleBarDims.TitleBarHeight end local f56_local2 = f56_arg1.fill_color if not f56_local2 then f56_local2 = Swatches.GenericMenu.Background end local f56_local3 = f56_arg1.border_color if not f56_local3 then f56_local3 = Swatches.GenericMenu.Border end local f56_local4 = f56_arg1.fill_alpha if not f56_local4 then f56_local4 = Swatches.GenericMenu.BackgroundAlpha end local f56_local5 = f56_arg1.border_alpha if not f56_local5 then f56_local5 = Swatches.GenericMenu.BorderAlpha end local f56_local6 = f56_arg1.background_image or "white" local f56_local7 = f56_arg1.hide_bottom or false local self = LUI.UIElement.new() self.id = "generic_menu_background" self:registerAnimationState( "default", { topAnchor = true, bottomAnchor = true, leftAnchor = true, rightAnchor = true, top = f56_local1, bottom = -f56_local0, left = 0, right = 0 } ) self:animateToState( "default" ) local f56_local9 = LUI.UIImage.new() f56_local9.id = "generic_menu_background_inner" f56_local9:registerAnimationState( "default", CoD.ColorizeState( f56_local2, { material = RegisterMaterial( f56_local6 ), topAnchor = true, bottomAnchor = true, leftAnchor = true, rightAnchor = true, top = 1, bottom = -1, left = 1, right = -1, alpha = f56_local4 } ) ) f56_local9:animateToState( "default" ) self:addElement( f56_local9 ) local f56_local10 = generic_border( {}, { inner = true, border_red = f56_local3.r, border_green = f56_local3.g, border_blue = f56_local3.b, border_alpha = f56_local5, hide_bottom = f56_local7 } ) f56_local10.id = "generic_menu_background_border" self:addElement( f56_local10 ) return self end function generic_menu_background_withfade( f57_arg0, f57_arg1 ) if not f57_arg1 then f57_arg1 = {} end local f57_local0 = f57_arg1.top_offset if not f57_local0 then f57_local0 = GenericTitleBarDims.TitleBarHeight end local f57_local1 = f57_arg1.fill_color if not f57_local1 then f57_local1 = Swatches.GenericMenu.Background end local f57_local2 = f57_arg1.border_color if not f57_local2 then f57_local2 = Swatches.GenericMenu.Border end local f57_local3 = f57_arg1.fill_alpha if not f57_local3 then f57_local3 = Swatches.GenericMenu.BackgroundAlpha end local f57_local4 = f57_arg1.border_alpha if not f57_local4 then f57_local4 = Swatches.GenericMenu.BorderAlpha end local f57_local5 = f57_arg1.shadow_top_offset or 0 local f57_local6 = f57_arg1.shadow_alpha or 0.75 local f57_local7 = f57_arg1.hide_shadow or false local f57_local8 = f57_arg1.fade_height or 150 local self = LUI.UIElement.new() self.id = "generic_menu_background_withfade" self:registerAnimationState( "default", { topAnchor = true, bottomAnchor = true, leftAnchor = true, rightAnchor = true, top = 0, bottom = 0, left = 0, right = 0 } ) self:animateToState( "default" ) self:addElement( generic_menu_background( {}, { top_offset = f57_local0, bottom_offset = f57_local8, fill_color = f57_local1, border_color = f57_local2, fill_alpha = f57_local3, border_alpha = f57_local4, hide_bottom = true } ) ) local f57_local10 = LUI.UIElement.new() f57_local10:registerAnimationState( "default", { topAnchor = false, bottomAnchor = true, leftAnchor = true, rightAnchor = true, top = -1 * (1 + f57_local8), bottom = 0, left = 0, right = 0 } ) f57_local10:animateToState( "default" ) local f57_local11 = LUI.UIImage.new() f57_local11:registerAnimationState( "default", CoD.ColorizeState( f57_local2, { topAnchor = true, bottomAnchor = true, leftAnchor = true, rightAnchor = false, top = 0, bottom = 0, left = 0, right = 1, material = RegisterMaterial( "box_white_gradient_top" ), alpha = f57_local4 } ) ) f57_local11:animateToState( "default" ) f57_local10:addElement( f57_local11 ) local f57_local12 = LUI.UIImage.new() f57_local12:registerAnimationState( "default", CoD.ColorizeState( f57_local1, { topAnchor = true, bottomAnchor = true, leftAnchor = true, rightAnchor = true, top = 0, bottom = 0, left = 1, right = -1, material = RegisterMaterial( "box_white_gradient_top" ), alpha = f57_local3 } ) ) f57_local12:animateToState( "default" ) f57_local10:addElement( f57_local12 ) local f57_local13 = LUI.UIImage.new() f57_local13:registerAnimationState( "default", CoD.ColorizeState( f57_local2, { topAnchor = true, bottomAnchor = true, leftAnchor = false, rightAnchor = true, top = 0, bottom = 0, left = -1, right = 0, material = RegisterMaterial( "box_white_gradient_top" ), alpha = f57_local4 } ) ) f57_local13:animateToState( "default" ) f57_local10:addElement( f57_local13 ) if not f57_local7 then self:addElement( generic_drop_shadow_withfade( {}, { alpha = f57_local6, fade_height = f57_local8, top_offset = f57_local5 } ) ) end self:addElement( f57_local10 ) return self end function generic_menu_titlebar_background( f58_arg0, f58_arg1 ) if not f58_arg1 then f58_arg1 = {} end local f58_local0 = f58_arg1.fill_color if not f58_local0 then f58_local0 = Swatches.GenericMenu.Background end local f58_local1 = f58_arg1.border_color if not f58_local1 then f58_local1 = Swatches.GenericMenu.Border end local f58_local2 = f58_arg1.fill_alpha if not f58_local2 then f58_local2 = Swatches.GenericMenu.BackgroundAlpha end local f58_local3 = f58_arg1.border_alpha if not f58_local3 then f58_local3 = Swatches.GenericMenu.BorderAlpha end local f58_local4 = f58_arg1.reversed or false local self = LUI.UIElement.new() self.id = "generic_menu_titlebar_background_id" self:registerAnimationState( "default", { topAnchor = true, bottomAnchor = false, leftAnchor = true, rightAnchor = true, top = 0, bottom = GenericTitleBarDims.TitleBarHeight, left = 0, right = 0 } ) self:animateToState( "default" ) local f58_local6 = LUI.UIImage.new() f58_local6.id = "cap_fill" local f58_local7 = f58_local6 local f58_local8 = f58_local6.registerAnimationState local f58_local9 = "default" local f58_local10 = CoD.ColorizeState local f58_local11 = f58_local0 local f58_local12 = { topAnchor = true, bottomAnchor = true, leftAnchor = not f58_local4, rightAnchor = f58_local4, top = 0, bottom = 0 } local f58_local13 if f58_local4 then f58_local13 = -GenericTitleBarDims.TitleBarLCapWidth if not f58_local13 then else f58_local12.left = f58_local13 if f58_local4 then f58_local13 = 0 if not f58_local13 then else f58_local12.right = f58_local13 if f58_local4 then f58_local13 = RegisterMaterial( "box_titlebar_rightcap" ) if not f58_local13 then else f58_local12.material = f58_local13 f58_local12.alpha = f58_local2 f58_local8( f58_local7, f58_local9, f58_local10( f58_local11, f58_local12 ) ) f58_local6:animateToState( "default" ) self:addElement( f58_local6 ) f58_local8 = LUI.UIImage.new() f58_local8.id = "body_fill" f58_local9 = f58_local8 f58_local7 = f58_local8.registerAnimationState f58_local10 = "default" f58_local11 = CoD.ColorizeState f58_local12 = f58_local0 f58_local13 = { topAnchor = true, bottomAnchor = true, leftAnchor = true, rightAnchor = true, top = 1, bottom = 0 } local f58_local14 if f58_local4 then f58_local14 = -1 if not f58_local14 then else f58_local13.left = f58_local14 if f58_local4 then f58_local14 = -GenericTitleBarDims.TitleBarLCapWidth if not f58_local14 then else f58_local13.right = f58_local14 f58_local13.material = RegisterMaterial( "white" ) f58_local13.alpha = f58_local2 f58_local7( f58_local9, f58_local10, f58_local11( f58_local12, f58_local13 ) ) f58_local8:animateToState( "default" ) self:addElement( f58_local8 ) f58_local7 = LUI.UIImage.new() f58_local7.id = "cap_border" f58_local10 = f58_local7 f58_local9 = f58_local7.registerAnimationState f58_local11 = "default" f58_local12 = CoD.ColorizeState f58_local13 = f58_local1 f58_local14 = { topAnchor = true, bottomAnchor = true, leftAnchor = not f58_local4, rightAnchor = f58_local4, top = 0, bottom = 0 } local f58_local15 if f58_local4 then f58_local15 = -GenericTitleBarDims.TitleBarLCapWidth if not f58_local15 then else f58_local14.left = f58_local15 if f58_local4 then f58_local15 = 0 if not f58_local15 then else f58_local14.right = f58_local15 if f58_local4 then f58_local15 = RegisterMaterial( "box_titlebar_rightcap_border" ) if not f58_local15 then else f58_local14.material = f58_local15 f58_local14.alpha = f58_local3 f58_local9( f58_local10, f58_local11, f58_local12( f58_local13, f58_local14 ) ) f58_local7:animateToState( "default" ) self:addElement( f58_local7 ) f58_local9 = LUI.UIImage.new() f58_local9.id = "end_border" f58_local11 = f58_local9 f58_local10 = f58_local9.registerAnimationState f58_local12 = "default" f58_local13 = CoD.ColorizeState f58_local14 = f58_local1 f58_local15 = { topAnchor = true, bottomAnchor = true, leftAnchor = f58_local4, rightAnchor = not f58_local4, top = 0, bottom = 0 } local f58_local16 if f58_local4 then f58_local16 = 0 if not f58_local16 then else f58_local15.left = f58_local16 if f58_local4 then f58_local16 = 1 if not f58_local16 then else f58_local15.right = f58_local16 f58_local15.material = RegisterMaterial( "white" ) f58_local15.alpha = f58_local3 f58_local10( f58_local11, f58_local12, f58_local13( f58_local14, f58_local15 ) ) f58_local9:animateToState( "default" ) self:addElement( f58_local9 ) f58_local10 = LUI.UIImage.new() f58_local10.id = "top_border" f58_local12 = f58_local10 f58_local11 = f58_local10.registerAnimationState f58_local13 = "default" f58_local14 = CoD.ColorizeState f58_local15 = f58_local1 f58_local16 = { topAnchor = true, bottomAnchor = false, leftAnchor = true, rightAnchor = true, top = 0, bottom = 1 } local f58_local17 if f58_local4 then f58_local17 = 1 if not f58_local17 then else f58_local16.left = f58_local17 if f58_local4 then f58_local17 = -GenericTitleBarDims.TitleBarLCapWidth if not f58_local17 then else f58_local16.right = f58_local17 f58_local16.material = RegisterMaterial( "white" ) f58_local16.alpha = f58_local3 f58_local11( f58_local12, f58_local13, f58_local14( f58_local15, f58_local16 ) ) f58_local10:animateToState( "default" ) self:addElement( f58_local10 ) return self end end f58_local17 = -1 end end f58_local17 = GenericTitleBarDims.TitleBarLCapWidth end end f58_local16 = 0 end end f58_local16 = -1 end end f58_local15 = RegisterMaterial( "box_titlebar_leftcap_border" ) end end f58_local15 = GenericTitleBarDims.TitleBarLCapWidth end end f58_local15 = 0 end end f58_local14 = -1 end end f58_local14 = GenericTitleBarDims.TitleBarLCapWidth end end f58_local13 = RegisterMaterial( "box_titlebar_leftcap" ) end end f58_local13 = GenericTitleBarDims.TitleBarLCapWidth end end f58_local13 = 0 end local f0_local5 = function ( f59_arg0, f59_arg1 ) f59_arg0:setText( f59_arg1.title_text ) end function generic_menu_titlebar( f60_arg0, f60_arg1 ) local f60_local0 = f60_arg1.title_bar_text_indent or 0 local f60_local1 = f60_arg1.title_bar_alignment if not f60_local1 then f60_local1 = LUI.Alignment.Center end local f60_local2 = f60_arg1.title_bar_text or "" local f60_local3 = generic_menu_titlebar_background( nil, f60_arg1 ) local f60_local4 = f60_arg1.font if not f60_local4 then f60_local4 = CoD.TextSettings.ExtraBigFont end local f60_local5 = f60_arg1.vertOffset or 1 local f60_local6 = f60_arg1.marquee and LUI.UIMarqueeText.new() or LUI.UIText.new() f60_local6.id = "title" f60_local6:setText( f60_local2 ) f60_local6:registerAnimationState( "default", { topAnchor = false, bottomAnchor = false, leftAnchor = true, rightAnchor = true, top = -f60_local4.Height / 2 + f60_local5, height = f60_local4.Height, left = f60_local0, right = 0, font = f60_local4.Font, alignment = f60_local1 } ) f60_local6:animateToState( "default" ) f60_local6:registerEventHandler( "update_title", f0_local5 ) f60_local3:addElement( f60_local6 ) return f60_local3 end function RefreshScrollList( f61_arg0, f61_arg1 ) f61_arg0:closeChildren() f61_arg0:clearSavedState() f61_arg0:processEvent( { name = "menu_refresh" } ) end function generic_loading_widget( f62_arg0, f62_arg1 ) if not f62_arg1 then f62_arg1 = {} end local f62_local0 = f62_arg1.indent or 15 local f62_local1 = f62_arg1.message or "" local self = LUI.UIElement.new() self.id = "generic_loading_widget" self:registerAnimationState( "default", { topAnchor = true, bottomAnchor = true, leftAnchor = true, rightAnchor = true, top = 0, bottom = 0, left = 0, right = 0 } ) self:animateToState( "default" ) local f62_local3 = LUI.UIHorizontalList.new() f62_local3:registerAnimationState( "default", { topAnchor = true, bottomAnchor = true, leftAnchor = true, rightAnchor = true, top = 0, bottom = 0, left = 0, right = 0, alignment = LUI.Alignment.Center, spacing = f62_local0 } ) f62_local3:animateToState( "default" ) self:addElement( f62_local3 ) local f62_local4 = LUI.MenuBuilder.BuildAddChild( f62_local3, { type = "live_dialog_processing_widget" } ) if #f62_local1 > 0 then local f62_local5, f62_local6, f62_local7, f62_local8 = GetTextDimensions( f62_local1, CoD.TextSettings.NormalFont.Font, CoD.TextSettings.NormalFont.Height ) local f62_local9 = LUI.UIText.new() f62_local9:setText( f62_local1 ) f62_local9:registerAnimationState( "default", { font = CoD.TextSettings.NormalFont.Font, alignment = LUI.Alignment.Left, topAnchor = false, bottomAnchor = false, leftAnchor = true, rightAnchor = false, top = -CoD.TextSettings.NormalFont.Height / 2, bottom = CoD.TextSettings.NormalFont.Height / 2, left = 0, right = f62_local7 - f62_local5 } ) f62_local9:animateToState( "default" ) f62_local3:addElement( f62_local9 ) end return self end function generic_separator( menu, controller ) local self = LUI.UIElement.new( { topAnchor = true, leftAnchor = true, bottomAnchor = false, rightAnchor = true, top = 0, left = 0, right = 0, height = 12 } ) self.id = "generic_spacer_id" local f63_local1 = LUI.UIImage.new( { material = RegisterMaterial( "box_white_gradient_fade_rt" ), topAnchor = true, leftAnchor = true, bottomAnchor = false, rightAnchor = true, right = -GenericButtonSettings.Styles.GradientButton.focus_animation_distance - 7, top = 2, left = 0, height = 2, alpha = 0.15 } ) f63_local1.id = "generic_spacer_image_id" self:addElement( f63_local1 ) return self end if Engine.InFrontend() then LUI.MenuBuilder.registerDef( "generic_input_field", generic_input_field ) end LUI.MenuBuilder.registerDef( "generic_debugMessageBox_popup", generic_debugMessageBox_popup ) LUI.MenuBuilder.registerDef( "generic_header", left_header ) LUI.MenuBuilder.registerType( "generic_menu_title", generic_menu_title ) LUI.MenuBuilder.registerType( "generic_border", generic_border ) LUI.MenuBuilder.registerType( "generic_drop_shadow", generic_drop_shadow ) LUI.MenuBuilder.registerType( "generic_drop_shadow_withfade", generic_drop_shadow_withfade ) LUI.MenuBuilder.registerType( "generic_back_button", generic_back_button ) LUI.MenuBuilder.registerDef( "left_header", left_header ) LUI.MenuBuilder.registerDef( "generic_popup_message", generic_popup_message ) LUI.MenuBuilder.registerDef( "generic_confirmation_popup", generic_confirmation_popup ) LUI.MenuBuilder.registerDef( "generic_yesno_popup", generic_yesno_popup ) LUI.MenuBuilder.registerDef( "generic_yesno_with_image_popup", generic_yesno_with_image_popup ) LUI.MenuBuilder.registerType( "generic_menu_background", generic_menu_background ) LUI.MenuBuilder.registerType( "generic_menu_background_withfade", generic_menu_background_withfade ) LUI.MenuBuilder.registerType( "generic_menu_titlebar", generic_menu_titlebar ) LUI.MenuBuilder.registerType( "generic_selectionList_popup", generic_selectionList_popup ) LUI.MenuBuilder.registerType( "generic_loading_widget", generic_loading_widget ) LUI.MenuBuilder.registerType( "generic_separator", generic_separator ) LockTable( _M )