local f0_local0 = module local f0_local1, f0_local2 = ... f0_local0( f0_local1, package.seeall ) CoD.PrintModuleLoad( _NAME ) function UsingSvSPlayercards( f1_arg0 ) assert( f1_arg0 ~= nil ) local f1_local0 = SvS.IsSvS() if f1_local0 then if SvS.GetCurrentSquadModeInfo() ~= SvS.SquadModes.SquadVsSquad or f1_arg0 == Lobby.MemberListStates.Prelobby then f1_local0 = false else f1_local0 = true end end return f1_local0 end function HideEmptyLobbySlots( f2_arg0 ) local f2_local0 = UsingSvSPlayercards( f2_arg0 ) if not f2_local0 then f2_local0 = SvS.IsSvS() if f2_local0 then f2_local0 = SvS.GetCurrentSquadModeInfo() == SvS.SquadModes.SquadAssault end end return f2_local0 end function HandleRefocusMemberList( f3_arg0, f3_arg1 ) f3_arg0:clearSavedState() local f3_local0 = f3_arg0:getFirstChild() while f3_local0 ~= nil do local f3_local1 = f3_local0.properties if f3_local1 and f3_local1.isActiveMemberSlot then if f3_arg1.inFocus then f3_local0:processEvent( { name = "gain_focus" } ) break end LUI.savedMenuStates[f3_arg0.id] = {} LUI.savedMenuStates[f3_arg0.id][1] = { id = f3_local0.id, data = f3_local0.saveData } end f3_local0 = f3_local0:getNextSibling() end end function HandleLobbyMemberRestoreFocus( f4_arg0, f4_arg1 ) local f4_local0 = f4_arg0.properties if f4_arg0.id == f4_arg1.id then if f4_local0.isActiveMemberSlot then f4_arg0:processEvent( { name = "gain_focus" } ) else local f4_local1 = f4_arg0:getParent() f4_local1:processEvent( { name = "refocus_member_list", inFocus = true } ) end return true else return false end end function LobbyMemberGetLocalPlayerTeam( f5_arg0 ) local f5_local0 = Engine.GetFirstActiveController() if Lobby.GetLocalPlayerTeam then return Lobby.GetLocalPlayerTeam( f5_arg0, f5_local0 ) else return Teams.allies end end function LobbyMemberGetSlot( f6_arg0, f6_arg1 ) if f6_arg0 == Lobby.MemberListStates.Teams then local f6_local0 = Teams.allies local f6_local1 = Teams.axis local f6_local2 = LobbyMemberGetLocalPlayerTeam( f6_arg0 ) if f6_local2 == Teams.axis or f6_local2 == Teams.allies then f6_local0 = f6_local2 f6_local1 = otherTeamLookup[f6_local2] end local f6_local3 = Lobby.GetMemberCount( f6_arg0, f6_local0 ) local f6_local4 = Lobby.GetMemberCount( f6_arg0, f6_local1 ) local f6_local5 = Lobby.GetMemberCount( f6_arg0, Teams.spectator ) if f6_arg1 - 1 < f6_local3 then return f6_arg1 - 1 elseif f6_arg1 - 1 < f6_local3 + f6_local4 then return f6_arg1 - f6_local3 - 1 elseif f6_arg1 - 1 < f6_local3 + f6_local4 + f6_local5 then return f6_arg1 - f6_local3 - f6_local4 - 1 else return f6_arg1 - f6_local3 - f6_local4 - f6_local5 - 1 end else return f6_arg1 - 1 end end function LobbyMemberGetTeam( f7_arg0, f7_arg1 ) if f7_arg0 == Lobby.MemberListStates.Teams then local f7_local0 = Teams.allies local f7_local1 = Teams.axis local f7_local2 = LobbyMemberGetLocalPlayerTeam( f7_arg0 ) if f7_local2 == Teams.axis or f7_local2 == Teams.allies then f7_local0 = f7_local2 f7_local1 = otherTeamLookup[f7_local2] end local f7_local3 = Lobby.GetMemberCount( f7_arg0, f7_local0 ) local f7_local4 = Lobby.GetMemberCount( f7_arg0, f7_local1 ) local f7_local5 = Lobby.GetMemberCount( f7_arg0, Teams.spectator ) if f7_arg1 - 1 < f7_local3 then return f7_local0 elseif f7_arg1 - 1 < f7_local3 + f7_local4 then return f7_local1 elseif f7_arg1 - 1 < f7_local3 + f7_local4 + f7_local5 then return Teams.spectator else return Teams.free end else return Teams.free end end function HandleLobbyMemberButtonRefresh( f8_arg0, f8_arg1 ) local f8_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( f8_arg0 ) f8_arg0.properties.memberListState = LobbyMemberListGetState( f8_arg0.properties.memberListState ) f8_arg0.properties.memberSlot = LobbyMemberGetSlot( f8_arg0.properties.memberListState, f8_arg0.properties.memberIndex ) f8_arg0.properties.team = LobbyMemberGetTeam( f8_arg0.properties.memberListState, f8_arg0.properties.memberIndex ) f8_arg0.properties.isActiveMemberSlot = Lobby.IsActiveMemberSlot( f8_arg0.properties.memberIndex - 1 ) if not f8_local0.selectedMemberUniqueId and f8_arg0.properties.memberIndex == 0 then f8_local0.selectedMemberUniqueId = GetLobbyMemberUniqueId( f8_arg0.properties.memberListState, f8_arg0.properties.memberSlot, f8_arg0.properties.team ) end if SvS.IsSvS() and SvS.GetCurrentSquadModeInfo() == SvS.SquadModes.SquadAssault then f8_arg0:dispatchEventToParent( { name = "update_squad_member", playerElement = f8_arg0, team = f8_arg0.properties.team, memberSlot = f8_arg0.properties.memberSlot, memberListState = f8_arg0.properties.memberListState } ) end local f8_local1 = f8_arg0.properties.isActiveMemberSlot f8_arg0:processEvent( { name = "lobby_member_update_ss_prompt", memberListState = f8_arg0.properties.memberListState, immediate = true, isActiveMemberSlot = f8_local1 } ) if f8_local1 then f8_arg0:processEvent( { name = "lobby_member_update_content", memberListState = f8_arg0.properties.memberListState, memberSlot = f8_arg0.properties.memberSlot, team = f8_arg0.properties.team, immediate = true } ) f8_arg0:processEvent( { name = "lobby_member_update_bg", memberListState = f8_arg0.properties.memberListState, team = f8_arg0.properties.team, isActiveMemberSlot = f8_local1, dispatchChildren = true, immediate = true } ) end end function LobbyMemberIsSplitscreenPrompt( f9_arg0, f9_arg1 ) if UsingSvSPlayercards( f9_arg0 ) then return false elseif f9_arg0 == Lobby.MemberListStates.Prelobby and Lobby.IsPrivatePartyHost() then local f9_local0 = Lobby.GetNonPlayingLocalClientCount() local f9_local1 = Lobby.GetMemberCount( f9_arg0 ) if f9_local1 > 0 and f9_local1 < f9_arg1 and f9_arg1 <= f9_local1 + f9_local0 then return true end end return false end function HandleLobbyMemberButtonIsActive( f10_arg0, f10_arg1 ) local f10_local0 = f10_arg0.properties if not (not f10_local0.isActiveMemberSlot and ((f10_local0.memberListState == Lobby.MemberListStates.Prelobby) or not Lobby.IsSearching() or f10_local0.memberIndex > Lobby.GetMemberCount( f10_local0.memberListState, Teams.free ) or HideEmptyLobbySlots( f10_local0.memberListState ))) or LobbyMemberIsSplitscreenPrompt( f10_local0.memberListState, f10_local0.memberIndex ) then f10_arg0:animateToState( "default", 0 ) else f10_arg0:animateToState( "hidden", 0 ) end if f10_local0.isActiveMemberSlot then f10_arg0:makeFocusable() if not f10_local0.wasActiveMemberSlot and not f10_local0.isLocalMember then f10_arg0:dispatchEventToRoot( { name = "update_double_xp_icon" } ) Engine.PlaySound( CoD.SFX.MPLobbyPlayerJoin ) end f10_local0.wasActiveMemberSlot = true else if f10_local0.isFocused then f10_arg0:processEvent( { name = "lose_focus" } ) local f10_local1 = f10_arg0:getParent() f10_local1:processEvent( { name = "refocus_member_list", inFocus = true } ) else local f10_local1 = f10_arg0:getParent() if LUI.savedMenuStates[f10_local1.id] ~= nil then for f10_local5, f10_local6 in ipairs( LUI.savedMenuStates[f10_local1.id] ) do if f10_local6.id == f10_arg0.id then f10_local1:processEvent( { name = "refocus_member_list", inFocus = false } ) break end end end end if f10_local0.wasActiveMemberSlot then f10_arg0:dispatchEventToRoot( { name = "update_double_xp_icon" } ) Engine.PlaySound( CoD.SFX.MPLobbyPlayerExit ) f10_local0.wasActiveMemberSlot = false end f10_arg0:makeNotFocusable() end f10_arg0:dispatchEventToParent( { name = "update_navigation" } ) end function LobbyMemberButtonShouldBeDisabled( f11_arg0, f11_arg1, f11_arg2 ) local f11_local0 = LobbyMemberIsSplitscreenPrompt( f11_arg0, f11_arg1 ) local f11_local1 = Lobby.IsSearching() local f11_local2 = f11_arg0 == Lobby.MemberListStates.Prelobby if HideEmptyLobbySlots( f11_arg0 ) then return not f11_arg2 elseif not (f11_arg2 and (f11_local2 or not f11_local1 or f11_arg2)) or f11_local0 then return true else return false end end function HandleLobbyMemberButtonIsDisabled( f12_arg0, f12_arg1 ) local f12_local0 = f12_arg0.properties local f12_local1 = LobbyMemberButtonShouldBeDisabled( f12_local0.memberListState, f12_local0.memberIndex, f12_local0.isActiveMemberSlot ) if not f12_arg0.disabled and f12_local1 then f12_arg0:processEvent( { name = "disable", immediate = true } ) elseif f12_arg0.disabled and not f12_local1 then f12_arg0:processEvent( { name = "enable", immediate = true } ) end end function HandleLobbyMemberButtonAction( f13_arg0, f13_arg1 ) local f13_local0 = { memberListState = f13_arg0.properties.memberListState, memberSlot = f13_arg0.properties.memberSlot, team = f13_arg0.properties.team } if f13_arg0.properties.isPublicLobby then f13_local0.isPublicLobby = true end if f13_arg0.properties.isPrivateLobby then f13_local0.isPrivateLobby = true end LUI.FlowManager.RequestPopupMenu( f13_arg0, "player_popup_party", true, f13_arg1.controller, false, f13_local0 ) end function HandleLobbyMemberButtonOver( f14_arg0, f14_arg1 ) local f14_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( f14_arg0 ) local f14_local1 = f14_arg0.properties local f14_local2 = LobbyMemberIsBot( f14_local1.memberListState, f14_local1.memberSlot, f14_local1.team ) if not Engine.IsConsoleGame() then f14_arg0:dispatchEventToRoot( { name = "lobby_slide_enable", dispatchChildren = true } ) end f14_local0.selectedMemberUniqueId = GetLobbyMemberUniqueId( f14_local1.memberListState, f14_local1.memberSlot, f14_local1.team ) f14_arg0:dispatchEventToRoot( { name = "lobby_detail_update", memberListState = f14_local1.memberListState, memberSlot = f14_local1.memberSlot, team = f14_local1.team, isBot = f14_local2, memberIndex = f14_local1.memberIndex, dispatchChildren = true, controller = f14_arg1.controller, immediate = true } ) end function HandleLobbyMemberUpdateSplitscreenPrompt( f15_arg0, f15_arg1 ) local f15_local0 = f15_arg0.properties if LobbyMemberIsSplitscreenPrompt( f15_arg1.memberListState or f15_local0.memberListState, f15_local0.memberIndex ) then f15_arg0:animateToState( "default", 0 ) f15_arg0:setText( Lobby.GetNonPlayingLocalClientText( f15_local0.memberIndex - 1 ) ) else f15_arg0:animateToState( "hidden", 0 ) end end function HandleLobbyMemberUpdateHostIconProperties( f16_arg0, f16_arg1 ) f16_arg0.properties.memberListState = f16_arg1.memberListState f16_arg0.properties.memberSlot = f16_arg1.memberSlot f16_arg0.properties.team = f16_arg1.team end function HandleLobbyMemberShowHostIcon( f17_arg0, f17_arg1 ) local f17_local0 = f17_arg0.properties if Lobby.ShowMemberPrivatePartyHostIcon( f17_local0.memberListState, f17_local0.memberSlot, f17_local0.team ) then f17_arg0:animateToState( "shown", 0 ) else f17_arg0:animateToState( "default", 0 ) end end function HandleLobbyMemberUpdateEliteIcon( f18_arg0, f18_arg1 ) local f18_local0 = f18_arg0.properties if ShouldShowEliteIcon( f18_local0.memberListState, f18_local0.memberSlot, f18_local0.team ) then f18_arg0:animateToState( "visible", 0 ) else f18_arg0:animateToState( "default", 0 ) end end function HandleLobbyMemberUpdateEliteIconProperties( f19_arg0, f19_arg1 ) f19_arg0.properties.memberListState = f19_arg1.memberListState f19_arg0.properties.memberSlot = f19_arg1.memberSlot f19_arg0.properties.team = f19_arg1.team end function HandleLobbyMemberUpdateRankVisibility( f20_arg0, f20_arg1 ) local f20_local0 = f20_arg0.properties local f20_local1 = Lobby.ShowMemberInfo( f20_local0.memberListState, f20_local0.memberSlot, f20_local0.team ) if f20_local1 then f20_local1 = not LobbyMemberIsBot( f20_local0.memberListState, f20_local0.memberSlot, f20_local0.team ) end if not f20_local1 then f20_arg0:animateToState( "hidden", 0 ) elseif f20_local0.isFocused then f20_arg0:animateToState( "highlighted", 0 ) else f20_arg0:animateToState( "default", 0 ) end end function HandleLobbyMemberUpdateRank( f21_arg0, f21_arg1 ) local f21_local0 = f21_arg0.properties local f21_local1 = nil if Engine.IsAliensMode() then f21_arg0:setText( Rank.GetRankDisplay( Lobby.GetMemberAlienRank( f21_local0.memberListState, f21_local0.memberSlot, f21_local0.team ), CoD.PlayMode.Aliens ) ) else f21_arg0:setText( Rank.GetRankDisplay( Lobby.GetMemberRank( f21_local0.memberListState, f21_local0.memberSlot, f21_local0.team ) ) ) end end function HandleLobbyMemberUpdateRankProperties( f22_arg0, f22_arg1 ) f22_arg0.properties.memberListState = f22_arg1.memberListState f22_arg0.properties.memberSlot = f22_arg1.memberSlot f22_arg0.properties.team = f22_arg1.team end f0_local0 = function ( f23_arg0, f23_arg1, f23_arg2 ) return Lobby.ShowMemberInfo( f23_arg0, f23_arg1, f23_arg2 ) and not LobbyMemberIsBot( f23_arg0, f23_arg1, f23_arg2 ) end function HandleLobbyMemberUpdateRankIcon( f24_arg0, f24_arg1 ) local f24_local0 = f24_arg0.properties local f24_local1, f24_local2 = nil if Engine.IsAliensMode() then f24_local2 = Lobby.GetMemberAlienRank( f24_local0.memberListState, f24_local0.memberSlot, f24_local0.team ) f24_local1 = Lobby.GetMemberAlienPrestigeLevel( f24_local0.memberListState, f24_local0.memberSlot, f24_local0.team ) else f24_local2 = Lobby.GetMemberRank( f24_local0.memberListState, f24_local0.memberSlot, f24_local0.team ) f24_local1 = Lobby.GetMemberPrestigeLevel( f24_local0.memberListState, f24_local0.memberSlot, f24_local0.team ) end f24_arg0:setImage( RegisterMaterial( Rank.GetRankIcon( f24_local2, f24_local1, Engine.GetCurrentCoDPlayMode() ) ) ) if f0_local0( f24_local0.memberListState, f24_local0.memberSlot, f24_local0.team ) then f24_arg0:animateToState( "default", 0 ) else f24_arg0:animateToState( "hidden", 0 ) end end function HandleLobbyMemberUpdateRankIconProperties( f25_arg0, f25_arg1 ) f25_arg0.properties.memberListState = f25_arg1.memberListState f25_arg0.properties.memberSlot = f25_arg1.memberSlot f25_arg0.properties.team = f25_arg1.team end function HandleLobbyMemberUpdateBotDifficultyIcon( f26_arg0, f26_arg1 ) local f26_local0 = f26_arg0.properties local f26_local1 = Lobby.GetMemberBotDifficulty( f26_local0.memberListState, f26_local0.memberSlot, f26_local0.team ) if LobbyMemberIsBot( f26_local0.memberListState, f26_local0.memberSlot, f26_local0.team ) then f26_arg0:animateToState( "default", 0 ) else f26_arg0:animateToState( "hidden", 0 ) end end function HandleLobbyMemberUpdateBotDifficultyIconProperties( f27_arg0, f27_arg1 ) f27_arg0.properties.memberListState = f27_arg1.memberListState f27_arg0.properties.memberSlot = f27_arg1.memberSlot f27_arg0.properties.team = f27_arg1.team end function HandleLobbyMemberUpdateClantag( f28_arg0, f28_arg1 ) local f28_local0 = f28_arg0.properties if LobbyMemberIsBot( f28_local0.memberListState, f28_local0.memberSlot, f28_local0.team ) then f28_arg0:setText( "BOT" ) if f28_local0.isFocused then f28_arg0:animateToState( "highlighted", 0 ) else f28_arg0:animateToState( "default", 0 ) end elseif Lobby.HasMemberClanTag( f28_local0.memberListState, f28_local0.memberSlot, f28_local0.team ) then f28_arg0:setText( Lobby.GetMemberClanTag( f28_local0.memberListState, f28_local0.memberSlot, f28_local0.team ) ) if f28_local0.isFocused then f28_arg0:animateToState( "highlighted", 0 ) else f28_arg0:animateToState( "default", 0 ) end else f28_arg0:animateToState( "hidden", 0 ) end end function HandleLobbyMemberUpdateClantagProperties( f29_arg0, f29_arg1 ) f29_arg0.properties.memberListState = f29_arg1.memberListState f29_arg0.properties.memberSlot = f29_arg1.memberSlot f29_arg0.properties.team = f29_arg1.team end function GetReadyUpIndicatorStateString( f30_arg0, f30_arg1, f30_arg2 ) local f30_local0 = "hidden" if Lobby.UsingReadyUpFeature() and not LobbyMemberIsBot( f30_arg0, f30_arg1, f30_arg2 ) then if (Lobby.GetMemberReadyUpFlag( f30_arg0, f30_arg1, f30_arg2 ) or false) == true then f30_local0 = "ready" else f30_local0 = "notready" end end return f30_local0 end function HandleLobbyMemberUpdateReadyUpFlag( f31_arg0, f31_arg1 ) local f31_local0 = f31_arg0.properties f31_arg0:animateToState( GetReadyUpIndicatorStateString( f31_local0.memberListState, f31_local0.memberSlot, f31_local0.team ), 0 ) end function HandleLobbyMemberUpdateReadyUpFlagProperties( f32_arg0, f32_arg1 ) f32_arg0.properties.memberListState = f32_arg1.memberListState f32_arg0.properties.memberSlot = f32_arg1.memberSlot f32_arg0.properties.team = f32_arg1.team end function HandleLobbyMemberUpdateGamertag( f33_arg0, f33_arg1 ) local f33_local0 = f33_arg0.properties f33_arg0:setText( Lobby.GetMemberName( f33_local0.memberListState, f33_local0.memberSlot, f33_local0.team ) ) end function HandleLobbyMemberUpdateGamertagColor( f34_arg0, f34_arg1 ) local f34_local0 = f34_arg0.properties if f34_local0.isFocused then f34_arg0:animateToState( "highlighted", 0 ) elseif LobbyMemberIsBot( f34_local0.memberListState, f34_local0.memberSlot, f34_local0.team ) then f34_arg0:animateToState( "default", 0 ) else local f34_local1 = Lobby.IsMemberALocalPlayer( f34_local0.memberListState, f34_local0.memberSlot, f34_local0.team ) local f34_local2 = Lobby.IsMemberInPrivateParty( f34_local0.memberListState, f34_local0.memberSlot, f34_local0.team ) if f34_local1 then f34_arg0:animateToState( "local", 0 ) elseif f34_local2 then f34_arg0:animateToState( "party", 0 ) else f34_arg0:animateToState( "default", 0 ) end end end f0_local1 = function ( f35_arg0, f35_arg1, f35_arg2 ) local f35_local0 if f35_arg0 ~= Lobby.MemberListStates.Prelobby then f35_local0 = Lobby.ShowMemberInfo( f35_arg0, f35_arg1, f35_arg2 ) else f35_local0 = false end return f35_local0 end function HandleLobbyMemberUpdateScoreVisibility( f36_arg0, f36_arg1 ) local f36_local0 = f36_arg0.properties if not f0_local1( f36_local0.memberListState, f36_local0.memberSlot, f36_local0.team ) or Engine.IsAliensMode() then f36_arg0:animateToState( "hidden", 0 ) elseif f36_local0.isFocused then f36_arg0:animateToState( "highlighted", 0 ) else f36_arg0:animateToState( "default", 0 ) end end function HandleLobbyMemberUpdateScore( f37_arg0, f37_arg1 ) local f37_local0 = f37_arg0.properties f37_arg0:setText( Lobby.GetMemberStat( f37_local0.memberListState, f37_local0.memberSlot, f37_local0.team, Lobby.MemberStatTypes.Score ) or "" ) end function HandleLobbyMemberUpdateScoreProperties( f38_arg0, f38_arg1 ) f38_arg0.properties.memberListState = f38_arg1.memberListState f38_arg0.properties.memberSlot = f38_arg1.memberSlot f38_arg0.properties.team = f38_arg1.team end function HandleLobbyMemberUpdateSetFocused( f39_arg0, f39_arg1 ) f39_arg0.properties.isFocused = true end function HandleLobbyMemberUpdateSetNotFocused( f40_arg0, f40_arg1 ) f40_arg0.properties.isFocused = false end function HandleLobbyMemberUpdateGamertagProperties( f41_arg0, f41_arg1 ) f41_arg0.properties.memberListState = f41_arg1.memberListState f41_arg0.properties.memberSlot = f41_arg1.memberSlot f41_arg0.properties.team = f41_arg1.team end function buildMemberButtonRank( f42_arg0, f42_arg1, f42_arg2, f42_arg3 ) local self = LUI.UIText.new() self.id = "member_button_rank_text_id" self.properties = { memberListState = f42_arg0, memberSlot = f42_arg1, team = f42_arg2 } self:registerAnimationState( "default", { topAnchor = false, bottomAnchor = false, leftAnchor = true, rightAnchor = false, top = -1 * CoD.TextSettings.SmallFont.Height * 0.5, bottom = CoD.TextSettings.SmallFont.Height * 0.5, left = 0, right = 32, font = CoD.TextSettings.SmallFont.Font, alignment = LUI.Alignment.Center, red = 1, green = 1, blue = 1, alpha = 1 } ) self:registerAnimationState( "hidden", { alpha = 0 } ) self:registerAnimationState( "highlighted", { red = 0, green = 0, blue = 0, alpha = 1 } ) self:animateToState( "default" ) if not f0_local0( f42_arg0, f42_arg1, f42_arg2 ) then self:animateToState( "hidden", 0 ) end self:setText( f42_arg3 ) self:registerEventHandler( "button_over", MBh.DoMultiple( { HandleLobbyMemberUpdateSetFocused, HandleLobbyMemberUpdateRankVisibility } ) ) self:registerEventHandler( "button_up", MBh.DoMultiple( { HandleLobbyMemberUpdateSetNotFocused, HandleLobbyMemberUpdateRankVisibility } ) ) self:registerEventHandler( "lobby_member_update_content", MBh.DoMultiple( { HandleLobbyMemberUpdateRankProperties, HandleLobbyMemberUpdateRank, HandleLobbyMemberUpdateRankVisibility } ) ) return self end function buildMemberButtonRankIcon( f43_arg0, f43_arg1, f43_arg2, f43_arg3 ) local self = LUI.UIImage.new() self.id = "member_button_rank_icon_id" self.properties = { memberListState = f43_arg0, memberSlot = f43_arg1, team = f43_arg2 } self:registerAnimationState( "default", { topAnchor = true, bottomAnchor = true, leftAnchor = true, rightAnchor = false, top = 0, bottom = 0, left = 32, right = 58, red = 1, green = 1, blue = 1, alpha = 1 } ) self:registerAnimationState( "hidden", { alpha = 0 } ) self:animateToState( "default" ) self:setImage( f43_arg3 ) local f43_local1 = Lobby.ShowMemberInfo( f43_arg0, f43_arg1, f43_arg2 ) if f43_local1 then f43_local1 = not LobbyMemberIsBot( f43_arg0, f43_arg1, f43_arg2 ) end if not f43_local1 then self:animateToState( "hidden", 0 ) end self:registerEventHandler( "lobby_member_update_content", MBh.DoMultiple( { HandleLobbyMemberUpdateRankIconProperties, HandleLobbyMemberUpdateRankIcon } ) ) return self end function buildMemberButtonBotDifficultyIcon( f44_arg0, f44_arg1, f44_arg2, f44_arg3 ) local self = LUI.UIImage.new() self.id = "member_button_bot_difficulty_icon_id" self.properties = { memberListState = f44_arg0, memberSlot = f44_arg1, team = f44_arg2 } self:registerAnimationState( "default", { topAnchor = true, bottomAnchor = true, leftAnchor = true, rightAnchor = false, top = 5, bottom = -5, left = 0, right = 48, red = 1, green = 1, blue = 1, alpha = 1 } ) self:registerAnimationState( "hidden", { alpha = 0 } ) self:animateToState( "default" ) self:setImage( f44_arg3 ) if not LobbyMemberIsBot( f44_arg0, f44_arg1, f44_arg2 ) then self:animateToState( "hidden", 0 ) end self:registerEventHandler( "lobby_member_update_content", MBh.DoMultiple( { HandleLobbyMemberUpdateBotDifficultyIconProperties, HandleLobbyMemberUpdateBotDifficultyIcon } ) ) return self end function buildMemberButtonRankElement( f45_arg0, f45_arg1, f45_arg2, f45_arg3, f45_arg4, f45_arg5, f45_arg6 ) local self = LUI.UIElement.new() self.id = "member_button_rank_element_id" self:registerAnimationState( "default", { topAnchor = true, bottomAnchor = true, leftAnchor = true, rightAnchor = false, top = 0, bottom = 0, left = 0, right = 48, alpha = 1 } ) self:registerAnimationState( "hidden", { alpha = 0 } ) self:animateToState( "default" ) if f45_arg6 and not Engine.IsAliensMode() then self:animateToState( "hidden" ) end self:addElement( buildMemberButtonRank( f45_arg0, f45_arg1, f45_arg2, f45_arg3 ) ) self:addElement( buildMemberButtonRankIcon( f45_arg0, f45_arg1, f45_arg2, f45_arg4 ) ) self:addElement( buildMemberButtonBotDifficultyIcon( f45_arg0, f45_arg1, f45_arg2, f45_arg5 ) ) return self end function buildMemberButtonClantag( f46_arg0, f46_arg1, f46_arg2, f46_arg3, f46_arg4 ) local self = LUI.UIText.new() self.id = "member_button_clantag_id" self.properties = { memberListState = f46_arg0, memberSlot = f46_arg1, team = f46_arg2 } self:registerAnimationState( "default", { topAnchor = false, bottomAnchor = false, leftAnchor = true, rightAnchor = false, top = -1 * CoD.TextSettings.SmallFont.Height * 0.5, bottom = CoD.TextSettings.SmallFont.Height * 0.5, left = 60, right = 135, red = 0.5, green = 0.5, blue = 0.5, alpha = 1, font = CoD.TextSettings.SmallFont.Font, alignment = LUI.Alignment.Center } ) self:registerAnimationState( "hidden", { alpha = 0 } ) self:registerAnimationState( "highlighted", { red = 0, green = 0, blue = 0, alpha = 1 } ) self:animateToState( "default", 0 ) local f46_local1 = LobbyMemberIsBot( f46_arg0, f46_arg1, f46_arg2 ) if not (Lobby.ShowMemberInfo( f46_arg0, f46_arg1, f46_arg2 ) or f46_local1) or not f46_arg3 then self:animateToState( "hidden", 0 ) end if f46_local1 then self:setText( "BOT" ) else self:setText( f46_arg4 ) end self:registerEventHandler( "button_over", MBh.DoMultiple( { HandleLobbyMemberUpdateSetFocused, HandleLobbyMemberUpdateClantag } ) ) self:registerEventHandler( "button_up", MBh.DoMultiple( { HandleLobbyMemberUpdateSetNotFocused, HandleLobbyMemberUpdateClantag } ) ) self:registerEventHandler( "lobby_member_update_content", MBh.DoMultiple( { HandleLobbyMemberUpdateClantagProperties, HandleLobbyMemberUpdateClantag } ) ) return self end function buildMemberButtonReadyUpIndicator( f47_arg0, f47_arg1, f47_arg2, f47_arg3 ) local f47_local0 = -75 local f47_local1 = 6 local f47_local2 = 16 local f47_local3 = 16 local self = LUI.UIElement.new() self:registerAnimationState( "default", { topAnchor = true, bottomAnchor = false, leftAnchor = true, rightAnchor = false, top = f47_local1, bottom = f47_local1 + f47_local3, left = f47_local0, right = f47_local0 + f47_local2 } ) self:animateToState( "default", 0 ) local f47_local5 = GetReadyUpIndicatorStateString( f47_arg0, f47_arg1, f47_arg2 ) local f47_local6 = LUI.UIImage.new() f47_local6.id = "member_button_readyupindicatorframe_id" f47_local6.properties = { memberListState = f47_arg0, memberSlot = f47_arg1, team = f47_arg2 } f47_local6:registerAnimationState( "ready", { topAnchor = true, bottomAnchor = true, leftAnchor = true, rightAnchor = true, top = 0, bottom = 0, left = 0, right = 0, red = 0.5, green = 0.5, blue = 0.5, alpha = 1, alignment = LUI.Alignment.Center, material = RegisterMaterial( "box_empty" ) } ) f47_local6:registerAnimationState( "notready", { topAnchor = true, bottomAnchor = true, leftAnchor = true, rightAnchor = true, top = 0, bottom = 0, left = 0, right = 0, red = 0.5, green = 0.5, blue = 0.5, alpha = 1, alignment = LUI.Alignment.Center, material = RegisterMaterial( "box_empty" ) } ) f47_local6:registerAnimationState( "hidden", { alpha = 0 } ) f47_local6:animateToState( f47_local5, 0 ) f47_local6:registerEventHandler( "lobby_member_update_content", MBh.DoMultiple( { HandleLobbyMemberUpdateReadyUpFlagProperties, HandleLobbyMemberUpdateReadyUpFlag } ) ) self:addElement( f47_local6 ) local f47_local7 = LUI.UIImage.new() f47_local7.id = "member_button_readyupindicatorcenter_id" f47_local7.properties = { memberListState = f47_arg0, memberSlot = f47_arg1, team = f47_arg2 } f47_local7:registerAnimationState( "ready", { topAnchor = true, bottomAnchor = true, leftAnchor = true, rightAnchor = true, top = 4, bottom = -4, left = 4, right = -4, red = 1, green = 0.24, blue = 0.04, alpha = 0.85, alignment = LUI.Alignment.Center, material = RegisterMaterial( "white" ) } ) f47_local7:registerAnimationState( "notready", { topAnchor = true, bottomAnchor = true, leftAnchor = true, rightAnchor = true, top = 4, bottom = -4, left = 4, right = -4, red = 0.5, green = 0.5, blue = 0.5, alpha = 0, alignment = LUI.Alignment.Center } ) f47_local7:registerAnimationState( "hidden", { alpha = 0 } ) f47_local7:animateToState( f47_local5, 0 ) f47_local7:registerEventHandler( "lobby_member_update_content", MBh.DoMultiple( { HandleLobbyMemberUpdateReadyUpFlagProperties, HandleLobbyMemberUpdateReadyUpFlag } ) ) self:addElement( f47_local7 ) return self end function buildMemberButtonGamertag( f48_arg0, f48_arg1, f48_arg2, f48_arg3 ) local self = LUI.UIText.new() self.id = "member_button_gamertag_id" self.properties = { memberListState = f48_arg0, memberSlot = f48_arg1, team = f48_arg2, isFocused = false } self:registerAnimationState( "default", { topAnchor = false, bottomAnchor = false, leftAnchor = true, rightAnchor = false, top = -1 * CoD.TextSettings.SmallFont.Height * 0.5, bottom = CoD.TextSettings.SmallFont.Height * 0.5, left = 145, right = 445, font = CoD.TextSettings.SmallFont.Font, red = 1, green = 1, blue = 1 } ) self:registerAnimationState( "local", { red = Engine.IsAliensMode() and Colors.alien_frontend_hilite.r or Colors.frontend_hilite.r, green = Engine.IsAliensMode() and Colors.alien_frontend_hilite.g or Colors.frontend_hilite.g, blue = Engine.IsAliensMode() and Colors.alien_frontend_hilite.b or Colors.frontend_hilite.b } ) self:registerAnimationState( "party", { red = Lobby.Swatch.party_member.r, green = Lobby.Swatch.party_member.g, blue = Lobby.Swatch.party_member.b } ) self:registerAnimationState( "highlighted", { red = 0, green = 0, blue = 0 } ) self:animateToState( "default", 0 ) if not LobbyMemberIsBot( f48_arg0, f48_arg1, f48_arg2 ) then local f48_local1 = Lobby.IsMemberALocalPlayer( f48_arg0, f48_arg1, f48_arg2 ) local f48_local2 = Lobby.IsMemberInPrivateParty( f48_arg0, f48_arg1, f48_arg2 ) if f48_local1 then self:animateToState( "local", 0 ) elseif f48_local2 then self:animateToState( "party", 0 ) end end self:setText( f48_arg3 ) self:registerEventHandler( "lobby_member_update_content", MBh.DoMultiple( { HandleLobbyMemberUpdateGamertagProperties, HandleLobbyMemberUpdateGamertag, HandleLobbyMemberUpdateGamertagColor } ) ) self:registerEventHandler( "button_over", MBh.DoMultiple( { HandleLobbyMemberUpdateSetFocused, HandleLobbyMemberUpdateGamertagColor } ) ) self:registerEventHandler( "button_up", MBh.DoMultiple( { HandleLobbyMemberUpdateSetNotFocused, HandleLobbyMemberUpdateGamertagColor } ) ) return self end function buildMemberButtonScore( f49_arg0, f49_arg1, f49_arg2, f49_arg3 ) local self = LUI.UIText.new() self.id = "member_button_score_id" self.properties = { memberListState = f49_arg0, memberSlot = f49_arg1, team = f49_arg2 } self:registerAnimationState( "default", { topAnchor = false, bottomAnchor = false, leftAnchor = true, rightAnchor = false, top = -1 * CoD.TextSettings.SmallFont.Height * 0.5, bottom = CoD.TextSettings.SmallFont.Height * 0.5, left = 460, right = 540, font = CoD.TextSettings.SmallFont.Font, alignment = LUI.Alignment.Right, red = 1, green = 1, blue = 1, alpha = 1 } ) self:registerAnimationState( "hidden", { alpha = 0 } ) self:registerAnimationState( "highlighted", { red = 0, green = 0, blue = 0, alpha = 1 } ) self:animateToState( "default" ) if not f0_local1( f49_arg0, f49_arg1, f49_arg2 ) then self:animateToState( "hidden" ) end self:setText( f49_arg3 ) self:registerEventHandler( "button_over", MBh.DoMultiple( { HandleLobbyMemberUpdateSetFocused, HandleLobbyMemberUpdateScoreVisibility } ) ) self:registerEventHandler( "button_up", MBh.DoMultiple( { HandleLobbyMemberUpdateSetNotFocused, HandleLobbyMemberUpdateScoreVisibility } ) ) self:registerEventHandler( "lobby_member_update_content", MBh.DoMultiple( { HandleLobbyMemberUpdateScoreProperties, HandleLobbyMemberUpdateScore, HandleLobbyMemberUpdateScoreVisibility } ) ) return self end function buildMemberButtonContent( f50_arg0, f50_arg1, f50_arg2, f50_arg3, f50_arg4, f50_arg5, f50_arg6, f50_arg7, f50_arg8, f50_arg9, f50_arg10, f50_arg11 ) local self = LUI.UIElement.new() self.id = "member_button_content_id" self:registerAnimationState( "default", { topAnchor = true, bottomAnchor = true, leftAnchor = true, rightAnchor = true, top = 0, bottom = 0, left = 0, right = 0, alpha = 1, spacing = 3 } ) self:registerAnimationState( "glow", { alpha = 0.65 } ) self:registerAnimationState( "disabled", { alpha = 0 } ) self:animateToState( "default" ) self:registerEventHandler( "button_disable", MBh.AnimateToState( "disabled", 0 ) ) self:registerEventHandler( "button_up", MBh.AnimateToState( "default", 0 ) ) self:registerEventHandler( "button_over", MBh.AnimateToState( "default", 0 ) ) self:addElement( buildMemberButtonRankElement( f50_arg0, f50_arg1, f50_arg2, f50_arg3, f50_arg4, f50_arg5, f50_arg11 ) ) if Engine.IsAliensMode() then self:addElement( buildMemberButtonReadyUpIndicator( f50_arg0, f50_arg1, f50_arg2, f50_arg10 ) ) end self:addElement( buildMemberButtonClantag( f50_arg0, f50_arg1, f50_arg2, f50_arg6, f50_arg7 ) ) self:addElement( buildMemberButtonGamertag( f50_arg0, f50_arg1, f50_arg2, f50_arg8 ) ) self:addElement( buildMemberButtonScore( f50_arg0, f50_arg1, f50_arg2, f50_arg9 ) ) return self end function buildMemberButtonTeamBorder( f51_arg0, f51_arg1, f51_arg2, f51_arg3, f51_arg4 ) local self = LUI.UIImage.new() self.properties = { memberListState = f51_arg0, team = f51_arg2, isActiveMemberSlot = f51_arg3 } self:registerAnimationState( "default", { topAnchor = true, bottomAnchor = true, leftAnchor = true, rightAnchor = true, top = 0, bottom = 0, left = 0, right = 0, material = RegisterMaterial( f51_arg4 ), red = 1, green = 1, blue = 1, alpha = 0 } ) self:registerAnimationState( "team_friendly", { red = Lobby.Swatch.allies.r, green = Lobby.Swatch.allies.g, blue = Lobby.Swatch.allies.b, alpha = 1 } ) self:registerAnimationState( "team_enemy", { red = Lobby.Swatch.axis.r, green = Lobby.Swatch.axis.g, blue = Lobby.Swatch.axis.b, alpha = 1 } ) self:animateToState( "default", 0 ) local f51_local1 = LobbyMemberGetLocalPlayerTeam( f51_arg0 ) if f51_arg0 == Lobby.MemberListStates.Teams and f51_arg2 == otherTeamLookup[f51_local1] then self:animateToState( "team_enemy", 0 ) elseif f51_arg0 == Lobby.MemberListStates.Teams and f51_arg2 == f51_local1 then self:animateToState( "team_friendly", 0 ) end self:registerEventHandler( "button_disable", MBh.AnimateToState( "default", 0 ) ) self:registerEventHandler( "button_up", HandleLobbyMemberSetBackgroundBorder ) self:registerEventHandler( "lobby_member_update_bg", MBh.DoMultiple( { HandleLobbyMemberUpdateBackgroundProperties, HandleLobbyMemberSetBackgroundBorder } ) ) return self end function buildMemberButtonHilite( f52_arg0 ) local self = LUI.UIImage.new() self:registerAnimationState( "default", { topAnchor = true, bottomAnchor = true, leftAnchor = true, rightAnchor = true, top = 0, bottom = 0, left = 0, right = 0, material = RegisterMaterial( f52_arg0 ), red = 1, green = 1, blue = 1, alpha = 1 } ) self:registerAnimationState( "fade", { alpha = 0.7 } ) self:animateToState( "default", 0 ) local f52_local1 = MBh.AnimateLoop( { { "fade", 1200, true, true }, { "default", 1200, true, true } } ) f52_local1( self ) return self end f0_local2 = function ( f53_arg0, f53_arg1 ) local f53_local0 = f53_arg0:getChildById( f53_arg1 ) if f53_local0 then f53_local0:close() end end local f0_local3 = function ( f54_arg0, f54_arg1, f54_arg2, f54_arg3 ) if f54_arg0:getChildById( f54_arg2 ) then return end local f54_local0 = f54_arg0:getChildById( f54_arg1 ) local f54_local1 = buildMemberButtonHilite( f54_arg3 ) f54_local1.id = f54_arg2 if f54_local0 then LUI.UIElement.addElementAfter( f54_local1, f54_local0 ) else f54_arg0:addElement( f54_local1 ) end end function HandleLobbyMemberMidButtonUp( f55_arg0, f55_arg1 ) f0_local2( f55_arg0, "member_button_mid_bg_hilite_id" ) end function HandleLobbyMemberMidButtonOver( f56_arg0, f56_arg1 ) f0_local3( f56_arg0, "member_button_mid_bg_id", "member_button_mid_bg_hilite_id", Engine.IsAliensMode() and "box_alien_lobby_name_mid_f" or "box_lobby_name_f_mid" ) end function HandleLobbyMemberLeftButtonUp( f57_arg0, f57_arg1 ) f0_local2( f57_arg0, "member_button_lt_bg_hilite_id" ) end function HandleLobbyMemberLeftButtonOver( f58_arg0, f58_arg1 ) f0_local3( f58_arg0, "member_button_lt_bg_id", "member_button_lt_bg_hilite_id", Engine.IsAliensMode() and "box_alien_lobby_name_lt_f" or "box_lobby_name_f_lt" ) end function HandleLobbyMemberRightButtonUp( f59_arg0, f59_arg1 ) f0_local2( f59_arg0, "member_button_rt_bg_hilite_id" ) end function HandleLobbyMemberRightButtonOver( f60_arg0, f60_arg1 ) f0_local3( f60_arg0, "member_button_rt_bg_id", "member_button_rt_bg_hilite_id", Engine.IsAliensMode() and "box_alien_lobby_name_rt_f" or "box_lobby_name_f_rt" ) end function HandleLobbyMemberSetBackground( f61_arg0, f61_arg1 ) if f61_arg0.properties.isActiveMemberSlot then f61_arg0:animateToState( "default", 0 ) else f61_arg0:animateToState( "disabled", 0 ) end end function HandleLobbyMemberSetBackgroundBorder( f62_arg0, f62_arg1 ) local f62_local0 = f62_arg0.properties local f62_local1 = LobbyMemberGetLocalPlayerTeam( f62_local0.memberListState ) if f62_local0.memberListState == Lobby.MemberListStates.Teams and f62_local0.team == otherTeamLookup[f62_local1] then f62_arg0:animateToState( "team_enemy", 0 ) elseif f62_local0.memberListState == Lobby.MemberListStates.Teams and f62_local0.team == f62_local1 then f62_arg0:animateToState( "team_friendly", 0 ) else f62_arg0:animateToState( "default", 0 ) end end function HandleLobbyMemberUpdateBackgroundProperties( f63_arg0, f63_arg1 ) f63_arg0.properties.memberListState = f63_arg1.memberListState f63_arg0.properties.team = f63_arg1.team f63_arg0.properties.isActiveMemberSlot = f63_arg1.isActiveMemberSlot end function HandleUpdatePerkIcon( f64_arg0, f64_arg1, f64_arg2, f64_arg3 ) local f64_local0 = LUI.mp_menus.Aliens local f64_local1 = Lobby.GetMemberPerk( f64_arg1.memberSlot, f64_arg2 ) if f64_local1 then local f64_local2 = f64_local0.GetFieldForPerk( f64_local1, f64_local0.AlienPerks.Cols.Icon ) if f64_local2 and f64_local2 ~= "" then f64_arg0:setImage( RegisterMaterial( f64_local2 ) ) if f64_arg3 and Engine.InLobby() and LUI.mp_menus.Aliens.IsChaosEnabled() then f64_arg0:animateToState( "collapsed" ) else f64_arg0:animateToState( "visible" ) end else f64_arg0:animateToState( "default" ) end else f64_arg0:animateToState( "default" ) end end function HandleUpdateAbilityIcon( f65_arg0, f65_arg1, f65_arg2, f65_arg3 ) local f65_local0 = LUI.mp_menus.Aliens local f65_local1 = Lobby.GetMemberAbility( f65_arg1.memberSlot, f65_arg2 ) local f65_local2 = LUI.mp_menus.Aliens.IsChaosEnabled() if f65_local1 then local f65_local3 = f65_local0.GetFieldForAbility( f65_local1, f65_local0.AlienAbilities.Cols.Icon ) if f65_local3 and f65_local3 ~= "" then if f65_local2 and f65_local3 == "alien_icon_nerf_9" and f65_arg2 == f65_local0.AlienAbilities.Left then f65_local3 = "alien_icon_manned_turret" elseif f65_local2 and f65_local3 == "alien_icon_nerf_9" and f65_arg2 == f65_local0.AlienAbilities.Right then f65_local3 = "alien_icon_ims" end f65_arg0:setImage( RegisterMaterial( f65_local3 ) ) if f65_arg3 and Engine.InLobby() and LUI.mp_menus.Aliens.IsChaosEnabled() then f65_arg0:animateToState( "collapsed" ) else f65_arg0:animateToState( "visible" ) end else f65_arg0:animateToState( "default" ) end else f65_arg0:animateToState( "default" ) end end function HandleLobbyMemberUpdateSplitscreenPromptAliens( f66_arg0, f66_arg1 ) local f66_local0 = f66_arg0.properties if LobbyMemberIsSplitscreenPrompt( f66_arg1.memberListState or f66_local0.memberListState, f66_local0.memberIndex ) or f66_arg1.isActiveMemberSlot == false then f66_arg0:animateToState( "default", 0 ) else f66_arg0:animateToState( "visible", 0 ) end end function DispatchSvSPlayercardUpdate( f67_arg0, f67_arg1 ) if not UsingSvSPlayercards( f67_arg0.properties.memberListState ) then return end local f67_local0 = f67_arg0:getParent() if f67_local0 then f67_local0:processEvent( { name = "update_svs_playercards", controller = f67_arg1.controller } ) end end function UpdateSvSPlayercard( f68_arg0, f68_arg1 ) if f68_arg0.properties.memberElement.properties.isActiveMemberSlot then f68_arg0:animateToState( "active", 0 ) local f68_local0 = f68_arg0.properties.memberElement local f68_local1 = f68_local0.properties.memberListState local f68_local2 = f68_local0.properties.memberSlot local f68_local3 = f68_local0.properties.team local f68_local4 = Lobby.GetMemberName( f68_local1, f68_local2, f68_local3 ) or "" local f68_local5 = Lobby.GetMemberRank( f68_local1, f68_local2, f68_local3 ) or 0 local f68_local6 = Lobby.GetMemberPrestigeLevel( f68_local1, f68_local2, f68_local3 ) or 0 local f68_local7 = Lobby.GetMemberPatch( f68_local1, f68_local2, f68_local3 ) or 0 local f68_local8 = Lobby.GetMemberPatchbacking( f68_local1, f68_local2, f68_local3 ) or 0 f68_arg0:dispatchEventToChildren( { name = "update_playercard", gamertag = f68_local4, rank = f68_local5, prestige = f68_local6, patchEmblem = f68_local7, background = Lobby.GetMemberBackground( f68_local1, f68_local2, f68_local3 ) or 0, clantag = Lobby.GetMemberClanTag( f68_local1, f68_local2, f68_local3 ) or "" } ) else f68_arg0:animateToState( "default", 0 ) end end function SqauadVsSquadElementChildFeeder( f69_arg0 ) local f69_local0 = f69_arg0.memberElement local f69_local1 = f69_local0.properties.memberListState local f69_local2 = f69_local0.properties.memberSlot local f69_local3 = f69_local0.properties.team local f69_local4 = { [#f69_local4 + 1] = { type = "UIImage", id = "svs_member_list_bg_id", states = { default = CoD.ColorizeState( Colors.black, { material = RegisterMaterial( "white" ), leftAnchor = true, rightAnchor = true, topAnchor = true, bottomAnchor = false, left = -28, right = 23, top = 0, bottom = 170, alpha = 0.2 } ) } }, [#f69_local4 + 1] = { type = "UIElement", id = "svs_memberlist_playercard_container_id", states = { default = { topAnchor = true, bottomAnchor = false, leftAnchor = true, rightAnchor = false, top = 0, bottm = 0, left = 25, right = 0 } }, children = { { type = "playercard", id = "svs_member_list_playercard_id", states = { default = { topAnchor = true, bottomAnchor = false, leftAnchor = true, rightAnchor = false, top = 25, left = 25, height = 90, width = 100 } }, properties = { gamertag = Lobby.GetMemberName( f69_local1, f69_local2, f69_local3 ) or "", rank = Lobby.GetMemberRank( f69_local1, f69_local2, f69_local3 ) or 0, prestige = Lobby.GetMemberPrestigeLevel( f69_local1, f69_local2, f69_local3 ) or 0, patchEmblem = Lobby.GetMemberPatch( f69_local1, f69_local2, f69_local3 ) or 0, patchbacking = Lobby.GetMemberPatchbacking( f69_local1, f69_local2, f69_local3 ) or 0, background = Lobby.GetMemberBackground( f69_local1, f69_local2, f69_local3 ) or 0, clantag = Lobby.GetMemberClanTag( f69_local1, f69_local2, f69_local3 ) or "" } } } } } return f69_local4 end function BuildSquadVsSquadListElement( f70_arg0, f70_arg1, f70_arg2 ) return { type = "UIElement", id = "svs_member_list_element_id" .. f70_arg1, focusable = false, states = { default = { leftAnchor = true, rightAnchor = true, topAnchor = true, bottomAnchor = false, left = 0, right = -10, top = 0, bottom = 115, alpha = 0 }, active = { alpha = 1 } }, properties = { memberElement = f70_arg0 }, handlers = { menu_create = UpdateSvSPlayercard, update_svs_playercards = UpdateSvSPlayercard }, childrenFeeder = SqauadVsSquadElementChildFeeder } end function MemberListFeeder( f71_arg0 ) local f71_local0 = {} assert( f71_arg0.memberListState, "Member list needs initial state" ) local f71_local1 = f71_arg0.isPublicLobby local f71_local2 = f71_arg0.isPrivateLobby local f71_local3 = LobbyMemberListGetState( f71_arg0.memberListState ) local f71_local4 = Engine.IsAliensMode() and 4 or Lobby.MaxMemberListSlots for f71_local5 = 1, f71_local4, 1 do local f71_local8 = LobbyMemberGetSlot( f71_local3, f71_local5 ) local f71_local9 = LobbyMemberGetTeam( f71_local3, f71_local5 ) local f71_local10 if not f71_arg0.delayMemberList or f71_local5 <= 1 then f71_local10 = Lobby.IsActiveMemberSlot( f71_local5 - 1 ) if not f71_local10 then else local f71_local11 = f71_local10 local f71_local12 = Engine.IsAliensMode() if f71_local12 then f71_local12 = f71_local11 and Lobby.GetMemberReadyUpFlag( f71_local3, f71_local8, f71_local9 ) end local f71_local13 if f71_local10 then f71_local13 = Lobby.GetMemberName( f71_local3, f71_local8, f71_local9 ) if not f71_local13 then else local f71_local14 if f71_local10 then f71_local14 = Lobby.GetMemberStat( f71_local3, f71_local8, f71_local9, Lobby.MemberStatTypes.Score ) if not f71_local14 then else local f71_local15 = nil if Engine.IsAliensMode() then if f71_local10 then local f71_local16 = Lobby.GetMemberAlienRank( f71_local3, f71_local8, f71_local9 ) end f71_local15 = f71_local16 or 0 else if f71_local10 then local f71_local17 = Lobby.GetMemberRank( f71_local3, f71_local8, f71_local9 ) end f71_local15 = f71_local17 or 0 end local f71_local18 if f71_local10 then f71_local18 = Rank.GetRankDisplay( f71_local15, Engine.GetCurrentCoDPlayMode() ) if not f71_local18 then else local f71_local19 = nil if Engine.IsAliensMode() then if f71_local10 then local f71_local20 = Lobby.GetMemberAlienPrestigeLevel( f71_local3, f71_local8, f71_local9 ) end f71_local19 = f71_local20 or 0 else if f71_local10 then local f71_local21 = Lobby.GetMemberPrestigeLevel( f71_local3, f71_local8, f71_local9 ) end f71_local19 = f71_local21 or 0 end local f71_local22 if f71_local10 then f71_local22 = Rank.GetRankIcon( f71_local15, f71_local19, Engine.GetCurrentCoDPlayMode() ) if not f71_local22 then else if not f71_local10 or not Lobby.GetMemberBotDifficulty( f71_local3, f71_local8, f71_local9 ) then local f71_local23 = 1 end local f71_local24 = "white" local f71_local25 = false local f71_local26 = "" if f71_local10 and Lobby.HasMemberClanTag( f71_local3, f71_local8, f71_local9 ) then f71_local26 = Lobby.GetMemberClanTag( f71_local3, f71_local8, f71_local9 ) f71_local25 = true end local f71_local27 = LobbyMemberIsSplitscreenPrompt( f71_local3, f71_local5 ) local f71_local28 if f71_local10 then f71_local28 = Lobby.IsMemberALocalPlayer( f71_local3, f71_local8, f71_local9 ) if not f71_local28 then else local f71_local29 = { type = "member_button", properties = { isPublicLobby = f71_local1, isPrivateLobby = f71_local2, memberListState = f71_local3, memberIndex = f71_local5, memberSlot = f71_local8, team = f71_local9, isActiveMemberSlot = f71_local10, memberRank = f71_local18, memberRankIcon = RegisterMaterial( f71_local22 ), memberBotDifficultyIcon = RegisterMaterial( f71_local24 ), memberReadyUpFlag = f71_local12, gamerTag = f71_local13, score = f71_local14, hasClanTag = f71_local25, clanTag = f71_local26, isSplitscreenPrompt = f71_local27, isLocalMember = f71_local28 } } if LobbyMemberButtonShouldBeDisabled( f71_local3, f71_local5, f71_local10 ) then f71_local29.disabled = true end if not f71_local10 or f71_local27 then f71_local29.focusable = false end if UsingSvSPlayercards( f71_local3 ) and f71_local5 <= 2 then f71_local0[#f71_local0 + 1] = BuildSquadVsSquadListElement( f71_local29, f71_local5, f71_local10 ) end f71_local29.id = "member_" .. f71_local5 f71_local0[#f71_local0 + 1] = f71_local29 end end f71_local28 = false end end f71_local22 = "white" end end f71_local18 = "" end end f71_local14 = "" end end f71_local13 = "" end end f71_local10 = false end f71_local0[#f71_local0 + 1] = { type = "UITimer", id = "member_list_tmr", properties = { event = { name = "member_list_refresh", dispatchChildren = true }, interval = Lobby.MemberListRefreshTime, disposable = false, broadcastToRoot = true } } return f71_local0 end function GetSquadBackgroundSize( f72_arg0 ) local f72_local0 = Lobby.MemberListSquadMemberHeight local f72_local1 = GetMemberListSpacing() local f72_local2 = 110 local f72_local3 = SvS.MaxSquadSize * (f72_local0 + f72_local1) if f72_arg0 == Lobby.Teams.Axis then f72_local3 = f72_local3 + f72_local2 + f72_local1 * 2 end return f72_local3 end function UpdateLocalSquadHeader( f73_arg0, f73_arg1, f73_arg2, f73_arg3 ) local f73_local0 = f73_arg2:getParent() == f73_arg0 if f73_arg1 and not f73_local0 then LUI.UIElement.addElementBefore( f73_arg2, f73_arg3 ) elseif not f73_arg1 and f73_local0 then f73_arg0:removeElement( f73_arg2 ) end end function UpdateSquadHeaders( f74_arg0, f74_arg1 ) f74_arg0.properties.memberListState = LobbyMemberListGetState( f74_arg0.properties.memberListState ) if not f74_arg0.properties.localSquadHeader then return end local f74_local0 = f74_arg0.properties.firstLocalSquadMember if f74_local0 then UpdateLocalSquadHeader( f74_arg0, true, f74_arg0.properties.localSquadHeader, f74_local0 ) else UpdateLocalSquadHeader( f74_arg0, false, f74_arg0.properties.localSquadHeader ) end local f74_local1 = f74_arg0.properties.firstOpposingSquadMember if f74_local1 and (f74_local1.properties.team ~= Lobby.Teams.Axis or not f74_local1.properties.isActiveMemberSlot) then f74_local1 = nil f74_arg0.properties.firstOpposingSquadMember = nil end if f74_arg0.properties and f74_arg0.properties.opposingSquadHeaderElements then if f74_local1 then for f74_local5, f74_local6 in ipairs( f74_arg0.properties.opposingSquadHeaderElements ) do UpdateLocalSquadHeader( f74_arg0, true, f74_local6, f74_local1 ) end else for f74_local5, f74_local6 in ipairs( f74_arg0.properties.opposingSquadHeaderElements ) do UpdateLocalSquadHeader( f74_arg0, false, f74_local6 ) end end end end function BuildSquadHeader( f75_arg0 ) local self = LUI.UIElement.new( { leftAnchor = true, rightAnchor = true, topAnchor = true, bottomAnchor = false, left = -26, right = 10, top = 0, height = GenericTitleBarDims.TitleBarHeight + 3, alpha = 1 } ) local f75_local1 = LUI.MenuGenerics.generic_menu_titlebar( nil, { font = CoD.TextSettings.ExtraBigFont, title_bar_text = f75_arg0.text or "", title_bar_alignment = LUI.Alignment.Center, fill_alpha = 0.6 } ) f75_local1:registerEventHandler( "set_squad_header_text", function ( element, event ) element:dispatchEventToChildren( { name = "update_title", title_text = Engine.Localize( "@LUA_MENU_SQUAD_LABEL", event.text ) } ) end ) self:addElement( f75_local1 ) local f75_local2 = LUI.MenuGenerics.generic_menu_background_withfade( {}, { top_offset = 0, shadow_alpha = 0, fill_alpha = 0.6 } ) local f75_local3 = f75_local2 local f75_local4 = f75_local2.registerAnimationState local f75_local5 = "default" local f75_local6 = { topAnchor = true, bottomAnchor = false, leftAnchor = true, rightAnchor = true, top = GenericTitleBarDims.TitleBarHeight, left = 0, right = 0 } local f75_local7 = GetSquadBackgroundSize local f75_local8 = f75_arg0.team if not f75_local8 then f75_local8 = Lobby.Teams.Free end f75_local6.height = f75_local7( f75_local8 ) f75_local4( f75_local3, f75_local5, f75_local6 ) f75_local2:animateToState( "default" ) self:addElement( f75_local2 ) return self end function BuildOpposingSquadHeaderElements() local f77_local0 = { [#f77_local0 + 1] = LUI.UIElement.new( { leftAnchor = true, rightAnchor = true, topAnchor = true, bottomAnchor = false, left = -55, right = 40, top = 0, bottom = 10, alpha = 0 } ), [#f77_local0 + 1] = BuildSquadHeader( { text = "", team = Lobby.Teams.Axis } ), [#f77_local0 + 1] = LUI.UIElement.new( { leftAnchor = true, rightAnchor = true, topAnchor = true, bottomAnchor = false, left = 0, right = 0, top = 0, bottom = 5, alpha = 0 } ) } local self = LUI.UIElement.new( { topAnchor = true, bottomAnchor = false, leftAnchor = true, rightAnchor = false, top = 0, left = 45, height = 103, width = 512 } ) f77_local0[#f77_local0 + 1] = self self:addElement( LUI.Playercard.new( nil, { gamertag = "", clantag = "", rank = 0, prestige = 0, background = "0", patchEmblem = "0", patchShape = "0", patchScale = -0.15 }, 0 ) ) return f77_local0 end function SetupSquadHeaders( f78_arg0, f78_arg1 ) f78_arg0.properties.localSquadHeader = BuildSquadHeader( { team = Lobby.Teams.Allies } ) f78_arg0.properties.opposingSquadHeaderElements = BuildOpposingSquadHeaderElements() end function UpdateSquadMember( f79_arg0, f79_arg1 ) if f79_arg0.properties.memberListState ~= Lobby.MemberListStates.Teams and f79_arg0.properties.memberListState ~= Lobby.MemberListStates.Lobby then return elseif f79_arg1.team == Lobby.Teams.Axis then if not f79_arg0.properties.firstOpposingSquadMember then local f79_local0 = Squad.GetEnemySquadName() local f79_local1 = Lobby.GetMemberName( f79_arg1.memberListState, f79_arg1.memberSlot, f79_arg1.team ) or "" local f79_local2 = Lobby.GetMemberRank( f79_arg1.memberListState, f79_arg1.memberSlot, f79_arg1.team ) or 0 local f79_local3 = Lobby.GetMemberPrestigeLevel( f79_arg1.memberListState, f79_arg1.memberSlot, f79_arg1.team ) or 0 local f79_local4 = Lobby.GetMemberPatch( f79_arg1.memberListState, f79_arg1.memberSlot, f79_arg1.team ) or 0 local f79_local5 = Lobby.GetMemberPatchbacking( f79_arg1.memberListState, f79_arg1.memberSlot, f79_arg1.team ) or 0 local f79_local6 = Lobby.GetMemberBackground( f79_arg1.memberListState, f79_arg1.memberSlot, f79_arg1.team ) or 0 local f79_local7 = Lobby.GetMemberClanTag( f79_arg1.memberListState, f79_arg1.memberSlot, f79_arg1.team ) or "" if f79_arg0.properties and f79_arg0.properties.opposingSquadHeaderElements then for f79_local11, f79_local12 in ipairs( f79_arg0.properties.opposingSquadHeaderElements ) do f79_local12:processEvent( { name = "set_squad_header_text", text = Engine.MarkLocalized( f79_local0 ) } ) f79_local12:processEvent( { name = "update_playercard", gamertag = f79_local1, rank = f79_local2, prestige = f79_local3, patchEmblem = f79_local4, background = f79_local6, clantag = f79_local7 } ) end end f79_arg0.properties.firstOpposingSquadMember = f79_arg1.playerElement end else if not f79_arg0.properties.firstLocalSquadMember then local f79_local0 = Engine.GetFirstActiveController() f79_arg0.properties.firstLocalSquadMember = f79_arg1.playerElement end if f79_arg0.properties.localSquadHeader then f79_arg0.properties.localSquadHeader:processEvent( { name = "set_squad_header_text", text = Engine.MarkLocalized( Squad.GetHostSquadName() ) } ) end end end function member_list() return { type = "UIVerticalList", id = "member_list", focusable = true, states = { default = { alignment = LUI.Alignment.Top, leftAnchor = true, rightAnchor = false, topAnchor = true, bottomAnchor = false, left = 640, right = 1190, top = GenericMenuDims.menu_top + 26, bottom = GenericMenuDims.menu_bottom, spacing = Engine.IsAliensMode() and 6 or 2 } }, properties = { memberListState = MBh.Property( "memberListState" ) }, handlers = { update_squad_member = UpdateSquadMember, menu_create = SetupSquadHeaders, member_list_refresh = UpdateSquadHeaders, refocus_member_list = HandleRefocusMemberList, menu_close = function ( f81_arg0, f81_arg1 ) f81_arg0.properties.firstLocalSquadMember = nil f81_arg0.properties.firstOpposingSquadMember = nil end }, childrenFeeder = MemberListFeeder } end if Engine.IsConsoleGame() then function GetTalkIconState( f82_arg0, f82_arg1, f82_arg2 ) if Lobby.IsMemberMuted( f82_arg0, f82_arg1, f82_arg2 ) then return "muted" elseif not Lobby.IsMemberHeadsetConnected( f82_arg0, f82_arg1, f82_arg2 ) then return "disabled" elseif Lobby.IsMemberTalking( f82_arg0, f82_arg1, f82_arg2 ) then return "talking" else return "quiet" end end else function GetTalkIconState( f83_arg0, f83_arg1, f83_arg2 ) if Lobby.IsMemberMuted( f83_arg0, f83_arg1, f83_arg2 ) then return "muted" elseif Lobby.IsMemberTalking( f83_arg0, f83_arg1, f83_arg2 ) then return "talking" else return "disabled" end end end function HandleTalkIconUpdate( f84_arg0, f84_arg1 ) f84_arg0:animateToState( GetTalkIconState( f84_arg1.memberListState, f84_arg1.memberSlot, f84_arg1.team ), 0 ) end function member_button( f85_arg0, f85_arg1, f85_arg2 ) local f85_local0 = LUI.mp_menus.Aliens local f85_local1 = Lobby.MemberListMemberHeight if SvS.IsSvS() then f85_local1 = Lobby.MemberListSquadMemberHeight end local f85_local2 = 0.5 local f85_local3 = Engine.IsAliensMode() local f85_local4 = f85_arg1.isPublicLobby or false local f85_local5 = f85_arg1.isPrivateLobby or false local f85_local6 = f85_arg1.isActiveMemberSlot or false local f85_local7 = f85_arg1.memberReadyUpFlag or false local f85_local8 = f85_arg1.gamerTag or "" local f85_local9 = f85_arg1.score or "" local f85_local10 = f85_arg1.clanTag or "" local f85_local11 = f85_arg1.hasClanTag or false local f85_local12 = f85_arg1.memberRank or "" local f85_local13 = f85_arg1.memberRankIcon if not f85_local13 then f85_local13 = RegisterMaterial( "white" ) end local f85_local14 = f85_arg1.memberBotDifficultyIcon if not f85_local14 then f85_local14 = RegisterMaterial( "white" ) end local f85_local15 = f85_arg1.memberListState if not f85_local15 then f85_local15 = Lobby.MemberListStates.None end local f85_local16 = f85_arg1.memberIndex or 1 local f85_local17 = f85_arg1.memberSlot or 0 local f85_local18 = f85_arg1.team if not f85_local18 then f85_local18 = Teams.free end local f85_local19 = f85_arg1.isSplitscreenPrompt or false local f85_local20 = f85_arg1.isLocalMember or false local self = LUI.UIButton.new() self.id = "member_button_id" self.properties = { isActiveMemberSlot = f85_local6, memberIndex = f85_local16, team = f85_local18, isPublicLobby = f85_local4, isPrivateLobby = f85_local5, isSplitscreenPrompt = f85_local19, memberListState = f85_local15 } self:registerAnimationState( "default", { leftAnchor = true, rightAnchor = true, topAnchor = true, bottomAnchor = false, left = -55, right = 0, top = 0, bottom = f85_local1, alpha = 1 } ) self:registerAnimationState( "hidden", { alpha = 0 } ) if not (not f85_local6 and ((f85_local15 == Lobby.MemberListStates.Prelobby) or not Lobby.IsSearching() or f85_local16 > Lobby.GetMemberCount( f85_local15, Teams.free ) or HideEmptyLobbySlots( f85_local15 ))) or f85_local19 then self:animateToState( "default", 0 ) else self:animateToState( "hidden", 0 ) end self:registerEventHandler( "menu_create", MBh.DoMultiple( { HandleLobbyMemberButtonIsActive, HandleLobbyMemberButtonIsDisabled } ) ) self:registerEventHandler( "member_list_refresh", MBh.DoMultiple( { HandleLobbyMemberButtonRefresh, HandleLobbyMemberButtonIsActive, HandleLobbyMemberButtonIsDisabled, DispatchSvSPlayercardUpdate } ) ) self:registerEventHandler( "popup_inactive", function ( menu, controller ) local self = LUI.UITimer.new( 70, { name = "member_list_refresh" }, nil, true, menu, false ) self.id = "member_button_popup_restore_timer_id" menu:addElement( self ) LUI.UIButton.popupInactive( menu, controller ) end ) self:registerEventHandler( "button_action", HandleLobbyMemberButtonAction ) self:registerEventHandler( "button_over", MBh.DoMultiple( { HandleLobbyMemberUpdateSetFocused, HandleLobbyMemberButtonOver } ) ) self:registerEventHandler( "button_up", HandleLobbyMemberUpdateSetNotFocused ) self:registerEventHandler( "restore_focus", HandleLobbyMemberRestoreFocus ) local f85_local22 = LUI.UITimer.new( 250, { name = "member_list_refresh" }, nil, true, memberButtonSplitscreenPrompt, false ) f85_local22.id = "member_button_initial_timer_id" self:addElement( f85_local22 ) local f85_local23 = LUI.UIText.new() f85_local23.id = "member_button_ss_prompt_id" f85_local23.properties = { memberListState = f85_local15, memberIndex = f85_local16 } f85_local23:registerAnimationState( "default", { topAnchor = false, bottomAnchor = false, leftAnchor = true, rightAnchor = false, top = -1 * CoD.TextSettings.SmallFont.Height * 0.5, bottom = CoD.TextSettings.SmallFont.Height * 0.5, left = 74, right = 625, font = CoD.TextSettings.SmallFont.Font, alignment = LUI.Alignment.Left, alpha = 1 } ) f85_local23:registerAnimationState( "hidden", { alpha = 0 } ) f85_local23:animateToState( "default", 0 ) if not f85_local19 then f85_local23:animateToState( "hidden", 0 ) else f85_local23:setText( Lobby.GetNonPlayingLocalClientText( f85_local16 - 1 ) ) end f85_local23:registerEventHandler( "lobby_member_update_ss_prompt", HandleLobbyMemberUpdateSplitscreenPrompt ) self:addElement( f85_local23 ) local f85_local24 = LUI.UIHorizontalList.new() f85_local24.id = "member_button_list_id" f85_local24:registerAnimationState( "default", { topAnchor = true, bottomAnchor = false, leftAnchor = true, rightAnchor = false, top = 0, bottom = f85_local1, left = 0, right = 611, alpha = 1 } ) f85_local24:animateToState( "default", 0 ) local f85_local25 = LUI.UIImage.new() f85_local25.id = "member_button_talk_icon_id" f85_local25:registerAnimationState( "default", { topAnchor = true, bottomAnchor = false, leftAnchor = true, rightAnchor = false, top = 0, bottom = 33, left = 0, right = 33, material = RegisterMaterial( "icon_online_chat_quiet" ), alpha = 0 } ) f85_local25:registerAnimationState( "disabled", { alpha = 0 } ) f85_local25:registerAnimationState( "talking", { alpha = 1, material = RegisterMaterial( "icon_online_chat" ) } ) f85_local25:registerAnimationState( "muted", { alpha = 1, material = RegisterMaterial( "icon_online_chat_mute" ) } ) f85_local25:registerAnimationState( "quiet", { alpha = 1, material = RegisterMaterial( "icon_online_chat_quiet" ) } ) f85_local25:animateToState( "default", 0 ) f85_local25:animateToState( GetTalkIconState( f85_local15, f85_local17, f85_local18 ), 0 ) f85_local25:registerEventHandler( "lobby_member_update_content", HandleTalkIconUpdate ) f85_local25:registerEventHandler( "button_disable", MBh.AnimateToState( "disabled", 0 ) ) f85_local24:addElement( f85_local25 ) local f85_local26 = LUI.UIElement.new() f85_local26.id = "member_button_lt_id" f85_local26:registerAnimationState( "default", { topAnchor = true, bottomAnchor = true, leftAnchor = true, rightAnchor = false, top = 0, bottom = 0, left = 0, right = 26 } ) f85_local26:animateToState( "default", 0 ) f85_local26:registerEventHandler( "button_up", HandleLobbyMemberLeftButtonUp ) f85_local26:registerEventHandler( "button_over", HandleLobbyMemberLeftButtonOver ) local f85_local27 = LUI.UIImage.new() f85_local27.id = "member_button_lt_bg_id" f85_local27.properties = { memberListState = f85_local15, team = f85_local18, isActiveMemberSlot = f85_local6 } f85_local27:registerAnimationState( "default", { topAnchor = true, bottomAnchor = true, leftAnchor = true, rightAnchor = true, top = 0, bottom = 0, left = 0, right = 0, material = RegisterMaterial( "box_lobby_name_lt" ), red = 1, green = 1, blue = 1, alpha = f85_local2 } ) f85_local27:registerAnimationState( "disabled", { alpha = 0.25 } ) f85_local27:animateToState( "default", 0 ) f85_local27:registerEventHandler( "button_disable", MBh.AnimateToState( "disabled", 0 ) ) f85_local27:registerEventHandler( "button_up", HandleLobbyMemberSetBackground ) f85_local27:registerEventHandler( "lobby_member_update_bg", MBh.DoMultiple( { HandleLobbyMemberUpdateBackgroundProperties, HandleLobbyMemberSetBackground } ) ) local f85_local28 = buildMemberButtonTeamBorder( f85_local15, f85_local17, f85_local18, f85_local6, "box_lobby_name_match_lt" ) f85_local28.id = "member_button_lt_bg_border_id" local f85_local29 = LUI.UIImage.new() f85_local29.id = "member_button_party_host_id" f85_local29.properties = { memberListState = f85_local15, memberSlot = f85_local17, team = f85_local18 } f85_local29:registerAnimationState( "default", { topAnchor = false, bottomAnchor = true, leftAnchor = true, rightAnchor = false, top = -16, bottom = 0, left = 0, right = 16, material = RegisterMaterial( "icon_party_leader" ), red = 1, green = 1, blue = 1, alpha = 0 } ) f85_local29:registerAnimationState( "shown", { alpha = 1 } ) f85_local29:animateToState( "default", 0 ) if Lobby.ShowMemberPrivatePartyHostIcon( f85_local15, f85_local17, f85_local18 ) then f85_local29:animateToState( "shown", 0 ) end f85_local29:registerEventHandler( "lobby_member_update_content", MBh.DoMultiple( { HandleLobbyMemberUpdateHostIconProperties, HandleLobbyMemberShowHostIcon } ) ) f85_local29:registerEventHandler( "button_disable", MBh.AnimateToState( "default", 0 ) ) local f85_local30 = LUI.UIImage.new() f85_local30.id = "member_button_elite_icon_id" f85_local30.properties = { memberListState = f85_local15, memberSlot = f85_local17, team = f85_local18 } f85_local30:registerAnimationState( "default", { topAnchor = true, bottomAnchor = false, leftAnchor = true, rightAnchor = false, top = 2, bottom = 14, left = 3, right = 29, material = RegisterMaterial( "widg_arrow_dn" ), red = 0.33, green = 0.71, blue = 0.23, alpha = 0 } ) f85_local30:registerAnimationState( "visible", { alpha = 1 } ) f85_local30:animateToState( "default", 0 ) if ShouldShowEliteIcon( f85_local15, f85_local17, f85_local18 ) then f85_local30:animateToState( "visible", 0 ) end f85_local30:registerEventHandler( "lobby_member_update_content", MBh.DoMultiple( { HandleLobbyMemberUpdateEliteIconProperties, HandleLobbyMemberUpdateEliteIcon } ) ) f85_local30:registerEventHandler( "button_disable", MBh.AnimateToState( "default", 0 ) ) f85_local26:addElement( f85_local27 ) f85_local26:addElement( f85_local28 ) f85_local26:addElement( f85_local29 ) f85_local26:addElement( f85_local30 ) f85_local24:addElement( f85_local26 ) local f85_local31 = LUI.UIElement.new() f85_local31.id = "member_button_mid_id" f85_local31:registerAnimationState( "default", { topAnchor = true, bottomAnchor = true, leftAnchor = true, rightAnchor = false, top = 0, bottom = 0, left = 0, right = 544 } ) f85_local31:animateToState( "default" ) f85_local31:registerEventHandler( "button_up", HandleLobbyMemberMidButtonUp ) f85_local31:registerEventHandler( "button_over", HandleLobbyMemberMidButtonOver ) local f85_local32 = LUI.UIImage.new() f85_local32.id = "member_button_mid_bg_id" f85_local32.properties = { memberListState = f85_local15, team = f85_local18, isActiveMemberSlot = f85_local6 } f85_local32:registerAnimationState( "default", { topAnchor = true, bottomAnchor = true, leftAnchor = true, rightAnchor = true, top = 0, bottom = 0, left = 0, right = 0, material = RegisterMaterial( "box_lobby_name_mid" ), red = 1, green = 1, blue = 1, alpha = f85_local2 } ) f85_local32:registerAnimationState( "disabled", { alpha = 0.25 } ) f85_local32:animateToState( "default", 0 ) f85_local32:registerEventHandler( "button_disable", MBh.AnimateToState( "disabled", 0 ) ) f85_local32:registerEventHandler( "button_up", HandleLobbyMemberSetBackground ) f85_local32:registerEventHandler( "lobby_member_update_bg", MBh.DoMultiple( { HandleLobbyMemberUpdateBackgroundProperties, HandleLobbyMemberSetBackground } ) ) local f85_local33 = buildMemberButtonTeamBorder( f85_local15, f85_local17, f85_local18, f85_local6, "box_lobby_name_match_mid" ) f85_local33.id = "member_button_mid_bg_border_id" f85_local31:addElement( f85_local32 ) f85_local31:addElement( f85_local33 ) f85_local31:addElement( buildMemberButtonContent( f85_local15, f85_local17, f85_local18, f85_local12, f85_local13, f85_local14, f85_local11, f85_local10, f85_local8, f85_local9, f85_local7, f85_local5 ) ) f85_local24:addElement( f85_local31 ) local f85_local34 = LUI.UIElement.new() f85_local34.id = "member_button_rt_id" f85_local34:registerAnimationState( "default", { topAnchor = true, bottomAnchor = true, leftAnchor = true, rightAnchor = false, top = 0, bottom = 0, left = 0, right = 8 } ) f85_local34:animateToState( "default", 0 ) f85_local34:registerEventHandler( "button_up", HandleLobbyMemberRightButtonUp ) f85_local34:registerEventHandler( "button_over", HandleLobbyMemberRightButtonOver ) local f85_local35 = LUI.UIImage.new() f85_local35.id = "member_button_rt_bg_id" f85_local35.properties = { memberListState = f85_local15, team = f85_local18, isActiveMemberSlot = f85_local6 } f85_local35:registerAnimationState( "default", { topAnchor = true, bottomAnchor = true, leftAnchor = true, rightAnchor = true, top = 0, bottom = 0, left = 0, right = 0, material = RegisterMaterial( "box_lobby_name_rt" ), red = 1, green = 1, blue = 1, alpha = f85_local2 } ) f85_local35:registerAnimationState( "disabled", { alpha = 0.25 } ) f85_local35:animateToState( "default", 0 ) f85_local35:registerEventHandler( "button_disable", MBh.AnimateToState( "disabled", 0 ) ) f85_local35:registerEventHandler( "button_up", HandleLobbyMemberSetBackground ) f85_local35:registerEventHandler( "lobby_member_update_bg", MBh.DoMultiple( { HandleLobbyMemberUpdateBackgroundProperties, HandleLobbyMemberSetBackground } ) ) local f85_local36 = buildMemberButtonTeamBorder( f85_local15, f85_local17, f85_local18, f85_local6, "box_lobby_name_match_rt" ) f85_local36.id = "member_button_rt_bg_border_id" f85_local34:addElement( f85_local35 ) f85_local34:addElement( f85_local36 ) f85_local24:addElement( f85_local34 ) if Engine.IsAliensMode() then local f85_local37 = LUI.UIImage.new() f85_local37.id = "member_button_alien_splat_id" f85_local37:registerAnimationState( "default", { material = RegisterMaterial( "box_alien_lobby_name_overlay" ), topAnchor = true, bottomAnchor = true, leftAnchor = true, rightAnchor = true, top = -20, bottom = 20, left = 40, right = 24, alpha = 0 } ) f85_local37:animateToState( "default" ) f85_local37:registerAnimationState( "glow", { alpha = 1 } ) f85_local37:registerEventHandler( "button_up", MBh.AnimateToState( "default" ) ) f85_local37:registerEventHandler( "button_disable", MBh.AnimateToState( "default" ) ) f85_local37:registerEventHandler( "button_over_disable", MBh.AnimateToState( "default" ) ) f85_local37:registerEventHandler( "button_over", MBh.AnimateLoop( { { "glow", 1200 }, { "default", 1200 } } ) ) self:addElement( f85_local37 ) end self:addElement( f85_local24 ) if f85_local5 then local f85_local37 = LUI.UIImage.new() f85_local37.id = "MLGTag" f85_local37:registerAnimationState( "default", { material = RegisterMaterial( "icon_mlg_cam" ), alignment = LUI.Alignment.Left, topAnchor = true, bottomAnchor = false, leftAnchor = true, rightAnchor = false, left = 80, top = 6, width = 32, height = 16, alpha = 0 } ) f85_local37:animateToState( "default" ) f85_local37:registerAnimationState( "visible", { alpha = 1 } ) f85_local37:registerAnimationState( "dark", { red = 0, green = 0, blue = 0 } ) f85_local37:registerAnimationState( "light", { red = 1, green = 1, blue = 1 } ) f85_local37:registerEventHandler( "button_over", MBh.AnimateToState( "dark" ) ) f85_local37:registerEventHandler( "button_up", MBh.AnimateToState( "light" ) ) f85_local37:registerEventHandler( "lobby_member_update_content", function ( element, event ) if Lobby.IsMemberMLGSpectator( f85_local17, Lobby.IsMemberALocalPlayer( event.memberListState, event.memberSlot, event.team ) and Lobby.GetMemberControllerIndex( event.memberListState, event.memberSlot, event.team ) or Engine.GetFirstActiveController() ) then element:animateToState( "visible" ) else element:animateToState( "default" ) end end ) self:addElement( f85_local37 ) end if f85_local3 and not f85_local19 then local f85_local37 = 32 local f85_local38 = LUI.UIImage.new() f85_local38.id = "debugelem" f85_local38.properties = { memberListState = f85_local15, memberIndex = f85_local16 } f85_local38:registerAnimationState( "default", { material = RegisterMaterial( "box_white_gradient_fade_rt" ), leftAnchor = true, rightAnchor = true, topAnchor = true, bottomAnchor = false, left = 0, right = 4, top = f85_local1 + 1, bottom = f85_local1 + f85_local0.AliensMemberListSpacing + 1, red = 1, green = 1, blue = 1, alpha = 0 } ) f85_local38:registerAnimationState( "visible", { alpha = 0.1 } ) f85_local38:registerEventHandler( "lobby_member_update_ss_prompt", HandleLobbyMemberUpdateSplitscreenPromptAliens ) f85_local38:animateToState( "default" ) self:addElement( f85_local38 ) local f85_local39 = LUI.UIHorizontalList.new() f85_local39.id = "loadout_list_id" f85_local39.properties = { memberListState = f85_local15, memberIndex = f85_local16 } f85_local39:registerAnimationState( "default", { alignment = LUI.Alignment.Right, leftAnchor = true, rightAnchor = true, topAnchor = true, bottomAnchor = false, left = 0, right = 0, top = f85_local1 + 1, bottom = f85_local1 + f85_local0.AliensMemberListSpacing + 1, spacing = 10, alpha = 0 } ) f85_local39:registerAnimationState( "visible", { alpha = 1 } ) f85_local39:registerEventHandler( "lobby_member_update_ss_prompt", HandleLobbyMemberUpdateSplitscreenPromptAliens ) f85_local39:animateToState( "default" ) self:addElement( f85_local39 ) local f85_local40 = { material = RegisterMaterial( "white" ), leftAnchor = false, rightAnchor = true, topAnchor = true, bottomAnchor = true, left = -f85_local37, right = 0, top = 0, bottom = 0, red = 1, green = 1, blue = 1, alpha = 0 } local f85_local41 = { leftAnchor = false, rightAnchor = true, topAnchor = true, bottomAnchor = true, left = 0, right = 0, top = 0, bottom = 0 } local f85_local42 = { leftAnchor = false, rightAnchor = true, topAnchor = true, bottomAnchor = true, left = -f85_local37, right = 0, top = 0, bottom = 0, alpha = 1 } local f85_local43 = LUI.UIImage.new() f85_local43.id = "perk0_icon" f85_local43:registerAnimationState( "default", f85_local40 ) f85_local43:registerAnimationState( "collapsed", f85_local41 ) f85_local43:registerAnimationState( "visible", f85_local42 ) f85_local43:registerEventHandler( "lobby_member_update_content", function ( element, event ) HandleUpdatePerkIcon( element, event, 0, true ) end ) f85_local43:animateToState( "default" ) local f85_local44 = LUI.UIImage.new() f85_local44.id = "perk1_icon" f85_local44:registerAnimationState( "default", f85_local40 ) f85_local44:registerAnimationState( "collapsed", f85_local41 ) f85_local44:registerAnimationState( "visible", f85_local42 ) f85_local44:registerEventHandler( "lobby_member_update_content", function ( element, event ) HandleUpdatePerkIcon( element, event, 1, true ) end ) f85_local44:animateToState( "default" ) local f85_local45 = LUI.UIImage.new() f85_local45.id = "munitions_elem" f85_local45:registerAnimationState( "default", f85_local40 ) f85_local45:registerAnimationState( "collapsed", f85_local41 ) f85_local45:registerAnimationState( "visible", f85_local42 ) f85_local45:registerEventHandler( "lobby_member_update_content", function ( element, event ) HandleUpdateAbilityIcon( element, event, f85_local0.AlienAbilities.Up, true ) end ) f85_local45:animateToState( "default" ) local f85_local46 = LUI.UIImage.new() f85_local46.id = "support_elem" f85_local46:registerAnimationState( "default", f85_local40 ) f85_local46:registerAnimationState( "collapsed", f85_local41 ) f85_local46:registerAnimationState( "visible", f85_local42 ) f85_local46:registerEventHandler( "lobby_member_update_content", function ( element, event ) HandleUpdateAbilityIcon( element, event, f85_local0.AlienAbilities.Down, true ) end ) f85_local46:animateToState( "default" ) local f85_local47 = LUI.UIImage.new() f85_local47.id = "offense_elem" f85_local47:registerAnimationState( "default", f85_local40 ) f85_local47:registerAnimationState( "collapsed", f85_local41 ) f85_local47:registerAnimationState( "visible", f85_local42 ) f85_local47:registerEventHandler( "lobby_member_update_content", function ( element, event ) HandleUpdateAbilityIcon( element, event, f85_local0.AlienAbilities.Right, false ) end ) f85_local47:animateToState( "default" ) local f85_local48 = LUI.UIImage.new() f85_local48.id = "defense_elem" f85_local48:registerAnimationState( "default", f85_local40 ) f85_local48:registerAnimationState( "collapsed", f85_local41 ) f85_local48:registerAnimationState( "visible", f85_local42 ) f85_local48:registerEventHandler( "lobby_member_update_content", function ( element, event ) HandleUpdateAbilityIcon( element, event, f85_local0.AlienAbilities.Left, false ) end ) f85_local48:animateToState( "default" ) f85_local39:addElement( f85_local48 ) f85_local39:addElement( f85_local47 ) f85_local39:addElement( f85_local46 ) f85_local39:addElement( f85_local45 ) f85_local39:addElement( f85_local44 ) f85_local39:addElement( f85_local43 ) end return self end LUI.MenuBuilder.registerDef( "member_list", member_list ) LUI.MenuBuilder.registerType( "member_button", member_button ) LockTable( _M )