2761 lines
79 KiB
Lua
2761 lines
79 KiB
Lua
local f0_local0 = module
|
|
local f0_local1, f0_local2 = ...
|
|
f0_local0( f0_local1, package.seeall )
|
|
CoD.PrintModuleLoad( _NAME )
|
|
function StartChallenge( f1_arg0, f1_arg1 )
|
|
local f1_local0, f1_local1 = f1_arg1( f1_arg0 )
|
|
if f1_local0 ~= -1 and f1_local1 ~= -1 and Playlist.DoAction( f1_local0, f1_local1, false, false ) then
|
|
Squad.StartMatch( f1_arg0, false )
|
|
Engine.SetDvarBool( "squad_find_match", true )
|
|
LUI.FlowManager.RequestAddMenu( nil, "menu_xboxlive_lobby", false, f1_arg0, false, {} )
|
|
end
|
|
end
|
|
|
|
function ChallengeFriend( f2_arg0 )
|
|
StartChallenge( f2_arg0, Squad.FightFriend )
|
|
end
|
|
|
|
function ChallengeRecentPlayer( f3_arg0 )
|
|
StartChallenge( f3_arg0, Squad.FightRecentPlayer )
|
|
end
|
|
|
|
function ChallengeLivePartyPlayer( f4_arg0 )
|
|
StartChallenge( f4_arg0, Squad.FightLivePartyPlayer )
|
|
end
|
|
|
|
function popup_elite_clan_updating()
|
|
return {
|
|
type = "live_dialog_text_box",
|
|
id = "popup_elite_clan_updating_id",
|
|
properties = {
|
|
message = Engine.Localize( "@MENU_FACEBOOK_UPLOADING" )
|
|
}
|
|
}
|
|
end
|
|
|
|
function popup_update_clan_finished()
|
|
local f6_local0
|
|
if Engine.MarkLocalized( Engine.GetDvarString( "elite_clan_single_task_popup_text" ) ) == Engine.Localize( "MENU_CLAN_CREATED" ) then
|
|
f6_local0 = Engine.Localize( "PATCH_MENU_CONGRATULATIONS" )
|
|
if not f6_local0 then
|
|
|
|
else
|
|
return {
|
|
type = "generic_confirmation_popup",
|
|
id = "popup_update_clan_finished",
|
|
properties = {
|
|
popup_title = f6_local0,
|
|
message_text = Engine.GetDvarString( "elite_clan_single_task_popup_text" ),
|
|
confirmation_action = function ( f7_arg0, f7_arg1 )
|
|
LUI.FlowManager.RequestLeaveMenu( f7_arg0, true )
|
|
end
|
|
|
|
},
|
|
handlers = {
|
|
menu_close = function ( f8_arg0, f8_arg1 )
|
|
f8_arg0:dispatchEventToRoot( {
|
|
name = "close_actions",
|
|
immediate = true
|
|
} )
|
|
f8_arg0:dispatchEventToRoot( {
|
|
name = "friends_refresh",
|
|
forceRefresh = true
|
|
} )
|
|
end
|
|
|
|
}
|
|
}
|
|
end
|
|
end
|
|
f6_local0 = Engine.Localize( "@MENU_NOTICE" )
|
|
end
|
|
|
|
function popup_friend_invite_sent()
|
|
return {
|
|
type = "generic_confirmation_popup",
|
|
properties = {
|
|
popup_title = Engine.Localize( "@MENU_POPUP_INVITE_SENT" ),
|
|
message_text = Engine.Localize( "@MENU_POPUP_INVITE_SENT" ),
|
|
dialog_top = -100,
|
|
dialog_bottom = 100
|
|
}
|
|
}
|
|
end
|
|
|
|
function popup_confirm_report()
|
|
return {
|
|
type = "generic_confirmation_popup",
|
|
id = "popup_confirm_report",
|
|
properties = {
|
|
popup_title = Engine.Localize( "@MENU_NOTICE" ),
|
|
message_text = "",
|
|
dialog_top = -100,
|
|
dialog_bottom = 100
|
|
}
|
|
}
|
|
end
|
|
|
|
function ReportPopupFeeder( f11_arg0 )
|
|
local f11_local0 = {
|
|
{
|
|
text = "@MENU_REPORT_OFFENSIVE",
|
|
confirmationString = "@MENU_REPORT_OFFENSIVE_SUBMIT",
|
|
offense = Friends.Constants.reportOffensiveLobbyPlayer
|
|
},
|
|
{
|
|
text = "@MENU_REPORT_EXPLOITING",
|
|
confirmationString = "@MENU_REPORT_EXPLOITING_SUBMIT",
|
|
offense = Friends.Constants.reportExploitingLobbyPlayer
|
|
},
|
|
{
|
|
text = "@MENU_REPORT_CHEATING",
|
|
confirmationString = "@MENU_REPORT_CHEATING_SUBMIT",
|
|
offense = Friends.Constants.reportCheatingLobbyPlayer
|
|
},
|
|
{
|
|
text = "@MENU_REPORT_BOOSTING",
|
|
confirmationString = "@MENU_REPORT_BOOSTING_SUBMIT",
|
|
offense = Friends.Constants.reportBoostingLobbyPlayer
|
|
}
|
|
}
|
|
local f11_local1 = {}
|
|
for f11_local5, f11_local6 in ipairs( f11_local0 ) do
|
|
f11_local1[#f11_local1 + 1] = {
|
|
type = "UIGenericButton",
|
|
id = "offense_" .. f11_local5,
|
|
properties = {
|
|
style = GenericButtonSettings.Styles.GlassButton,
|
|
substyle = GenericButtonSettings.Styles.GlassButton.SubStyles.Popup,
|
|
button_text = Engine.Localize( f11_local6.text ),
|
|
button_action_func = function ( f12_arg0, f12_arg1 )
|
|
LUI.FlowManager.RequestLeaveMenu( f12_arg0 )
|
|
f11_arg0.reportFunction( f12_arg1.controller, f11_local6.offense )
|
|
f11_arg0.confirmationAction( f12_arg0, f12_arg1, Engine.Localize( f11_local6.confirmationString ) )
|
|
end
|
|
}
|
|
}
|
|
end
|
|
return f11_local1
|
|
end
|
|
|
|
function popup_friend_report()
|
|
return {
|
|
type = "generic_selectionList_popup",
|
|
id = "popup_friend_report",
|
|
properties = {
|
|
popup_title = Engine.Localize( "@MENU_REPORT_PLAYER" ),
|
|
popup_childfeeder = ReportPopupFeeder,
|
|
friendIndex = 0,
|
|
confirmationAction = function ( f14_arg0, f14_arg1, f14_arg2 )
|
|
LUI.FlowManager.RequestPopupMenu( f14_arg0, "popup_confirm_report", true, controller, false, {
|
|
message_text = f14_arg2
|
|
} )
|
|
end
|
|
,
|
|
additional_handlers = {
|
|
kill_friends_list = MBh.LeaveMenu()
|
|
}
|
|
},
|
|
states = {
|
|
default = {
|
|
leftAnchor = true,
|
|
rightAnchor = true,
|
|
topAnchor = true,
|
|
bottomAnchor = true,
|
|
left = 0,
|
|
right = 0,
|
|
top = 0,
|
|
bottom = 0
|
|
}
|
|
}
|
|
}
|
|
end
|
|
|
|
function popup_kick_are_you_sure()
|
|
return {
|
|
type = "generic_yesno_popup",
|
|
id = "popup_kick_are_you_sure",
|
|
properties = {
|
|
popup_title = Engine.Localize( "@MENU_NOTICE" ),
|
|
message_text = Engine.Localize( "@LUA_MENU_CLAN_KICK_ARE_YOU_SURE" ),
|
|
yes_text = Engine.Localize( "@LUA_MENU_YES" ),
|
|
no_text = Engine.Localize( "@LUA_MENU_CANCEL" ),
|
|
yes_action = function ( f16_arg0, f16_arg1 )
|
|
Clan.KickMemberFromClan( f16_arg1.controller )
|
|
end
|
|
,
|
|
additional_handlers = {
|
|
kill_friends_list = MBh.LeaveMenu()
|
|
}
|
|
}
|
|
}
|
|
end
|
|
|
|
function ChangeStatusFeeder()
|
|
local f17_local0 = {
|
|
[#f17_local0 + 1] = {
|
|
type = "UIGenericButton",
|
|
id = "member_status_coleader",
|
|
properties = {
|
|
style = GenericButtonSettings.Styles.GlassButton,
|
|
substyle = GenericButtonSettings.Styles.GlassButton.SubStyles.Popup,
|
|
text = Engine.Localize( "@CLANS_STATUS_COLEADER" ),
|
|
button_action_func = function ( f18_arg0, f18_arg1 )
|
|
Clan.SetToCoLeader( f18_arg1.controller )
|
|
end,
|
|
button_over_func = function ( f19_arg0, f19_arg1 )
|
|
f19_arg0:dispatchEventToRoot( {
|
|
name = "update_member_status_desc",
|
|
text = Engine.Localize( "@CLANS_STATUS_COLEADER_DESC" )
|
|
} )
|
|
end
|
|
}
|
|
},
|
|
[#f17_local0 + 1] = {
|
|
type = "UIGenericButton",
|
|
id = "member_status_member",
|
|
properties = {
|
|
style = GenericButtonSettings.Styles.GlassButton,
|
|
substyle = GenericButtonSettings.Styles.GlassButton.SubStyles.Popup,
|
|
text = Engine.Localize( "@CLANS_STATUS_MEMBER" ),
|
|
button_action_func = function ( f20_arg0, f20_arg1 )
|
|
Clan.SetToClanMember( f20_arg1.controller )
|
|
end,
|
|
button_over_func = function ( f21_arg0, f21_arg1 )
|
|
f21_arg0:dispatchEventToRoot( {
|
|
name = "update_member_status_desc",
|
|
text = Engine.Localize( "@CLANS_STATUS_MEMBER_DESC" )
|
|
} )
|
|
end
|
|
}
|
|
},
|
|
[#f17_local0 + 1] = {
|
|
type = "UIElement",
|
|
id = "spacer",
|
|
states = {
|
|
default = {
|
|
leftAnchor = true,
|
|
rightAnchor = true,
|
|
topAnchor = true,
|
|
bottomAnchor = false,
|
|
left = 0,
|
|
right = 0,
|
|
top = 0,
|
|
bottom = 10
|
|
}
|
|
}
|
|
},
|
|
[#f17_local0 + 1] = {
|
|
type = "UIText",
|
|
id = "help_text",
|
|
properties = {
|
|
text = Engine.Localize( "@CLANS_STATUS_COLEADER_DESC" )
|
|
},
|
|
states = {
|
|
default = {
|
|
font = CoD.TextSettings.NormalFont.Font,
|
|
alignment = LUI.Alignment.Center,
|
|
leftAnchor = true,
|
|
rightAnchor = true,
|
|
topAnchor = true,
|
|
bottomAnchor = false,
|
|
left = 0,
|
|
right = 0,
|
|
top = 0,
|
|
bottom = CoD.TextSettings.NormalFont.Height,
|
|
red = 1,
|
|
green = 1,
|
|
blue = 1
|
|
}
|
|
},
|
|
handlers = {
|
|
update_member_status_desc = function ( f22_arg0, f22_arg1 )
|
|
f22_arg0:setText( f22_arg1.text or "" )
|
|
end
|
|
}
|
|
}
|
|
}
|
|
return f17_local0
|
|
end
|
|
|
|
function popup_change_status()
|
|
return {
|
|
type = "generic_selectionList_popup",
|
|
id = "popup_change_status_id",
|
|
properties = {
|
|
popup_title = Engine.Localize( "@CLANS_CHANGE_MEMBER_STATUS" ),
|
|
popup_childfeeder = ChangeStatusFeeder,
|
|
additional_handlers = {
|
|
kill_friends_list = MBh.LeaveMenu()
|
|
}
|
|
}
|
|
}
|
|
end
|
|
|
|
function popup_transfer_are_you_sure()
|
|
return {
|
|
type = "generic_yesno_popup",
|
|
id = "popup_transfer_are_you_sure_id",
|
|
properties = {
|
|
popup_title = Engine.Localize( "@MENU_NOTICE" ),
|
|
message_text = Engine.Localize( "@CLANS_TRANSFER_LEADERSHIP_CONFIRM" ),
|
|
yes_text = Engine.Localize( "@LUA_MENU_YES" ),
|
|
no_text = Engine.Localize( "@LUA_MENU_CANCEL" ),
|
|
yes_action = function ( f25_arg0, f25_arg1 )
|
|
Clan.TransferLeadership( f25_arg1.controller )
|
|
end
|
|
,
|
|
additional_handlers = {
|
|
kill_friends_list = MBh.LeaveMenu()
|
|
}
|
|
}
|
|
}
|
|
end
|
|
|
|
function popup_leave_are_you_sure()
|
|
return {
|
|
type = "generic_yesno_popup",
|
|
id = "popup_leave_are_you_sure_id",
|
|
properties = {
|
|
popup_title = Engine.Localize( "@MENU_NOTICE" ),
|
|
message_text = Engine.Localize( "@CLANS_LEAVE_CONFIRM" ),
|
|
yes_text = Engine.Localize( "@LUA_MENU_YES" ),
|
|
no_text = Engine.Localize( "@LUA_MENU_CANCEL" ),
|
|
yes_action = function ( f27_arg0, f27_arg1 )
|
|
Clan.LeaveClan( f27_arg1.controller )
|
|
if LUI.FlowManager.IsMenuInStack( f27_arg0:getRootParent(), "menu_barracks" ) then
|
|
LUI.FlowManager.RequestRestoreMenu( f27_arg0, "menu_barracks", true, f27_arg1.controller )
|
|
end
|
|
end
|
|
,
|
|
additional_handlers = {
|
|
kill_friends_list = MBh.LeaveMenu()
|
|
}
|
|
}
|
|
}
|
|
end
|
|
|
|
function popup_leave_leader_are_you_sure()
|
|
return {
|
|
type = "generic_yesno_popup",
|
|
id = "popup_leave_leader_are_you_sure_id",
|
|
properties = {
|
|
popup_title = Engine.Localize( "@MENU_WARNING" ),
|
|
message_text = Engine.Localize( "@CLANS_LEADER_LEAVE_CONFIRM" ),
|
|
yes_text = Engine.Localize( "@LUA_MENU_YES" ),
|
|
no_text = Engine.Localize( "@LUA_MENU_CANCEL" ),
|
|
yes_action = function ( f29_arg0, f29_arg1 )
|
|
Clan.LeaveClan( f29_arg1.controller )
|
|
if LUI.FlowManager.IsMenuInStack( f29_arg0:getRootParent(), "menu_barracks" ) then
|
|
LUI.FlowManager.RequestRestoreMenu( f29_arg0, "menu_barracks", true, f29_arg1.controller )
|
|
end
|
|
end
|
|
,
|
|
additional_handlers = {
|
|
kill_friends_list = MBh.LeaveMenu()
|
|
}
|
|
}
|
|
}
|
|
end
|
|
|
|
function popup_leave_leader_with_members()
|
|
return {
|
|
type = "generic_confirmation_popup",
|
|
id = "popup_leave_leader_with_members_id",
|
|
properties = {
|
|
popup_title = Engine.Localize( "@MENU_NOTICE" ),
|
|
message_text = Engine.Localize( "@CLANS_LEADER_CANT_LEAVE" ),
|
|
button_text = Engine.Localize( "@MENU_OK" ),
|
|
additional_handlers = {
|
|
kill_friends_list = MBh.LeaveMenu()
|
|
}
|
|
}
|
|
}
|
|
end
|
|
|
|
function GetFriendRequestLocString()
|
|
return Engine.Localize( Engine.IsXB3() and "LUA_MENU_FRIEND_FOLLOW" or "MENU_FRIEND_REQUEST" )
|
|
end
|
|
|
|
function LivePartyFriendActionsFeeder( f32_arg0, f32_arg1 )
|
|
local f32_local0 = {}
|
|
local f32_local1 = Engine.IsXbox360()
|
|
if not f32_local1 then
|
|
f32_local1 = Engine.IsXB3()
|
|
if not f32_local1 then
|
|
f32_local1 = Engine.IsPS4()
|
|
end
|
|
end
|
|
local f32_local2 = not Engine.InFrontend()
|
|
local f32_local3 = Engine.InLobby()
|
|
if Engine.IsMultiplayer() then
|
|
local f32_local4 = #f32_local0 + 1
|
|
local f32_local5 = {
|
|
type = "UIGenericButton",
|
|
id = "invite"
|
|
}
|
|
local f32_local6 = Friends.IsLivePartyLocal( f32_arg1.controller )
|
|
if not f32_local6 then
|
|
if Engine.GetDvarBool( "onlinegame" ) then
|
|
f32_local6 = isAliensSolo()
|
|
else
|
|
f32_local6 = true
|
|
end
|
|
end
|
|
f32_local5.disabled = f32_local6
|
|
f32_local6 = {
|
|
style = GenericButtonSettings.Styles.GlassButton,
|
|
substyle = GenericButtonSettings.Styles.GlassButton.SubStyles.Popup
|
|
}
|
|
local f32_local7
|
|
if f32_local2 or f32_local3 then
|
|
f32_local7 = Engine.Localize( "@MENU_INVITE_TO_GAME" )
|
|
if not f32_local7 then
|
|
|
|
else
|
|
f32_local6.button_text = f32_local7
|
|
f32_local6.button_action_func = function ( f33_arg0, f33_arg1 )
|
|
LUI.FlowManager.RequestLeaveMenu( f33_arg0 )
|
|
Friends.InviteLivePartyFriend( f33_arg1.controller )
|
|
end
|
|
|
|
f32_local5.properties = f32_local6
|
|
f32_local0[f32_local4] = f32_local5
|
|
end
|
|
end
|
|
f32_local7 = Engine.Localize( "@MENU_INVITE_TO_PARTY" )
|
|
end
|
|
local f32_local4 = #f32_local0 + 1
|
|
local f32_local5 = {
|
|
type = "UIGenericButton",
|
|
id = "join"
|
|
}
|
|
local f32_local6 = Friends.IsLivePartyLocal( f32_arg1.controller )
|
|
if not f32_local6 then
|
|
f32_local6 = not Engine.UserCanPlayOnline( f32_arg1.controller )
|
|
end
|
|
f32_local5.disabled = f32_local6
|
|
f32_local5.properties = {
|
|
style = GenericButtonSettings.Styles.GlassButton,
|
|
substyle = GenericButtonSettings.Styles.GlassButton.SubStyles.Popup,
|
|
button_text = Engine.Localize( "@MENU_JOIN_GAME" ),
|
|
button_action_func = function ( f34_arg0, f34_arg1 )
|
|
LUI.FlowManager.RequestLeaveMenu( f34_arg0 )
|
|
Friends.JoinLivePartyFriend( f34_arg1.controller )
|
|
end
|
|
}
|
|
f32_local0[f32_local4] = f32_local5
|
|
if Clan.IsEnabled() and Clan.CanISendInviteToLiveParty( f32_arg1.controller, f32_arg0.friendIndex ) and f32_local2 == false then
|
|
f32_local0[#f32_local0 + 1] = {
|
|
type = "UIGenericButton",
|
|
id = "clan_invite",
|
|
properties = {
|
|
style = GenericButtonSettings.Styles.GlassButton,
|
|
substyle = GenericButtonSettings.Styles.GlassButton.SubStyles.Popup,
|
|
button_text = Engine.Localize( "@LUA_MENU_CLAN_INVITE_TO_CLAN" ),
|
|
button_action_func = function ( f35_arg0, f35_arg1 )
|
|
if Engine.IsChatRestricted() then
|
|
LUI.FlowManager.RequestPopupMenu( f35_arg0, "user_generated_content_restriction_popup", true, f35_arg1.controller )
|
|
else
|
|
Clan.InviteLivePartyToClan( f35_arg1.controller )
|
|
end
|
|
end
|
|
}
|
|
}
|
|
end
|
|
if f32_local1 then
|
|
f32_local0[#f32_local0 + 1] = {
|
|
type = "UIGenericButton",
|
|
id = "profile",
|
|
properties = {
|
|
style = GenericButtonSettings.Styles.GlassButton,
|
|
substyle = GenericButtonSettings.Styles.GlassButton.SubStyles.Popup,
|
|
button_text = Engine.Localize( "@XBOXLIVE_VIEW_PROFILE" ),
|
|
button_action_func = function ( f36_arg0, f36_arg1 )
|
|
Friends.ShowLivePartyFriendGamercard( f36_arg1.controller )
|
|
end
|
|
}
|
|
}
|
|
end
|
|
f32_local0[#f32_local0 + 1] = {
|
|
type = "UIGenericButton",
|
|
id = "report",
|
|
disabled = Friends.IsLivePartyFriendMe( f32_arg1.controller, f32_arg0.friendIndex ),
|
|
properties = {
|
|
style = GenericButtonSettings.Styles.GlassButton,
|
|
substyle = GenericButtonSettings.Styles.GlassButton.SubStyles.Popup,
|
|
button_text = Engine.Localize( "@MENU_REPORT_PLAYER" ),
|
|
button_action_func = function ( f37_arg0, f37_arg1 )
|
|
LUI.FlowManager.RequestLeaveMenu( f37_arg0 )
|
|
LUI.FlowManager.RequestPopupMenu( f37_arg0, "popup_friend_report", true, f37_arg1.controller, false, {
|
|
friendIndex = f32_arg0.friendIndex,
|
|
reportFunction = Friends.ReportLivePartyFriend
|
|
} )
|
|
end
|
|
}
|
|
}
|
|
return f32_local0
|
|
end
|
|
|
|
function OnlineFriendActionsFeeder( f38_arg0, f38_arg1 )
|
|
local f38_local0 = {}
|
|
local f38_local1 = Engine.IsXbox360()
|
|
if not f38_local1 then
|
|
f38_local1 = Engine.IsXB3()
|
|
if not f38_local1 then
|
|
f38_local1 = Engine.IsPS4()
|
|
end
|
|
end
|
|
local f38_local2 = not Engine.InFrontend()
|
|
local f38_local3 = Engine.InLobby()
|
|
local f38_local4 = function ()
|
|
local f39_local0
|
|
if IsOnlineMatch() and Friends.IsFriendInvitable( f38_arg1.controller ) then
|
|
f39_local0 = isAliensSolo()
|
|
else
|
|
f39_local0 = true
|
|
end
|
|
return f39_local0
|
|
end
|
|
|
|
if Engine.IsMultiplayer() then
|
|
local f38_local5 = #f38_local0 + 1
|
|
local f38_local6 = {
|
|
type = "UIGenericButton",
|
|
id = "invite",
|
|
disabledFunc = f38_local4
|
|
}
|
|
local f38_local7 = {
|
|
style = GenericButtonSettings.Styles.GlassButton,
|
|
substyle = GenericButtonSettings.Styles.GlassButton.SubStyles.Popup
|
|
}
|
|
local f38_local8
|
|
if f38_local2 or f38_local3 then
|
|
f38_local8 = Engine.Localize( "@MENU_INVITE_TO_GAME" )
|
|
if not f38_local8 then
|
|
|
|
else
|
|
f38_local7.button_text = f38_local8
|
|
f38_local7.button_action_func = function ( f40_arg0, f40_arg1 )
|
|
LUI.FlowManager.RequestLeaveMenu( f40_arg0 )
|
|
Friends.InviteOnlineFriend( f40_arg1.controller )
|
|
end
|
|
|
|
f38_local6.properties = f38_local7
|
|
f38_local6.handlers = {
|
|
element_refresh = function ( f41_arg0, f41_arg1 )
|
|
if f38_local4() then
|
|
f41_arg0:processEvent( {
|
|
name = "disable"
|
|
} )
|
|
else
|
|
f41_arg0:processEvent( {
|
|
name = "enable"
|
|
} )
|
|
end
|
|
end
|
|
}
|
|
f38_local0[f38_local5] = f38_local6
|
|
end
|
|
end
|
|
f38_local8 = Engine.Localize( "@MENU_INVITE_TO_PARTY" )
|
|
end
|
|
if Engine.IsMultiplayer() or not Engine.IsPS4() and not Engine.IsXB3() and Engine.IsConsoleGame() then
|
|
local f38_local5 = function ()
|
|
local f42_local0
|
|
if Engine.UserCanPlayOnline( f38_arg1.controller ) then
|
|
f42_local0 = not Friends.IsFriendJoinable( f38_arg1.controller )
|
|
else
|
|
f42_local0 = true
|
|
end
|
|
return f42_local0
|
|
end
|
|
|
|
f38_local0[#f38_local0 + 1] = {
|
|
type = "UIGenericButton",
|
|
id = "join",
|
|
disabledFunc = f38_local5,
|
|
properties = {
|
|
style = GenericButtonSettings.Styles.GlassButton,
|
|
substyle = GenericButtonSettings.Styles.GlassButton.SubStyles.Popup,
|
|
button_text = Engine.Localize( "@MENU_JOIN_GAME" ),
|
|
button_action_func = function ( f43_arg0, f43_arg1 )
|
|
LUI.FlowManager.RequestLeaveMenu( f43_arg0 )
|
|
Friends.JoinOnlineFriend( f43_arg1.controller )
|
|
end
|
|
},
|
|
handlers = {
|
|
element_refresh = function ( f44_arg0, f44_arg1 )
|
|
if f38_local5() then
|
|
f44_arg0:processEvent( {
|
|
name = "disable"
|
|
} )
|
|
else
|
|
f44_arg0:processEvent( {
|
|
name = "enable"
|
|
} )
|
|
end
|
|
end
|
|
}
|
|
}
|
|
end
|
|
if Clan.IsEnabled() and Clan.CanISendInviteToFriend( f38_arg1.controller, f38_arg0.friendIndex ) and f38_local2 == false then
|
|
f38_local0[#f38_local0 + 1] = {
|
|
type = "UIGenericButton",
|
|
id = "clan_invite",
|
|
properties = {
|
|
style = GenericButtonSettings.Styles.GlassButton,
|
|
substyle = GenericButtonSettings.Styles.GlassButton.SubStyles.Popup,
|
|
button_text = Engine.Localize( "@LUA_MENU_CLAN_INVITE_TO_CLAN" ),
|
|
button_action_func = function ( f45_arg0, f45_arg1 )
|
|
if Engine.IsChatRestricted() then
|
|
LUI.FlowManager.RequestPopupMenu( f45_arg0, "user_generated_content_restriction_popup", true, f45_arg1.controller )
|
|
else
|
|
Clan.InviteFriendToClan( f45_arg1.controller )
|
|
end
|
|
end
|
|
}
|
|
}
|
|
end
|
|
local f38_local5 = function ()
|
|
return not Friends.CanShowFriendGamercard( f38_arg1.controller )
|
|
end
|
|
|
|
if f38_local1 then
|
|
f38_local0[#f38_local0 + 1] = {
|
|
type = "UIGenericButton",
|
|
id = "profile",
|
|
disabledFunc = f38_local5,
|
|
properties = {
|
|
style = GenericButtonSettings.Styles.GlassButton,
|
|
substyle = GenericButtonSettings.Styles.GlassButton.SubStyles.Popup,
|
|
button_text = Engine.Localize( "@XBOXLIVE_VIEW_PROFILE" ),
|
|
button_action_func = function ( f47_arg0, f47_arg1 )
|
|
Friends.ShowOnlineFriendGamercard( f47_arg1.controller )
|
|
end
|
|
},
|
|
handlers = {
|
|
element_refresh = function ( f48_arg0, f48_arg1 )
|
|
if f38_local5() then
|
|
f48_arg0:processEvent( {
|
|
name = "disable"
|
|
} )
|
|
else
|
|
f48_arg0:processEvent( {
|
|
name = "enable"
|
|
} )
|
|
end
|
|
end
|
|
}
|
|
}
|
|
end
|
|
f38_local0[#f38_local0 + 1] = {
|
|
type = "UIGenericButton",
|
|
id = "report",
|
|
properties = {
|
|
style = GenericButtonSettings.Styles.GlassButton,
|
|
substyle = GenericButtonSettings.Styles.GlassButton.SubStyles.Popup,
|
|
button_text = Engine.Localize( "@MENU_REPORT_PLAYER" ),
|
|
button_action_func = function ( f49_arg0, f49_arg1 )
|
|
LUI.FlowManager.RequestLeaveMenu( f49_arg0 )
|
|
LUI.FlowManager.RequestPopupMenu( f49_arg0, "popup_friend_report", true, f49_arg1.controller, false, {
|
|
friendIndex = f38_arg0.friendIndex,
|
|
reportFunction = Friends.ReportOnlineFriend
|
|
} )
|
|
end
|
|
}
|
|
}
|
|
return f38_local0
|
|
end
|
|
|
|
function popup_join_on_blocked_player_are_you_sure()
|
|
return {
|
|
type = "generic_yesno_popup",
|
|
id = "popup_join_on_blocked_player_are_you_sure",
|
|
properties = {
|
|
popup_title = Engine.Localize( "@MENU_NOTICE" ),
|
|
message_text = Engine.Localize( "@XBOXLIVE_JOIN_ON_BLOCKED_USER_CONFIRM" ),
|
|
yes_text = Engine.Localize( "@LUA_MENU_YES" ),
|
|
no_text = Engine.Localize( "@LUA_MENU_CANCEL" ),
|
|
yes_action = function ( f51_arg0, f51_arg1 )
|
|
Friends.JoinRecentPlayer( f51_arg1.controller )
|
|
end
|
|
,
|
|
additional_handlers = {
|
|
kill_friends_list = MBh.LeaveMenu()
|
|
}
|
|
}
|
|
}
|
|
end
|
|
|
|
function RecentPlayerActionsFeeder( f52_arg0, f52_arg1 )
|
|
local f52_local0 = {}
|
|
local f52_local1 = Engine.IsXbox360()
|
|
if not f52_local1 then
|
|
f52_local1 = Engine.IsXB3()
|
|
if not f52_local1 then
|
|
f52_local1 = Engine.IsPS4()
|
|
end
|
|
end
|
|
local f52_local2 = not Engine.InFrontend()
|
|
local f52_local3 = Engine.InLobby()
|
|
if Engine.IsConsoleGame() then
|
|
if Engine.IsMultiplayer() then
|
|
local f52_local4 = #f52_local0 + 1
|
|
local f52_local5 = {
|
|
type = "UIGenericButton",
|
|
id = "invite"
|
|
}
|
|
local f52_local6
|
|
if Engine.GetDvarBool( "onlinegame" ) then
|
|
f52_local6 = isAliensSolo()
|
|
else
|
|
f52_local6 = true
|
|
end
|
|
f52_local5.disabled = f52_local6
|
|
f52_local6 = {
|
|
style = GenericButtonSettings.Styles.GlassButton,
|
|
substyle = GenericButtonSettings.Styles.GlassButton.SubStyles.Popup
|
|
}
|
|
local f52_local7
|
|
if f52_local2 or f52_local3 then
|
|
f52_local7 = Engine.Localize( "@MENU_INVITE_TO_GAME" )
|
|
if not f52_local7 then
|
|
|
|
else
|
|
f52_local6.button_text = f52_local7
|
|
f52_local6.button_action_func = function ( f53_arg0, f53_arg1 )
|
|
LUI.FlowManager.RequestLeaveMenu( f53_arg0 )
|
|
Friends.InviteRecentPlayer( f53_arg1.controller )
|
|
end
|
|
|
|
f52_local5.properties = f52_local6
|
|
f52_local0[f52_local4] = f52_local5
|
|
end
|
|
end
|
|
f52_local7 = Engine.Localize( "@MENU_INVITE_TO_PARTY" )
|
|
end
|
|
f52_local0[#f52_local0 + 1] = {
|
|
type = "UIGenericButton",
|
|
id = "join",
|
|
disabled = not Engine.UserCanPlayOnline( f52_arg1.controller ),
|
|
properties = {
|
|
style = GenericButtonSettings.Styles.GlassButton,
|
|
substyle = GenericButtonSettings.Styles.GlassButton.SubStyles.Popup,
|
|
button_text = Engine.Localize( "@MENU_JOIN_GAME" ),
|
|
button_action_func = function ( f54_arg0, f54_arg1 )
|
|
if Engine.IsXB3() and Friends.IsUserInBlockList( f54_arg1.controller ) then
|
|
LUI.FlowManager.RequestPopupMenu( f54_arg0, "popup_join_on_blocked_player_are_you_sure", true, f54_arg1.controller, false, {
|
|
friendIndex = f52_arg0.friendIndex
|
|
} )
|
|
else
|
|
LUI.FlowManager.RequestLeaveMenu( f54_arg0 )
|
|
Friends.JoinRecentPlayer( f54_arg1.controller )
|
|
end
|
|
end
|
|
}
|
|
}
|
|
end
|
|
if Clan.IsEnabled() and Clan.CanISendInviteToRecentPlayer( f52_arg1.controller, f52_arg0.friendIndex ) and f52_local2 == false then
|
|
f52_local0[#f52_local0 + 1] = {
|
|
type = "UIGenericButton",
|
|
id = "clan_invite",
|
|
properties = {
|
|
style = GenericButtonSettings.Styles.GlassButton,
|
|
substyle = GenericButtonSettings.Styles.GlassButton.SubStyles.Popup,
|
|
button_text = Engine.Localize( "@LUA_MENU_CLAN_INVITE_TO_CLAN" ),
|
|
button_action_func = function ( f55_arg0, f55_arg1 )
|
|
if Engine.IsChatRestricted() then
|
|
LUI.FlowManager.RequestPopupMenu( f55_arg0, "user_generated_content_restriction_popup", true, f55_arg1.controller )
|
|
else
|
|
Clan.InviteRecentPlayerToClan( f55_arg1.controller )
|
|
end
|
|
end
|
|
}
|
|
}
|
|
end
|
|
if f52_local1 then
|
|
f52_local0[#f52_local0 + 1] = {
|
|
type = "UIGenericButton",
|
|
id = "profile",
|
|
properties = {
|
|
style = GenericButtonSettings.Styles.GlassButton,
|
|
substyle = GenericButtonSettings.Styles.GlassButton.SubStyles.Popup,
|
|
button_text = Engine.Localize( "@XBOXLIVE_VIEW_PROFILE" ),
|
|
button_action_func = function ( f56_arg0, f56_arg1 )
|
|
Friends.ShowRecentPlayerGamercard( f56_arg1.controller )
|
|
end
|
|
}
|
|
}
|
|
end
|
|
if not Engine.IsPS4() then
|
|
f52_local0[#f52_local0 + 1] = {
|
|
type = "UIGenericButton",
|
|
id = "add_friend_btn",
|
|
disabled = Friends.IsRecentPlayerAFriend( f52_arg1.controller ),
|
|
properties = {
|
|
style = GenericButtonSettings.Styles.GlassButton,
|
|
substyle = GenericButtonSettings.Styles.GlassButton.SubStyles.Popup,
|
|
button_text = GetFriendRequestLocString(),
|
|
button_action_func = function ( f57_arg0, f57_arg1 )
|
|
Friends.RequestRecentPlayerAsFriend( f57_arg1.controller )
|
|
end
|
|
}
|
|
}
|
|
end
|
|
f52_local0[#f52_local0 + 1] = {
|
|
type = "UIGenericButton",
|
|
id = "report",
|
|
properties = {
|
|
style = GenericButtonSettings.Styles.GlassButton,
|
|
substyle = GenericButtonSettings.Styles.GlassButton.SubStyles.Popup,
|
|
button_text = Engine.Localize( "@MENU_REPORT_PLAYER" ),
|
|
button_action_func = function ( f58_arg0, f58_arg1 )
|
|
LUI.FlowManager.RequestLeaveMenu( f58_arg0 )
|
|
LUI.FlowManager.RequestPopupMenu( f58_arg0, "popup_friend_report", true, f58_arg1.controller, false, {
|
|
friendIndex = f52_arg0.friendIndex,
|
|
reportFunction = Friends.ReportRecentPlayer
|
|
} )
|
|
end
|
|
}
|
|
}
|
|
return f52_local0
|
|
end
|
|
|
|
function EliteClanFriendActionsFeeder( f59_arg0, f59_arg1 )
|
|
local f59_local0 = {}
|
|
local f59_local1 = Engine.IsXbox360()
|
|
if not f59_local1 then
|
|
f59_local1 = Engine.IsXB3()
|
|
if not f59_local1 then
|
|
f59_local1 = Engine.IsPS4()
|
|
end
|
|
end
|
|
local f59_local2 = not Engine.InFrontend()
|
|
local f59_local3 = Engine.InLobby()
|
|
local f59_local4 = Friends.IsEliteClanFriendMe( f59_arg1.controller, f59_arg0.friendIndex )
|
|
if Engine.IsMultiplayer() then
|
|
local f59_local5 = #f59_local0 + 1
|
|
local f59_local6 = {
|
|
type = "UIGenericButton",
|
|
id = "invite"
|
|
}
|
|
local f59_local7 = f59_local4
|
|
local f59_local8
|
|
if Engine.GetDvarBool( "onlinegame" ) then
|
|
f59_local8 = isAliensSolo()
|
|
else
|
|
f59_local8 = f59_local7 or true
|
|
end
|
|
f59_local6.disabled = f59_local8
|
|
f59_local8 = {
|
|
style = GenericButtonSettings.Styles.GlassButton,
|
|
substyle = GenericButtonSettings.Styles.GlassButton.SubStyles.Popup
|
|
}
|
|
local f59_local9
|
|
if f59_local2 or f59_local3 then
|
|
f59_local9 = Engine.Localize( "@MENU_INVITE_TO_GAME" )
|
|
if not f59_local9 then
|
|
|
|
else
|
|
f59_local8.button_text = f59_local9
|
|
f59_local8.button_action_func = function ( f60_arg0, f60_arg1 )
|
|
LUI.FlowManager.RequestLeaveMenu( f60_arg0 )
|
|
Friends.InviteEliteClanFriend( f60_arg1.controller )
|
|
end
|
|
|
|
f59_local6.properties = f59_local8
|
|
f59_local0[f59_local5] = f59_local6
|
|
end
|
|
end
|
|
f59_local9 = Engine.Localize( "@MENU_INVITE_TO_PARTY" )
|
|
end
|
|
f59_local0[#f59_local0 + 1] = {
|
|
type = "UIGenericButton",
|
|
id = "join",
|
|
disabled = f59_local4 or not Engine.UserCanPlayOnline( f59_arg1.controller ),
|
|
properties = {
|
|
style = GenericButtonSettings.Styles.GlassButton,
|
|
substyle = GenericButtonSettings.Styles.GlassButton.SubStyles.Popup,
|
|
button_text = Engine.Localize( "@MENU_JOIN_GAME" ),
|
|
button_action_func = function ( f61_arg0, f61_arg1 )
|
|
LUI.FlowManager.RequestLeaveMenu( f61_arg0 )
|
|
Friends.JoinEliteClanFriend( f61_arg1.controller )
|
|
end
|
|
}
|
|
}
|
|
if f59_local2 == false then
|
|
if Clan.CanIChangeMemberStatus( f59_arg1.controller ) and f59_local4 == false then
|
|
f59_local0[#f59_local0 + 1] = {
|
|
type = "UIGenericButton",
|
|
id = "clan_change_status",
|
|
properties = {
|
|
style = GenericButtonSettings.Styles.GlassButton,
|
|
substyle = GenericButtonSettings.Styles.GlassButton.SubStyles.Popup,
|
|
button_text = Engine.Localize( "@CLANS_CHANGE_MEMBER_STATUS" ),
|
|
button_action_func = function ( f62_arg0, f62_arg1 )
|
|
LUI.FlowManager.RequestPopupMenu( f62_arg0, "popup_change_status", true, f62_arg1.controller, false, {
|
|
friendIndex = f59_arg0.friendIndex
|
|
} )
|
|
end
|
|
}
|
|
}
|
|
end
|
|
if Clan.CanIKickMember( f59_arg1.controller ) and f59_local4 == false then
|
|
f59_local0[#f59_local0 + 1] = {
|
|
type = "UIGenericButton",
|
|
id = "clan_kick",
|
|
properties = {
|
|
style = GenericButtonSettings.Styles.GlassButton,
|
|
substyle = GenericButtonSettings.Styles.GlassButton.SubStyles.Popup,
|
|
button_text = Engine.Localize( "@LUA_MENU_CLAN_KICK_FROM_CLAN" ),
|
|
button_action_func = function ( f63_arg0, f63_arg1 )
|
|
LUI.FlowManager.RequestPopupMenu( f63_arg0, "popup_kick_are_you_sure", true, f63_arg1.controller, false, {
|
|
friendIndex = f59_arg0.friendIndex
|
|
} )
|
|
end
|
|
}
|
|
}
|
|
end
|
|
if Clan.AmILeader( f59_arg1.controller ) and f59_local4 == false then
|
|
f59_local0[#f59_local0 + 1] = {
|
|
type = "UIGenericButton",
|
|
id = "clan_transfer_ownership",
|
|
properties = {
|
|
style = GenericButtonSettings.Styles.GlassButton,
|
|
substyle = GenericButtonSettings.Styles.GlassButton.SubStyles.Popup,
|
|
button_text = Engine.Localize( "@CLANS_TRANSFER_OWNERSHIP" ),
|
|
button_action_func = function ( f64_arg0, f64_arg1 )
|
|
LUI.FlowManager.RequestPopupMenu( f64_arg0, "popup_transfer_are_you_sure", true, f64_arg1.controller, false, {
|
|
friendIndex = f59_arg0.friendIndex
|
|
} )
|
|
end
|
|
}
|
|
}
|
|
end
|
|
if f59_local4 then
|
|
f59_local0[#f59_local0 + 1] = {
|
|
type = "UIGenericButton",
|
|
id = "clan_leave",
|
|
properties = {
|
|
style = GenericButtonSettings.Styles.GlassButton,
|
|
substyle = GenericButtonSettings.Styles.GlassButton.SubStyles.Popup,
|
|
button_text = Engine.Localize( "@CLANS_LEAVE_CLAN" ),
|
|
button_action_func = function ( f65_arg0, f65_arg1 )
|
|
local f65_local0 = "popup_leave_are_you_sure"
|
|
if Clan.AmILeader( f59_arg1.controller ) then
|
|
if Clan.GetMemberCount( f59_arg1.controller ) > 1 then
|
|
local f65_local1 = "popup_leave_leader_with_members"
|
|
end
|
|
f65_local0 = f65_local1 or "popup_leave_leader_are_you_sure"
|
|
end
|
|
LUI.FlowManager.RequestPopupMenu( f65_arg0, f65_local0, true, f65_arg1.controller, false )
|
|
end
|
|
}
|
|
}
|
|
end
|
|
end
|
|
if f59_local1 then
|
|
f59_local0[#f59_local0 + 1] = {
|
|
type = "UIGenericButton",
|
|
id = "profile",
|
|
properties = {
|
|
style = GenericButtonSettings.Styles.GlassButton,
|
|
substyle = GenericButtonSettings.Styles.GlassButton.SubStyles.Popup,
|
|
button_text = Engine.Localize( "@XBOXLIVE_VIEW_PROFILE" ),
|
|
button_action_func = function ( f66_arg0, f66_arg1 )
|
|
Friends.ShowEliteClanFriendGamercard( f66_arg1.controller )
|
|
end
|
|
}
|
|
}
|
|
end
|
|
if not Engine.IsPS4() then
|
|
f59_local0[#f59_local0 + 1] = {
|
|
type = "UIGenericButton",
|
|
id = "add_friend_btn",
|
|
disabled = f59_local4 or Friends.IsEliteClanPlayerAFriend( f59_arg1.controller ),
|
|
properties = {
|
|
style = GenericButtonSettings.Styles.GlassButton,
|
|
substyle = GenericButtonSettings.Styles.GlassButton.SubStyles.Popup,
|
|
button_text = GetFriendRequestLocString(),
|
|
button_action_func = function ( f67_arg0, f67_arg1 )
|
|
Friends.RequestEliteClanPlayerAsFriend( f67_arg1.controller )
|
|
end
|
|
}
|
|
}
|
|
end
|
|
f59_local0[#f59_local0 + 1] = {
|
|
type = "UIGenericButton",
|
|
id = "report",
|
|
disabled = f59_local4,
|
|
properties = {
|
|
style = GenericButtonSettings.Styles.GlassButton,
|
|
substyle = GenericButtonSettings.Styles.GlassButton.SubStyles.Popup,
|
|
button_text = Engine.Localize( "@MENU_REPORT_PLAYER" ),
|
|
button_action_func = function ( f68_arg0, f68_arg1 )
|
|
LUI.FlowManager.RequestPopupMenu( f68_arg0, "popup_friend_report", true, f68_arg1.controller, false, {
|
|
friendIndex = f59_arg0.friendIndex,
|
|
reportFunction = Friends.ReportEliteClanFriend
|
|
} )
|
|
end
|
|
}
|
|
}
|
|
return f59_local0
|
|
end
|
|
|
|
function ActionsFeeder( f69_arg0 )
|
|
local f69_local0 = LUI.FlowManager.GetMenuScopedDataByMenuName( "popup_friends" )
|
|
if f69_local0.actionsFeeder then
|
|
return f69_local0.actionsFeeder( f69_arg0, f69_local0 )
|
|
else
|
|
return {}
|
|
end
|
|
end
|
|
|
|
function popup_friend_list_actions()
|
|
return {
|
|
type = "generic_selectionList_popup",
|
|
id = "popup_friend_list_actions",
|
|
handlers = {
|
|
close_actions = MBh.LeaveMenu()
|
|
},
|
|
properties = {
|
|
popup_title = "",
|
|
popup_childfeeder = ActionsFeeder,
|
|
friendIndex = 0,
|
|
additional_handlers = {
|
|
kill_friends_list = MBh.LeaveMenu()
|
|
}
|
|
},
|
|
states = {
|
|
default = {
|
|
leftAnchor = true,
|
|
rightAnchor = true,
|
|
topAnchor = true,
|
|
bottomAnchor = true,
|
|
left = 0,
|
|
right = 0,
|
|
top = 0,
|
|
bottom = 0
|
|
}
|
|
},
|
|
children = {
|
|
{
|
|
type = "UITimer",
|
|
id = "friends_actions_refresh_timer",
|
|
properties = {
|
|
event = {
|
|
name = "element_refresh"
|
|
},
|
|
interval = 1000
|
|
}
|
|
}
|
|
}
|
|
}
|
|
end
|
|
|
|
function RefreshScrollbar( f71_arg0 )
|
|
if f71_arg0.scrollbar then
|
|
f71_arg0.scrollbar:manualUpdate( f71_arg0.slot_offset, f71_arg0.maxButtonsOnPage, f71_arg0.total, Friends.Constants.FriendButtonHeight )
|
|
end
|
|
end
|
|
|
|
function ScrollBy( f72_arg0, f72_arg1, f72_arg2, f72_arg3 )
|
|
local f72_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( f72_arg0 )
|
|
local f72_local1 = f72_local0.slot_offset
|
|
f72_local0.slot_offset = LUI.clamp( f72_local0.slot_offset + f72_arg3, 0, math.max( 0, f72_local0.total - f72_local0.maxButtonsOnPage ) )
|
|
if f72_local1 ~= f72_local0.slot_offset then
|
|
local f72_local2 = f72_arg0:getParent()
|
|
if f72_arg1.qualifier ~= ButtonQualifiers.Mousewheel then
|
|
f72_arg0:processEvent( {
|
|
name = "lose_focus",
|
|
immediate = true
|
|
} )
|
|
end
|
|
f72_local2:dispatchEventToRoot( {
|
|
name = "friends_refresh",
|
|
immediate = true
|
|
} )
|
|
if f72_arg1.qualifier ~= ButtonQualifiers.Mousewheel then
|
|
local f72_local3 = f72_local2:getChildById( "friend_button_" .. f72_arg2 )
|
|
f72_local3:processEvent( {
|
|
name = "gain_focus",
|
|
immediate = true
|
|
} )
|
|
end
|
|
end
|
|
RefreshScrollbar( f72_local0 )
|
|
end
|
|
|
|
function FriendButtonGamepadButton( f73_arg0, f73_arg1, f73_arg2 )
|
|
local f73_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( f73_arg0 )
|
|
if f73_arg1.down and f73_arg0:isInFocus() then
|
|
if f73_arg1.qualifier == ButtonQualifiers.Mousewheel then
|
|
if f73_arg1.button == "up" then
|
|
ScrollBy( f73_arg0, f73_arg1, f73_arg2, -1 )
|
|
elseif f73_arg1.button == "down" then
|
|
ScrollBy( f73_arg0, f73_arg1, f73_arg2, 1 )
|
|
end
|
|
return true
|
|
elseif f73_arg1.button == "up" and f73_arg2 == 0 then
|
|
ScrollBy( f73_arg0, f73_arg1, f73_arg2, -1 )
|
|
return true
|
|
elseif f73_arg1.button == "down" and f73_arg2 == f73_local0.maxButtonsOnPage - 1 then
|
|
ScrollBy( f73_arg0, f73_arg1, f73_arg2, 1 )
|
|
return true
|
|
end
|
|
end
|
|
return LUI.UIButton.GamepadButton( f73_arg0, f73_arg1 )
|
|
end
|
|
|
|
function FriendButtonOverAction( f74_arg0, f74_arg1, f74_arg2 )
|
|
local f74_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( f74_arg0 )
|
|
if f74_arg0.properties.toTopAllowed then
|
|
f74_arg0:dispatchEventToRoot( {
|
|
name = "update_to_top_button_helper",
|
|
immediate = true
|
|
} )
|
|
end
|
|
local f74_local1 = f74_local0.current_slot
|
|
f74_local0.current_slot = f74_arg0.properties.buttonNumber
|
|
if f74_local0.controller and f74_arg0.properties.friendIndex then
|
|
f74_arg2( f74_local0.controller, f74_arg0.properties.friendIndex )
|
|
end
|
|
if Engine.IsConsoleGame() or f74_arg1.focusType ~= FocusType.MouseOver then
|
|
local f74_local2
|
|
if f74_local0.current_slot > f74_local0.upScrollBoundary or f74_local0.current_slot >= f74_local1 then
|
|
f74_local2 = false
|
|
else
|
|
f74_local2 = true
|
|
end
|
|
local f74_local3
|
|
if f74_local0.downScrollBoundary > f74_local0.current_slot or f74_local1 >= f74_local0.current_slot then
|
|
f74_local3 = false
|
|
else
|
|
f74_local3 = true
|
|
end
|
|
local f74_local4 = f74_local2 and f74_local0.slot_offset > 0
|
|
local f74_local5 = f74_local3 and f74_local0.slot_offset < f74_local0.total - f74_local0.maxButtonsOnPage
|
|
if f74_local4 then
|
|
ScrollBy( f74_arg0, f74_arg1, f74_local1, -1 )
|
|
elseif f74_local5 then
|
|
ScrollBy( f74_arg0, f74_arg1, f74_local1, 1 )
|
|
else
|
|
f74_arg0:dispatchEventToRoot( {
|
|
name = "friends_refresh",
|
|
immediate = true
|
|
} )
|
|
end
|
|
else
|
|
f74_arg0:dispatchEventToRoot( {
|
|
name = "friends_refresh",
|
|
immediate = true
|
|
} )
|
|
end
|
|
end
|
|
|
|
function OpenFriendsOptionPopup( f75_arg0, f75_arg1, f75_arg2, f75_arg3 )
|
|
local f75_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( f75_arg0 )
|
|
LUI.FlowManager.RequestPopupMenu( f75_arg0, "popup_friend_list_actions", true, f75_arg3, false, {
|
|
popup_title = f75_arg1,
|
|
friendIndex = f75_arg2
|
|
} )
|
|
end
|
|
|
|
function OpenChallengePopup( f76_arg0, f76_arg1, f76_arg2 )
|
|
if not Engine.InFrontend() or not f76_arg0.properties.challengeFunc then
|
|
return
|
|
else
|
|
f76_arg0:dispatchEventToRoot( {
|
|
name = "kill_friends_list",
|
|
immediate = true
|
|
} )
|
|
LUI.FlowManager.RequestLeaveMenu( f76_arg0 )
|
|
f76_arg0.properties.challengeFunc( f76_arg2 )
|
|
end
|
|
end
|
|
|
|
function friend_button_children( f77_arg0, f77_arg1, f77_arg2, f77_arg3, f77_arg4, f77_arg5, f77_arg6, f77_arg7, f77_arg8, f77_arg9 )
|
|
local f77_local0 = {}
|
|
local f77_local1 = LUI.FlowManager.GetMenuScopedDataByMenuName( "popup_friends" )
|
|
if Engine.InFrontend() then
|
|
f77_local0[#f77_local0 + 1] = {
|
|
type = "UIImage",
|
|
states = {
|
|
default = CoD.ColorizeState( Colors.black, {
|
|
topAnchor = true,
|
|
bottomAnchor = true,
|
|
leftAnchor = true,
|
|
rightAnchor = false,
|
|
top = 0,
|
|
bottom = -1,
|
|
left = 0,
|
|
width = 100,
|
|
alpha = 0
|
|
} ),
|
|
visible = {
|
|
alpha = 1
|
|
}
|
|
},
|
|
children = {
|
|
{
|
|
type = "UIImage",
|
|
states = {
|
|
default = CoD.ColorizeState( Colors.black, {
|
|
topAnchor = true,
|
|
bottomAnchor = true,
|
|
leftAnchor = false,
|
|
rightAnchor = true,
|
|
top = 30,
|
|
bottom = 0,
|
|
left = 0,
|
|
width = 342
|
|
} )
|
|
}
|
|
}
|
|
},
|
|
handlers = {
|
|
button_over = MBh.AnimateToState( "visible" ),
|
|
button_up = MBh.AnimateToState( "default" )
|
|
}
|
|
}
|
|
f77_local0[#f77_local0 + 1] = {
|
|
type = "playercard",
|
|
properties = {
|
|
force_show_rank = true,
|
|
patchScale = -0.15
|
|
},
|
|
states = {
|
|
default = {
|
|
alpha = 0
|
|
},
|
|
visible = {
|
|
alpha = 1
|
|
}
|
|
},
|
|
handlers = {
|
|
button_over = MBh.AnimateToState( "visible" ),
|
|
button_up = MBh.AnimateToState( "default" )
|
|
}
|
|
}
|
|
f77_local0[#f77_local0 + 1] = {
|
|
type = "UIImage",
|
|
id = "small_rectangle_id",
|
|
states = {
|
|
default = {
|
|
topAnchor = true,
|
|
bottomAnchor = false,
|
|
leftAnchor = true,
|
|
rightAnchor = false,
|
|
top = 20,
|
|
height = 16,
|
|
left = 450,
|
|
width = 5,
|
|
red = Colors.secondary_text_color.r,
|
|
green = Colors.secondary_text_color.g,
|
|
blue = Colors.secondary_text_color.b,
|
|
material = RegisterMaterial( "white" )
|
|
},
|
|
over = {
|
|
red = 0,
|
|
green = 0,
|
|
blue = 0
|
|
}
|
|
},
|
|
handlers = {
|
|
button_over = MBh.AnimateToState( "over" ),
|
|
button_up = MBh.AnimateToState( "default" )
|
|
}
|
|
}
|
|
f77_local0[#f77_local0 + 1] = {
|
|
type = "UIText",
|
|
id = "friend_button_subtext",
|
|
states = {
|
|
default = CoD.ColorizeState( Colors.primary_text_color, {
|
|
topAnchor = true,
|
|
bottomAnchor = false,
|
|
leftAnchor = true,
|
|
rightAnchor = true,
|
|
left = 469,
|
|
right = -15,
|
|
top = 60,
|
|
height = CoD.TextSettings.NormalFont.Height,
|
|
font = CoD.TextSettings.NormalFont.Font,
|
|
alignment = LUI.Alignment.Right
|
|
} ),
|
|
over = {
|
|
red = Colors.black.r,
|
|
green = Colors.black.g,
|
|
blue = Colors.black.b
|
|
}
|
|
},
|
|
handlers = {
|
|
button_over = MBh.AnimateToState( "over" ),
|
|
button_up = MBh.AnimateToState( "default" ),
|
|
subtext_refresh = function ( f78_arg0, f78_arg1 )
|
|
f78_arg0:setText( f78_arg1.text or "" )
|
|
end
|
|
}
|
|
}
|
|
else
|
|
local f77_local2 = Engine.IsAliensMode() and CoD.PlayMode.Aliens or CoD.PlayMode.Core
|
|
f77_local0[#f77_local0 + 1] = {
|
|
type = "UIImage",
|
|
id = "rank_background_id",
|
|
states = {
|
|
default = {
|
|
topAnchor = true,
|
|
bottomAnchor = false,
|
|
leftAnchor = true,
|
|
rightAnchor = false,
|
|
top = 0,
|
|
height = 49,
|
|
left = 0,
|
|
width = 60,
|
|
red = Colors.secondary_text_color.r,
|
|
green = Colors.secondary_text_color.g,
|
|
blue = Colors.secondary_text_color.b,
|
|
alpha = 0.2,
|
|
material = RegisterMaterial( "white" )
|
|
},
|
|
over = {
|
|
red = 0,
|
|
green = 0,
|
|
blue = 0,
|
|
alpha = 1
|
|
}
|
|
},
|
|
handlers = {
|
|
button_over = MBh.AnimateToState( "over" ),
|
|
button_up = MBh.AnimateToState( "default" )
|
|
}
|
|
}
|
|
f77_local0[#f77_local0 + 1] = {
|
|
type = "UIImage",
|
|
id = "rank_emblem_id",
|
|
states = {
|
|
default = {
|
|
topAnchor = true,
|
|
bottomAnchor = false,
|
|
leftAnchor = true,
|
|
rightAnchor = false,
|
|
top = 14,
|
|
height = 21,
|
|
left = 3,
|
|
width = 25,
|
|
red = Colors.secondary_text_color.r,
|
|
green = Colors.secondary_text_color.g,
|
|
blue = Colors.secondary_text_color.b
|
|
},
|
|
over = {
|
|
red = 1,
|
|
green = 1,
|
|
blue = 1
|
|
}
|
|
},
|
|
handlers = {
|
|
button_over = MBh.AnimateToState( "over" ),
|
|
button_up = MBh.AnimateToState( "default" ),
|
|
rank_refresh = function ( f79_arg0, f79_arg1 )
|
|
f79_arg0:setImage( RegisterMaterial( Rank.GetRankIcon( f79_arg1.rank, f79_arg1.prestige, f77_local2 ) ) )
|
|
end
|
|
}
|
|
}
|
|
f77_local0[#f77_local0 + 1] = {
|
|
type = "UIText",
|
|
id = "rank_number_id",
|
|
states = {
|
|
default = {
|
|
topAnchor = true,
|
|
bottomAnchor = false,
|
|
leftAnchor = true,
|
|
rightAnchor = false,
|
|
top = 14,
|
|
height = 21,
|
|
left = 31,
|
|
width = 22,
|
|
red = Colors.primary_text_color.r,
|
|
green = Colors.primary_text_color.g,
|
|
blue = Colors.primary_text_color.b,
|
|
font = CoD.TextSettings.BigFont.Font,
|
|
alignment = LUI.Alignment.Center
|
|
},
|
|
over = {
|
|
red = Colors.white.r,
|
|
green = Colors.white.g,
|
|
blue = Colors.white.b
|
|
}
|
|
},
|
|
handlers = {
|
|
button_over = MBh.AnimateToState( "over" ),
|
|
button_up = MBh.AnimateToState( "default" ),
|
|
rank_refresh = function ( f80_arg0, f80_arg1 )
|
|
f80_arg0:setText( Rank.GetRankDisplay( f80_arg1.rank, f77_local2 ) )
|
|
end
|
|
}
|
|
}
|
|
f77_local0[#f77_local0 + 1] = {
|
|
type = "UIImage",
|
|
id = "small_rectangle_id",
|
|
states = {
|
|
default = {
|
|
topAnchor = true,
|
|
bottomAnchor = false,
|
|
leftAnchor = true,
|
|
rightAnchor = false,
|
|
top = 14,
|
|
height = 21,
|
|
left = 470,
|
|
width = 5,
|
|
red = Colors.secondary_text_color.r,
|
|
green = Colors.secondary_text_color.g,
|
|
blue = Colors.secondary_text_color.b,
|
|
material = RegisterMaterial( "white" )
|
|
},
|
|
over = {
|
|
red = 0,
|
|
green = 0,
|
|
blue = 0
|
|
}
|
|
},
|
|
handlers = {
|
|
button_over = MBh.AnimateToState( "over" ),
|
|
button_up = MBh.AnimateToState( "default" )
|
|
}
|
|
}
|
|
end
|
|
return f77_local0
|
|
end
|
|
|
|
function friend_button( f81_arg0, f81_arg1, f81_arg2, f81_arg3, f81_arg4, f81_arg5, f81_arg6, f81_arg7, f81_arg8, f81_arg9, f81_arg10, f81_arg11, f81_arg12, f81_arg13 )
|
|
return {
|
|
type = "UIGenericButton",
|
|
id = "friend_button_" .. f81_arg1,
|
|
properties = {
|
|
style = GenericButtonSettings.Styles.FlatButton,
|
|
substyle = GenericButtonSettings.Styles.FlatButton.SubStyles.SubMenu,
|
|
variant = GenericButtonSettings.Variants.Info,
|
|
buttonNumber = f81_arg1,
|
|
toTopAllowed = f81_arg12,
|
|
button_display_func = function ( f82_arg0, f82_arg1 )
|
|
if f81_arg0.slot_offset and f81_arg1 then
|
|
return f81_arg9( f81_arg0.controller, f81_arg0.slot_offset + f81_arg1 )
|
|
else
|
|
|
|
end
|
|
end
|
|
,
|
|
height = Engine.InFrontend() and Friends.Constants.FriendButtonHeight or 49,
|
|
y_offset = Engine.InFrontend() and -17 or 0,
|
|
content_width = Engine.InFrontend() and 260 or 450,
|
|
content_margin = Engine.InFrontend() and 40 or 10,
|
|
text_padding_with_content = Engine.InFrontend() and 116 or 70,
|
|
label_align = LUI.Alignment.Left,
|
|
text_align_with_content = LUI.Alignment.Left,
|
|
text_default_color = {
|
|
r = 1,
|
|
g = 1,
|
|
b = 1,
|
|
a = 1
|
|
},
|
|
text_focus_color = Engine.InFrontend() and {
|
|
a = 0
|
|
} or Colors.black,
|
|
content_focus_color_without_bg = Colors.black,
|
|
use_locking = false,
|
|
challengeFunc = f81_arg13
|
|
},
|
|
handlers = {
|
|
gamepad_button = function ( f83_arg0, f83_arg1 )
|
|
return FriendButtonGamepadButton( f83_arg0, f83_arg1, f81_arg1 )
|
|
end
|
|
,
|
|
button_over = function ( f84_arg0, f84_arg1 )
|
|
FriendButtonOverAction( f84_arg0, f84_arg1, f81_arg11 )
|
|
end
|
|
,
|
|
button_action = function ( f85_arg0, f85_arg1 )
|
|
local f85_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( f85_arg0 )
|
|
if not f85_local0.challengeMode then
|
|
OpenFriendsOptionPopup( f85_arg0, f85_arg0.properties.friendName, f85_local0.slot_offset + f81_arg1, f85_arg1.controller )
|
|
else
|
|
OpenChallengePopup( f85_arg0, f85_arg0.properties.friendIndex, f85_arg1.controller )
|
|
end
|
|
end
|
|
,
|
|
element_refresh = function ( f86_arg0, f86_arg1 )
|
|
local f86_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( f86_arg0 )
|
|
local f86_local1 = f86_local0.slot_offset + f81_arg1
|
|
f86_arg0.properties.friendIndex = f86_local1
|
|
if f86_arg0:isInFocus() then
|
|
f81_arg11( f86_local0.controller, f86_local1 )
|
|
end
|
|
local f86_local2 = {
|
|
gamertag = f81_arg2( f86_local0.controller, f86_local1 )
|
|
}
|
|
if not Engine.IsChatRestricted() then
|
|
f86_local2.clantag = f81_arg3( f86_local0.controller, f86_local1 )
|
|
end
|
|
f86_local2.rank = f81_arg7( f86_local0.controller, f86_local1 )
|
|
f86_local2.prestige = f81_arg8( f86_local0.controller, f86_local1 )
|
|
f86_local2.background = f81_arg6 and f81_arg6( f86_local0.controller, f86_local1 ) or 0
|
|
f86_local2.patchEmblem = f81_arg4 and f81_arg4( f86_local0.controller, f86_local1 ) or 0
|
|
f86_local2.patchShape = f81_arg5 and f81_arg5( f86_local0.controller, f86_local1 ) or 0
|
|
f86_local2.name = "update_playercard"
|
|
f86_arg0:processEvent( f86_local2 )
|
|
f86_arg0.properties.friendName = f86_local2.gamertag
|
|
if not Engine.InFrontend() and f86_local2.clantag and f86_local2.clantag ~= "" then
|
|
f86_arg0:setText( "[" .. f86_local2.clantag .. "]" .. f86_local2.gamertag )
|
|
else
|
|
f86_arg0:setText( f86_local2.gamertag )
|
|
end
|
|
f86_arg0:processEvent( {
|
|
name = "content_refresh"
|
|
} )
|
|
f86_arg0:processEvent( {
|
|
name = "subtext_refresh",
|
|
text = f81_arg10( f86_local0.controller, f86_local1 )
|
|
} )
|
|
if not Engine.InFrontend() then
|
|
f86_arg0:processEvent( {
|
|
name = "rank_refresh",
|
|
rank = f86_local2.rank,
|
|
prestige = f86_local2.prestige
|
|
} )
|
|
end
|
|
end
|
|
|
|
},
|
|
children = friend_button_children( f81_arg1, f81_arg2, f81_arg3, f81_arg4, f81_arg5, f81_arg6, f81_arg7, f81_arg8, f81_arg9, f81_arg10 )
|
|
}
|
|
end
|
|
|
|
function no_friends( f87_arg0 )
|
|
return {
|
|
type = "UIElement",
|
|
id = "no_friends_id",
|
|
properties = {
|
|
text = f87_arg0
|
|
},
|
|
states = {
|
|
default = {
|
|
leftAnchor = true,
|
|
rightAnchor = true,
|
|
topAnchor = true,
|
|
bottomAnchor = true,
|
|
top = 0,
|
|
bottom = 0,
|
|
left = 0,
|
|
right = Friends.Constants.scrollbarWidth
|
|
}
|
|
},
|
|
children = {
|
|
{
|
|
type = "UIElement",
|
|
id = "container",
|
|
properties = {
|
|
text = MBh.Property( "text" )
|
|
},
|
|
states = {
|
|
default = {
|
|
leftAnchor = true,
|
|
rightAnchor = true,
|
|
topAnchor = true,
|
|
bottomAnchor = true,
|
|
left = 0,
|
|
right = 0,
|
|
top = 70,
|
|
bottom = -167
|
|
}
|
|
},
|
|
children = {
|
|
{
|
|
type = "UIText",
|
|
id = "no_friends_txt",
|
|
properties = {
|
|
text = MBh.Property( "text" ),
|
|
textStyle = CoD.TextStyle.Shadowed
|
|
},
|
|
states = {
|
|
default = CoD.ColorizeState( Colors.primary_text_color, {
|
|
leftAnchor = true,
|
|
rightAnchor = true,
|
|
topAnchor = false,
|
|
bottomAnchor = false,
|
|
left = 0,
|
|
right = 0,
|
|
height = CoD.TextSettings.BigFont.Height,
|
|
font = CoD.TextSettings.BigFont.Font,
|
|
alignment = LUI.Alignment.Center
|
|
} )
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
end
|
|
|
|
function EmptySubTextGetter( f88_arg0, f88_arg1 )
|
|
return ""
|
|
end
|
|
|
|
function FriendFeederFactory( f89_arg0, f89_arg1, f89_arg2, f89_arg3, f89_arg4, f89_arg5, f89_arg6, f89_arg7, f89_arg8, f89_arg9, f89_arg10, f89_arg11, f89_arg12 )
|
|
return function ( f90_arg0, f90_arg1 )
|
|
local f90_local0 = {}
|
|
if f90_arg1.total > 0 then
|
|
for f90_local1 = 0, math.min( f90_arg1.maxButtonsOnPage - 1, f90_arg1.total - 1 ), 1 do
|
|
f90_local0[#f90_local0 + 1] = friend_button( f90_arg1, f90_local1, f89_arg0, f89_arg3, f89_arg4, f89_arg5, f89_arg6, f89_arg7, f89_arg8, f89_arg1, f89_arg2, f89_arg9, f89_arg11, f89_arg12 )
|
|
end
|
|
else
|
|
f90_local0[#f90_local0 + 1] = f89_arg10()
|
|
end
|
|
return f90_local0
|
|
end
|
|
|
|
end
|
|
|
|
function OnlineFriendsFeeder( f91_arg0, f91_arg1 )
|
|
local f91_local0 = Engine.IsAliensMode()
|
|
local f91_local1 = FriendFeederFactory
|
|
local f91_local2 = Friends.GetOnlineFriendGamertag
|
|
local f91_local3 = Friends.GetOnlineFriendPresence
|
|
local f91_local4 = EmptySubTextGetter
|
|
local f91_local5 = Friends.GetOnlineFriendClanTag
|
|
local f91_local6 = Friends.GetOnlineFriendPatch
|
|
local f91_local7 = Friends.GetOnlineFriendPatchbacking
|
|
local f91_local8 = Friends.GetOnlineFriendBackground
|
|
local f91_local9
|
|
if f91_local0 then
|
|
f91_local9 = Friends.GetOnlineFriendAlienRank
|
|
if not f91_local9 then
|
|
|
|
else
|
|
local f91_local10
|
|
if f91_local0 then
|
|
f91_local10 = Friends.GetOnlineFriendAlienPrestige
|
|
if not f91_local10 then
|
|
|
|
else
|
|
f91_local1 = f91_local1( f91_local2, f91_local3, f91_local4, f91_local5, f91_local6, f91_local7, f91_local8, f91_local9, f91_local10, Friends.SetOnlineFriendStoredXUID, function ()
|
|
return no_friends( Engine.Localize( "@PLATFORM_NO_FRIENDS" ) )
|
|
end, true, ChallengeFriend )
|
|
return f91_local1( f91_arg0, f91_arg1 )
|
|
end
|
|
end
|
|
f91_local10 = Friends.GetOnlineFriendPrestige
|
|
end
|
|
end
|
|
f91_local9 = Friends.GetOnlineFriendRank
|
|
end
|
|
|
|
function LivePartyFriendsFeeder( f93_arg0, f93_arg1 )
|
|
local f93_local0 = Engine.IsAliensMode()
|
|
local f93_local1 = FriendFeederFactory
|
|
local f93_local2 = Friends.GetLivePartyFriendGamertag
|
|
local f93_local3 = Friends.GetLivePartyFriendPresence
|
|
local f93_local4 = EmptySubTextGetter
|
|
local f93_local5 = Friends.GetLivePartyFriendClanTag
|
|
local f93_local6 = Friends.GetLivePartyFriendPatch
|
|
local f93_local7 = Friends.GetLivePartyFriendPatchbacking
|
|
local f93_local8 = Friends.GetLivePartyFriendBackground
|
|
local f93_local9
|
|
if f93_local0 then
|
|
f93_local9 = Friends.GetLivePartyFriendAlienRank
|
|
if not f93_local9 then
|
|
|
|
else
|
|
local f93_local10
|
|
if f93_local0 then
|
|
f93_local10 = Friends.GetLivePartyFriendAlienPrestige
|
|
if not f93_local10 then
|
|
|
|
else
|
|
f93_local1 = f93_local1( f93_local2, f93_local3, f93_local4, f93_local5, f93_local6, f93_local7, f93_local8, f93_local9, f93_local10, Friends.SetLivePartyFriendStoredXUID, function ()
|
|
return no_friends( Engine.Localize( "@PLATFORM_NOT_IN_PARTY" ) )
|
|
end, false, ChallengeLivePartyPlayer )
|
|
return f93_local1( f93_arg0, f93_arg1 )
|
|
end
|
|
end
|
|
f93_local10 = Friends.GetLivePartyFriendPrestige
|
|
end
|
|
end
|
|
f93_local9 = Friends.GetLivePartyFriendRank
|
|
end
|
|
|
|
function RecentPlayersFeeder( f95_arg0, f95_arg1 )
|
|
local f95_local0 = Engine.IsAliensMode()
|
|
local f95_local1 = FriendFeederFactory
|
|
local f95_local2 = Friends.GetRecentPlayerGamertag
|
|
local f95_local3 = Friends.GetRecentPlayerPresence
|
|
local f95_local4 = EmptySubTextGetter
|
|
local f95_local5 = Friends.GetRecentPlayerClanTag
|
|
local f95_local6 = Friends.GetRecentPlayerPatch
|
|
local f95_local7 = Friends.GetRecentPlayerPatchbacking
|
|
local f95_local8 = Friends.GetRecentPlayerBackground
|
|
local f95_local9
|
|
if f95_local0 then
|
|
f95_local9 = Friends.GetRecentPlayerAlienRank
|
|
if not f95_local9 then
|
|
|
|
else
|
|
local f95_local10
|
|
if f95_local0 then
|
|
f95_local10 = Friends.GetRecentPlayerAlienPrestige
|
|
if not f95_local10 then
|
|
|
|
else
|
|
f95_local1 = f95_local1( f95_local2, f95_local3, f95_local4, f95_local5, f95_local6, f95_local7, f95_local8, f95_local9, f95_local10, Friends.SetRecentPlayerStoredXUID, function ()
|
|
return no_friends( Engine.Localize( "@LUA_MENU_NO_RECENT_PLAYERS" ) )
|
|
end, false, ChallengeRecentPlayer )
|
|
return f95_local1( f95_arg0, f95_arg1 )
|
|
end
|
|
end
|
|
f95_local10 = Friends.GetRecentPlayerPrestige
|
|
end
|
|
end
|
|
f95_local9 = Friends.GetRecentPlayerRank
|
|
end
|
|
|
|
function EliteClanFriendsFeeder( f97_arg0, f97_arg1 )
|
|
local f97_local0 = Engine.IsAliensMode()
|
|
local f97_local1 = FriendFeederFactory
|
|
local f97_local2 = Friends.GetEliteClanFriendGamertag
|
|
local f97_local3 = Friends.GetEliteClanFriendPresence
|
|
local f97_local4 = Friends.GetEliteClanFriendMemberStatus
|
|
local f97_local5 = Friends.GetEliteClanFriendClanTag
|
|
local f97_local6 = Friends.GetEliteClanFriendPatch
|
|
local f97_local7 = Friends.GetEliteClanFriendPatchbacking
|
|
local f97_local8 = Friends.GetEliteClanFriendBackground
|
|
local f97_local9
|
|
if f97_local0 then
|
|
f97_local9 = Friends.GetEliteClanFriendAlienRank
|
|
if not f97_local9 then
|
|
|
|
else
|
|
local f97_local10
|
|
if f97_local0 then
|
|
f97_local10 = Friends.GetEliteClanFriendAlienPrestige
|
|
if not f97_local10 then
|
|
|
|
else
|
|
f97_local1 = f97_local1( f97_local2, f97_local3, f97_local4, f97_local5, f97_local6, f97_local7, f97_local8, f97_local9, f97_local10, Friends.SetEliteClanFriendStoredXUID, function ()
|
|
if not CoDAnywhere.ServiceAvailable( f97_arg1.controller ) then
|
|
return no_friends( Engine.Localize( "@LUA_MENU_COD_ANYWHERE_ERROR_SERVICE" ) )
|
|
elseif Clan.IsDownloadingData( f97_arg1.controller ) then
|
|
return {
|
|
type = "generic_loading_widget",
|
|
properties = {
|
|
message = Engine.Localize( "@MENU_DOWNLOADING" )
|
|
}
|
|
}
|
|
else
|
|
return no_friends( Engine.Localize( "@MENU_NO_CLAN_DESCRIPTION" ) )
|
|
end
|
|
end, false, false )
|
|
return f97_local1( f97_arg0, f97_arg1 )
|
|
end
|
|
end
|
|
f97_local10 = Friends.GetEliteClanFriendPrestige
|
|
end
|
|
end
|
|
f97_local9 = Friends.GetEliteClanFriendRank
|
|
end
|
|
|
|
function DebugFriendsFeeder( f99_arg0, f99_arg1 )
|
|
local f99_local0 = FriendFeederFactory( function ( f100_arg0, f100_arg1 )
|
|
return "Friend " .. f100_arg1
|
|
end, function ()
|
|
return "At the beach"
|
|
end, function ()
|
|
return "h"
|
|
end, function ()
|
|
return "OINK"
|
|
end, function ()
|
|
return 0
|
|
end, function ()
|
|
return 0
|
|
end, function ()
|
|
return 0
|
|
end, function ()
|
|
return 10
|
|
end, function ()
|
|
return 1
|
|
end, function ()
|
|
|
|
end, function ()
|
|
return no_friends( "No debug friends" )
|
|
end, false )
|
|
return f99_local0( f99_arg0, f99_arg1 )
|
|
end
|
|
|
|
function WIPFeeder( f111_arg0, f111_arg1 )
|
|
local f111_local0 = {}
|
|
return no_friends( "Work in Progress" )
|
|
end
|
|
|
|
function MainFriendFeeder( f112_arg0 )
|
|
local f112_local0 = LUI.FlowManager.GetMenuScopedDataByMenuName( "popup_friends" )
|
|
if f112_local0.feeder then
|
|
return f112_local0.feeder( f112_arg0, f112_local0 )
|
|
else
|
|
return {}
|
|
end
|
|
end
|
|
|
|
function CursorToTop( f113_arg0, f113_arg1 )
|
|
local f113_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( f113_arg0 )
|
|
if f113_local0.slot_offset == 0 and f113_local0.current_slot == 0 then
|
|
return
|
|
else
|
|
f113_local0.slot_offset = 0
|
|
f113_local0.current_slot = 0
|
|
RefreshPage( f113_arg0, f113_arg1 )
|
|
f113_arg0:dispatchEventToChildren( {
|
|
name = "focus_vlist",
|
|
immediate = true
|
|
} )
|
|
end
|
|
end
|
|
|
|
function PlatformShouldShowGameInvites()
|
|
local f114_local0 = Engine.IsPS3()
|
|
if not f114_local0 then
|
|
f114_local0 = Engine.IsPS4()
|
|
end
|
|
return f114_local0
|
|
end
|
|
|
|
function PlatformShouldShowPartyGameInvites()
|
|
return Engine.IsXB3()
|
|
end
|
|
|
|
function PlatformShouldShowPartyUI()
|
|
return Engine.IsXbox360()
|
|
end
|
|
|
|
function UpdateToTopButtonHelper( f117_arg0 )
|
|
local f117_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( f117_arg0 )
|
|
local f117_local1
|
|
if f117_local0.slot_offset <= 0 and f117_local0.current_slot <= 0 then
|
|
f117_local1 = false
|
|
else
|
|
f117_local1 = true
|
|
end
|
|
local f117_local2 = f117_arg0
|
|
local f117_local3 = f117_arg0.processEvent
|
|
local f117_local4 = {
|
|
name = "add_button_helper_text",
|
|
button_ref = "button_alt1"
|
|
}
|
|
local f117_local5
|
|
if f117_local1 then
|
|
f117_local5 = Engine.Localize( "@LUA_MENU_TOP" )
|
|
if not f117_local5 then
|
|
|
|
else
|
|
f117_local4.helper_text = f117_local5
|
|
f117_local4.side = "left"
|
|
f117_local4.clickable = true
|
|
f117_local3( f117_local2, f117_local4 )
|
|
end
|
|
end
|
|
f117_local5 = ""
|
|
end
|
|
|
|
function UpdateSelectButtonHelper( f118_arg0 )
|
|
local f118_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( f118_arg0 )
|
|
if f118_local0.total then
|
|
local f118_local1 = f118_local0.total > 0
|
|
end
|
|
local f118_local2 = ""
|
|
if not f118_local0.challengeMode then
|
|
f118_local2 = Engine.Localize( "@LUA_MENU_SELECT" )
|
|
else
|
|
f118_local2 = Engine.Localize( "@LUA_MENU_CHALLENGE" )
|
|
end
|
|
f118_arg0:processEvent( {
|
|
name = "add_button_helper_text",
|
|
button_ref = "button_action",
|
|
helper_text = f118_local2,
|
|
side = "left",
|
|
clickable = true
|
|
} )
|
|
end
|
|
|
|
function SetOnlineFriendsHelpers( f119_arg0 )
|
|
local f119_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( f119_arg0 )
|
|
UpdateToTopButtonHelper( f119_arg0 )
|
|
if PlatformShouldShowGameInvites() and Friends.CountPendingPlaystationInvites and Friends.CountPendingPlaystationInvites( f119_local0.controller ) > 0 then
|
|
f119_arg0:processEvent( {
|
|
name = "add_button_helper_text",
|
|
button_ref = "button_alt2",
|
|
helper_text = Engine.Localize( "@PLATFORM_VIEW_GAME_INVITES" ),
|
|
side = "left",
|
|
clickable = true
|
|
} )
|
|
else
|
|
f119_arg0:processEvent( {
|
|
name = "add_button_helper_text",
|
|
button_ref = "button_alt2",
|
|
helper_text = "",
|
|
side = "left",
|
|
clickable = true
|
|
} )
|
|
end
|
|
f119_arg0:processEvent( {
|
|
name = "add_button_helper_text",
|
|
button_ref = "button_start",
|
|
helper_text = "",
|
|
side = "left",
|
|
clickable = true
|
|
} )
|
|
end
|
|
|
|
function SetRecentPlayersHelpers( f120_arg0 )
|
|
SetOnlineFriendsHelpers( f120_arg0 )
|
|
f120_arg0:processEvent( {
|
|
name = "add_button_helper_text",
|
|
button_ref = "button_alt2",
|
|
helper_text = "",
|
|
side = "left",
|
|
clickable = true
|
|
} )
|
|
end
|
|
|
|
function SetLivePartyHelpers( f121_arg0 )
|
|
local f121_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( f121_arg0 )
|
|
local f121_local1 = f121_local0.total
|
|
if f121_local1 then
|
|
f121_local1 = f121_local0.total > 1
|
|
end
|
|
local f121_local2 = Engine.GetDvarBool( "onlinegame" )
|
|
local f121_local3 = Engine.Localize
|
|
local f121_local4
|
|
if f121_local1 and f121_local2 then
|
|
f121_local4 = "@PLATFORM_INVITE_XBOX_LIVE_PARTY"
|
|
if not f121_local4 then
|
|
|
|
else
|
|
f121_arg0:processEvent( {
|
|
name = "add_button_helper_text",
|
|
button_ref = "button_alt1",
|
|
helper_text = f121_local3( f121_local4 ),
|
|
side = "left",
|
|
clickable = true
|
|
} )
|
|
if PlatformShouldShowPartyUI() then
|
|
f121_arg0:processEvent( {
|
|
name = "add_button_helper_text",
|
|
button_ref = "button_alt2",
|
|
helper_text = Engine.Localize( "@PLATFORM_PARTY_UI" ),
|
|
side = "left",
|
|
clickable = true
|
|
} )
|
|
else
|
|
f121_arg0:processEvent( {
|
|
name = "add_button_helper_text",
|
|
button_ref = "button_alt2",
|
|
helper_text = "",
|
|
side = "left",
|
|
clickable = true
|
|
} )
|
|
end
|
|
if PlatformShouldShowPartyGameInvites() and Friends.HasPartyGameInvite() then
|
|
f121_arg0:processEvent( {
|
|
name = "add_button_helper_text",
|
|
button_ref = "button_start",
|
|
helper_text = Engine.Localize( "@XBOXLIVE_PARTY_INVITE_ACCEPT" ),
|
|
side = "left",
|
|
clickable = false
|
|
} )
|
|
else
|
|
f121_arg0:processEvent( {
|
|
name = "add_button_helper_text",
|
|
button_ref = "button_start",
|
|
helper_text = "",
|
|
side = "left",
|
|
clickable = true
|
|
} )
|
|
end
|
|
end
|
|
end
|
|
f121_local4 = "@MENU_INVITE_FRIENDS"
|
|
end
|
|
|
|
function SetClanFriendsHelpers( f122_arg0 )
|
|
local f122_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( f122_arg0 )
|
|
UpdateToTopButtonHelper( f122_arg0 )
|
|
f122_arg0:processEvent( {
|
|
name = "add_button_helper_text",
|
|
button_ref = "button_alt2",
|
|
helper_text = "",
|
|
side = "left",
|
|
clickable = true
|
|
} )
|
|
f122_arg0:processEvent( {
|
|
name = "add_button_helper_text",
|
|
button_ref = "button_start",
|
|
helper_text = "",
|
|
side = "left",
|
|
clickable = true
|
|
} )
|
|
end
|
|
|
|
function ButtonAlt1Action( f123_arg0, f123_arg1 )
|
|
local f123_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( f123_arg0 )
|
|
if f123_local0.CurrentAlt1Action and f123_arg1.controller == f123_local0.exclusiveController then
|
|
f123_local0.CurrentAlt1Action( f123_arg0, f123_arg1 )
|
|
end
|
|
end
|
|
|
|
function ButtonAlt2Action( f124_arg0, f124_arg1 )
|
|
local f124_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( f124_arg0 )
|
|
if f124_local0.CurrentAlt2Action and f124_arg1.controller == f124_local0.exclusiveController then
|
|
f124_local0.CurrentAlt2Action( f124_arg0, f124_arg1 )
|
|
end
|
|
end
|
|
|
|
function ButtonStartAction( f125_arg0, f125_arg1 )
|
|
local f125_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( f125_arg0 )
|
|
if f125_local0.CurrentStartAction and f125_arg1.controller == f125_local0.exclusiveController then
|
|
f125_local0.CurrentStartAction( f125_arg0, f125_arg1 )
|
|
end
|
|
end
|
|
|
|
function ChangePage( f126_arg0, f126_arg1, f126_arg2, f126_arg3 )
|
|
local f126_local0
|
|
if f126_arg2 == 0 then
|
|
f126_local0 = not f126_arg3
|
|
else
|
|
f126_local0 = false
|
|
end
|
|
local f126_local1 = LUI.FlowManager.GetMenuScopedDataFromElement( f126_arg0 )
|
|
local f126_local2 = {}
|
|
if not f126_local1.isClanRoster then
|
|
f126_local2[#f126_local2 + 1] = {
|
|
title = Engine.Localize( "@LUA_MENU_FRIENDS" ),
|
|
feeder = OnlineFriendsFeeder,
|
|
actionsFeeder = OnlineFriendActionsFeeder,
|
|
friendsCounter = Friends.GetOnlineFriendsCount,
|
|
helpers = SetOnlineFriendsHelpers,
|
|
alt1Action = function ( f127_arg0, f127_arg1 )
|
|
f127_arg0:dispatchEventToRoot( {
|
|
name = "cursor_to_top_trigger",
|
|
immediate = true
|
|
} )
|
|
end,
|
|
alt2Action = function ( f128_arg0, f128_arg1 )
|
|
if PlatformShouldShowGameInvites() and Friends.CountPendingPlaystationInvites and Friends.CountPendingPlaystationInvites( f128_arg1.controller ) > 0 then
|
|
Engine.Exec( "gameInvitesReceived", f128_arg1.controller )
|
|
end
|
|
end
|
|
}
|
|
end
|
|
if not f126_local1.isClanRoster then
|
|
f126_local2[#f126_local2 + 1] = {
|
|
title = Engine.Localize( "@MENU_RECENT_PLAYERS" ),
|
|
feeder = RecentPlayersFeeder,
|
|
actionsFeeder = RecentPlayerActionsFeeder,
|
|
friendsCounter = Friends.GetRecentPlayersCount,
|
|
helpers = SetRecentPlayersHelpers,
|
|
alt1Action = function ( f129_arg0, f129_arg1 )
|
|
f129_arg0:dispatchEventToRoot( {
|
|
name = "cursor_to_top_trigger",
|
|
immediate = true
|
|
} )
|
|
end
|
|
}
|
|
end
|
|
if not f126_local1.isClanRoster and (Engine.IsXbox360() or Engine.IsXB3()) and not f126_local1.challengeMode then
|
|
f126_local2[#f126_local2 + 1] = {
|
|
title = Engine.Localize( "@XBOXLIVE_LIVE_PARTY" ),
|
|
actionsFeeder = LivePartyFriendActionsFeeder,
|
|
feeder = LivePartyFriendsFeeder,
|
|
friendsCounter = Friends.GetLivePartyFriendsCount,
|
|
helpers = SetLivePartyHelpers,
|
|
alt1Action = function ( f130_arg0, f130_arg1 )
|
|
local f130_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( f130_arg0 )
|
|
local f130_local1 = f130_local0.total
|
|
if f130_local1 then
|
|
f130_local1 = f130_local0.total > 1
|
|
end
|
|
if Engine.GetDvarBool( "onlinegame" ) and f130_local1 then
|
|
Friends.InviteAllLiveParty( f130_arg1.controller )
|
|
elseif Friends.OpenSystemFriendsList then
|
|
Friends.OpenSystemFriendsList( f130_arg1.controller )
|
|
else
|
|
Engine.Exec( "xshowfriendslist" )
|
|
end
|
|
end,
|
|
alt2Action = function ( f131_arg0, f131_arg1 )
|
|
Friends.OpenLivePartyUI( f131_arg1.controller )
|
|
end,
|
|
startAction = function ( f132_arg0, f132_arg1 )
|
|
if Friends.HasPartyGameInvite() then
|
|
Friends.AcceptLivePartyInvitation( f132_arg1.controller )
|
|
end
|
|
end
|
|
}
|
|
end
|
|
local f126_local3 = nil
|
|
if Clan.IsEnabled() and not f126_local1.challengeMode then
|
|
f126_local2[#f126_local2 + 1] = {
|
|
title = Friends.GetEliteClanName( f126_local1.controller ),
|
|
feeder = EliteClanFriendsFeeder,
|
|
actionsFeeder = EliteClanFriendActionsFeeder,
|
|
friendsCounter = Friends.GetEliteClanFriendsCount,
|
|
helpers = SetClanFriendsHelpers,
|
|
alt1Action = function ( f133_arg0, f133_arg1 )
|
|
f133_arg0:dispatchEventToRoot( {
|
|
name = "cursor_to_top_trigger",
|
|
immediate = true
|
|
} )
|
|
end
|
|
}
|
|
f126_local3 = #f126_local2
|
|
end
|
|
if not f126_local1.total then
|
|
f126_local1.total = 0
|
|
end
|
|
local f126_local4 = f126_local1.page_index
|
|
local f126_local5 = f126_local4
|
|
f126_local4 = math.max( 1, math.min( f126_local4 + f126_arg2, #f126_local2 ) )
|
|
if f126_arg2 ~= 0 and f126_local4 == f126_local5 then
|
|
return
|
|
end
|
|
f126_local1.page_index = f126_local4
|
|
f126_local1.feeder = f126_local2[f126_local4].feeder
|
|
f126_local1.actionsFeeder = f126_local2[f126_local4].actionsFeeder
|
|
local f126_local6 = f126_local1.total
|
|
f126_local1.total = f126_local2[f126_local4].friendsCounter( f126_local1.controller )
|
|
if f126_arg2 ~= 0 and f126_local1.total == 0 then
|
|
Engine.PlaySound( CoD.SFX.MouseOver )
|
|
end
|
|
if f126_local0 then
|
|
f126_local0 = f126_local1.total == f126_local6
|
|
end
|
|
if not f126_local0 and not f126_local1.isTopOfStack then
|
|
f126_local1.total = f126_local6
|
|
return
|
|
end
|
|
local f126_local7 = Clan.IsDownloadingData( f126_local1.controller )
|
|
if f126_local0 then
|
|
if f126_local1.page_index == f126_local3 and f126_local1.wasDownloadingClanData then
|
|
f126_local0 = f126_local7
|
|
else
|
|
f126_local0 = true
|
|
end
|
|
end
|
|
f126_local1.wasDownloadingClanData = f126_local7
|
|
if not f126_local0 then
|
|
f126_local1.current_slot = 0
|
|
f126_local1.slot_offset = 0
|
|
f126_arg0:processEvent( {
|
|
name = "wipe_vlist"
|
|
} )
|
|
f126_local1.maxButtonsOnPage = Engine.InFrontend() and 5 or 9
|
|
f126_local1.upScrollBoundary = 1
|
|
f126_local1.downScrollBoundary = f126_local1.maxButtonsOnPage - 2
|
|
end
|
|
if not f126_local0 then
|
|
f126_arg0:processEvent( {
|
|
name = "menu_refresh"
|
|
} )
|
|
else
|
|
f126_arg0:processEvent( {
|
|
name = "element_refresh"
|
|
} )
|
|
end
|
|
if not f126_local0 then
|
|
if f126_local1.isTopOfStack and not f126_arg1.mouse then
|
|
f126_arg0:processEvent( {
|
|
name = "focus_vlist"
|
|
} )
|
|
end
|
|
if f126_local1.isClanRoster then
|
|
f126_arg0:processEvent( {
|
|
name = "hide_arrows"
|
|
} )
|
|
else
|
|
if f126_local4 == 1 then
|
|
f126_arg0:processEvent( {
|
|
name = "disable_left_arrow"
|
|
} )
|
|
else
|
|
f126_arg0:processEvent( {
|
|
name = "enable_left_arrow"
|
|
} )
|
|
end
|
|
if f126_local4 == #f126_local2 then
|
|
f126_arg0:processEvent( {
|
|
name = "disable_right_arrow"
|
|
} )
|
|
else
|
|
f126_arg0:processEvent( {
|
|
name = "enable_right_arrow"
|
|
} )
|
|
end
|
|
end
|
|
f126_arg0:processEvent( {
|
|
name = "update_title",
|
|
title_text = f126_local2[f126_local4].title
|
|
} )
|
|
f126_local1.CurrentAlt1Action = f126_local2[f126_local4].alt1Action
|
|
f126_local1.CurrentAlt2Action = f126_local2[f126_local4].alt2Action
|
|
f126_local1.CurrentStartAction = f126_local2[f126_local4].startAction
|
|
UpdateSelectButtonHelper( f126_arg0 )
|
|
end
|
|
if f126_local1.total and 0 < f126_local1.total then
|
|
f126_arg0:processEvent( {
|
|
name = "show_scrollbar"
|
|
} )
|
|
if f126_local1.scrollbar then
|
|
f126_local1.scrollbar:manualUpdate( f126_local1.slot_offset, f126_local1.maxButtonsOnPage, f126_local1.total, Friends.Constants.FriendButtonHeight )
|
|
end
|
|
else
|
|
f126_arg0:processEvent( {
|
|
name = "hide_scrollbar"
|
|
} )
|
|
end
|
|
if f126_local2[f126_local4].helpers then
|
|
f126_local2[f126_local4].helpers( f126_arg0 )
|
|
end
|
|
end
|
|
|
|
function NextPage( f134_arg0, f134_arg1 )
|
|
local f134_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( f134_arg0 )
|
|
if f134_arg1.controller == f134_local0.exclusiveController then
|
|
ChangePage( f134_arg0, f134_arg1, 1, true )
|
|
end
|
|
end
|
|
|
|
function PreviousPage( f135_arg0, f135_arg1 )
|
|
local f135_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( f135_arg0 )
|
|
if f135_arg1.controller == f135_local0.exclusiveController then
|
|
ChangePage( f135_arg0, f135_arg1, -1, true )
|
|
end
|
|
end
|
|
|
|
function RefreshPage( f136_arg0, f136_arg1 )
|
|
ChangePage( f136_arg0, f136_arg1, 0, f136_arg1.forceRefresh or false )
|
|
end
|
|
|
|
function UpdatePopupTitle( f137_arg0, f137_arg1 )
|
|
f137_arg0:setText( f137_arg1.title )
|
|
end
|
|
|
|
f0_local0 = function ( f138_arg0, f138_arg1 )
|
|
local f138_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( f138_arg0 )
|
|
f138_local0.isTopOfStack = true
|
|
f138_local0.controller = f138_arg0.properties.exclusiveController
|
|
f138_local0.isClanRoster = f138_arg0.properties.isClanRoster
|
|
f138_local0.feeder = function ()
|
|
return {}
|
|
end
|
|
|
|
f138_local0.page_index = 1
|
|
f138_local0.slot_offset = 0
|
|
f138_local0.current_slot = 0
|
|
f138_local0.scrollbar = f138_arg0:getFirstDescendentById( "scrollbar" )
|
|
f138_local0.scrollbar:setList( f138_arg0:getFirstDescendentById( "friends_vlist" ) )
|
|
if Friends.IsEliteClanAllowed( f138_local0.controller ) and Engine.InFrontend() and 0 > Engine.GetDvarInt( "elite_clan_delay" ) then
|
|
Engine.Exec( "starteliteclan" )
|
|
end
|
|
if Engine.IsXB3() then
|
|
Engine.ExecNow( "friends_refresh", f138_local0.controller )
|
|
end
|
|
Engine.ExecNow( "refreshfacebookfriends" )
|
|
Engine.ExecNow( "eliteclan_refresh", f138_arg0.properties.exclusiveController )
|
|
f138_arg0:processEvent( {
|
|
name = "add_button_helper_text",
|
|
button_ref = "button_secondary",
|
|
helper_text = Engine.Localize( "@LUA_MENU_BACK" ),
|
|
side = "left",
|
|
clickable = true
|
|
} )
|
|
if Friends.HasPartyGameInvite() and not f138_local0.isClanRoster then
|
|
ChangePage( f138_arg0, f138_arg1, 2, true )
|
|
else
|
|
ChangePage( f138_arg0, f138_arg1, 0, true )
|
|
end
|
|
end
|
|
|
|
function friends_list()
|
|
return {
|
|
type = "UIElement",
|
|
id = "friends_list_id",
|
|
states = {
|
|
default = {
|
|
leftAnchor = true,
|
|
rightAnchor = true,
|
|
topAnchor = true,
|
|
bottomAnchor = true,
|
|
left = 0,
|
|
right = 0,
|
|
top = 0,
|
|
bottom = 0
|
|
}
|
|
},
|
|
handlers = {
|
|
menu_create = f0_local0,
|
|
popup_active = function ( f141_arg0, f141_arg1 )
|
|
local f141_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( f141_arg0 )
|
|
f141_local0.isTopOfStack = false
|
|
end
|
|
,
|
|
popup_inactive = function ( f142_arg0, f142_arg1 )
|
|
local f142_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( f142_arg0 )
|
|
f142_local0.isTopOfStack = true
|
|
end
|
|
,
|
|
previous_page = PreviousPage,
|
|
next_page = NextPage,
|
|
friends_refresh = RefreshPage,
|
|
cursor_to_top_trigger = CursorToTop,
|
|
update_to_top_button_helper = UpdateToTopButtonHelper,
|
|
live_connection = function ( f143_arg0, f143_arg1 )
|
|
if f143_arg1.signed_in == nil then
|
|
f143_arg1.signed_in = Engine.IsUserSignedInToLive()
|
|
end
|
|
if not f143_arg1.signed_in then
|
|
f143_arg0:dispatchEventToRoot( {
|
|
name = "kill_friends_list",
|
|
immediate = true
|
|
} )
|
|
LUI.FlowManager.RequestLeaveMenu( f143_arg0 )
|
|
end
|
|
end
|
|
|
|
},
|
|
children = {
|
|
{
|
|
type = "UITimer",
|
|
id = "friends_refresh_timer",
|
|
properties = {
|
|
event = {
|
|
name = "friends_refresh",
|
|
dispatchChildren = true
|
|
},
|
|
interval = 1000
|
|
}
|
|
},
|
|
{
|
|
type = "UIImage",
|
|
states = {
|
|
default = CoD.ColorizeState( Swatches.Overlay.Color, {
|
|
leftAnchor = true,
|
|
rightAnchor = true,
|
|
topAnchor = true,
|
|
bottomAnchor = true,
|
|
left = 0,
|
|
right = 0,
|
|
top = 0,
|
|
bottom = 0,
|
|
material = RegisterMaterial( "white" ),
|
|
alpha = Swatches.Overlay.AlphaMore
|
|
} )
|
|
}
|
|
},
|
|
{
|
|
type = "UIImage",
|
|
id = "black_bar_1",
|
|
states = {
|
|
default = {
|
|
leftAnchor = true,
|
|
topAnchor = true,
|
|
rightAnchor = true,
|
|
bottomAnchor = false,
|
|
left = 0,
|
|
bottom = 0,
|
|
right = 0,
|
|
height = 300,
|
|
red = 0,
|
|
green = 0,
|
|
blue = 0,
|
|
alpha = Engine.InFrontend() and 0 or 1,
|
|
material = RegisterMaterial( "white" )
|
|
}
|
|
}
|
|
},
|
|
{
|
|
type = "UIImage",
|
|
id = "black_bar_2",
|
|
states = {
|
|
default = {
|
|
leftAnchor = true,
|
|
topAnchor = false,
|
|
rightAnchor = true,
|
|
bottomAnchor = true,
|
|
left = 0,
|
|
top = 0,
|
|
right = 0,
|
|
height = 300,
|
|
red = 0,
|
|
green = 0,
|
|
blue = 0,
|
|
alpha = Engine.InFrontend() and 0 or 1,
|
|
material = RegisterMaterial( "white" )
|
|
}
|
|
}
|
|
},
|
|
{
|
|
type = "UIElement",
|
|
id = "popup",
|
|
properties = {
|
|
exclusiveController = MBh.Property( "exclusiveController" )
|
|
},
|
|
states = {
|
|
default = {
|
|
topAnchor = false,
|
|
bottomAnchor = false,
|
|
leftAnchor = false,
|
|
rightAnchor = false,
|
|
top = -275,
|
|
bottom = 275,
|
|
left = Engine.InFrontend() and -395 or -485,
|
|
right = Engine.InFrontend() and 395 or 485
|
|
}
|
|
},
|
|
children = {
|
|
{
|
|
type = "generic_drop_shadow",
|
|
properties = {
|
|
offset_shadow = 0
|
|
}
|
|
},
|
|
{
|
|
type = "generic_menu_titlebar",
|
|
id = "popup_title",
|
|
properties = {
|
|
title_bar_text = "",
|
|
fill_alpha = 1
|
|
}
|
|
},
|
|
{
|
|
type = "UIWorldBlur",
|
|
id = "optionsWorldBlurOverlay",
|
|
states = {
|
|
default = {
|
|
worldBlur = Engine.InFrontend() and 0 or 5
|
|
}
|
|
}
|
|
},
|
|
{
|
|
type = "generic_menu_background",
|
|
id = "popup_background",
|
|
properties = {
|
|
fill_alpha = 1
|
|
}
|
|
},
|
|
{
|
|
type = "UIElement",
|
|
id = "help_padding",
|
|
states = {
|
|
default = {
|
|
leftAnchor = true,
|
|
rightAnchor = true,
|
|
topAnchor = true,
|
|
bottomAnchor = true,
|
|
left = 1,
|
|
right = -1,
|
|
top = 0,
|
|
bottom = -1
|
|
}
|
|
},
|
|
children = {
|
|
{
|
|
type = "button_helper_text_main",
|
|
id = "help_texts",
|
|
properties = {
|
|
left_inset = 10,
|
|
top_margin = GenericFooterDims.TopMargin_WithoutBackground,
|
|
background_alpha = 0
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
type = "UIButton",
|
|
id = "arrow_left_btn",
|
|
requireFocusType = FocusType.MouseOver,
|
|
states = {
|
|
default = {
|
|
topAnchor = true,
|
|
bottomAnchor = false,
|
|
leftAnchor = true,
|
|
rightAnchor = false,
|
|
top = 6,
|
|
bottom = 28,
|
|
left = 50,
|
|
right = 72,
|
|
alpha = 1
|
|
},
|
|
disabled = {
|
|
alpha = 0.3
|
|
},
|
|
hidden = {
|
|
alpha = 0
|
|
}
|
|
},
|
|
handlers = {
|
|
button_action = function ( f144_arg0, f144_arg1 )
|
|
f144_arg0:dispatchEventToRoot( {
|
|
name = "previous_page",
|
|
mouse = true,
|
|
controller = f144_arg1.controller
|
|
} )
|
|
end
|
|
,
|
|
enable_left_arrow = MBh.AnimateToState( "default" ),
|
|
disable_left_arrow = MBh.AnimateToState( "disabled" ),
|
|
hide_arrows = MBh.AnimateToState( "hidden" )
|
|
},
|
|
children = {
|
|
{
|
|
type = "UIImage",
|
|
id = "arrow_left",
|
|
states = {
|
|
default = {
|
|
topAnchor = true,
|
|
bottomAnchor = true,
|
|
leftAnchor = true,
|
|
rightAnchor = true,
|
|
top = 0,
|
|
bottom = 0,
|
|
left = 22,
|
|
right = -22,
|
|
material = RegisterMaterial( "widg_lobby_arrow" )
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
type = "UIButton",
|
|
id = "arrow_right_btn",
|
|
requireFocusType = FocusType.MouseOver,
|
|
states = {
|
|
default = {
|
|
topAnchor = true,
|
|
bottomAnchor = false,
|
|
leftAnchor = false,
|
|
rightAnchor = true,
|
|
top = 6,
|
|
bottom = 28,
|
|
left = -72,
|
|
right = -50,
|
|
alpha = 1
|
|
},
|
|
disabled = {
|
|
alpha = 0.3
|
|
},
|
|
hidden = {
|
|
alpha = 0
|
|
}
|
|
},
|
|
handlers = {
|
|
button_action = function ( f145_arg0, f145_arg1 )
|
|
f145_arg0:dispatchEventToRoot( {
|
|
name = "next_page",
|
|
mouse = true,
|
|
controller = f145_arg1.controller
|
|
} )
|
|
end
|
|
,
|
|
enable_right_arrow = MBh.AnimateToState( "default" ),
|
|
disable_right_arrow = MBh.AnimateToState( "disabled" ),
|
|
hide_arrows = MBh.AnimateToState( "hidden" )
|
|
},
|
|
children = {
|
|
{
|
|
type = "UIImage",
|
|
id = "arrow_right",
|
|
states = {
|
|
default = {
|
|
topAnchor = true,
|
|
bottomAnchor = true,
|
|
leftAnchor = true,
|
|
rightAnchor = true,
|
|
top = 0,
|
|
bottom = 0,
|
|
left = 0,
|
|
right = 0,
|
|
material = RegisterMaterial( "widg_lobby_arrow" )
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
type = "UIElement",
|
|
id = "popup_content",
|
|
properties = {
|
|
exclusiveController = MBh.Property( "exclusiveController" )
|
|
},
|
|
states = {
|
|
default = {
|
|
leftAnchor = true,
|
|
rightAnchor = true,
|
|
topAnchor = true,
|
|
bottomAnchor = true,
|
|
left = 0,
|
|
right = 0,
|
|
top = GenericTitleBarDims.TitleBarHeight,
|
|
bottom = 0,
|
|
spacing = 0
|
|
}
|
|
},
|
|
children = {
|
|
{
|
|
type = "UIVerticalList",
|
|
id = "friends_vlist",
|
|
handlers = {
|
|
focus_vlist = function ( f146_arg0, f146_arg1 )
|
|
f146_arg0:processEvent( {
|
|
name = "lose_focus"
|
|
} )
|
|
f146_arg0:clearSavedState()
|
|
f146_arg0:processEvent( {
|
|
name = "gain_focus"
|
|
} )
|
|
end
|
|
,
|
|
wipe_vlist = function ( f147_arg0, f147_arg1 )
|
|
f147_arg0:closeChildren()
|
|
f147_arg0:processEvent( {
|
|
name = "lose_focus"
|
|
} )
|
|
f147_arg0:clearSavedState()
|
|
end
|
|
|
|
},
|
|
properties = {
|
|
exclusiveController = MBh.Property( "exclusiveController" ),
|
|
noWrap = true,
|
|
sendScrollEvents = true
|
|
},
|
|
states = {
|
|
default = {
|
|
leftAnchor = true,
|
|
rightAnchor = true,
|
|
topAnchor = true,
|
|
bottomAnchor = true,
|
|
left = 4,
|
|
right = -Friends.Constants.scrollbarWidth - 3,
|
|
top = 3,
|
|
bottom = -3,
|
|
spacing = 4,
|
|
alignment = LUI.Alignment.Center
|
|
}
|
|
},
|
|
childrenFeeder = MainFriendFeeder
|
|
},
|
|
{
|
|
type = "UIVerticalScrollbar",
|
|
id = "scrollbar",
|
|
properties = {
|
|
on_move_func = function ( f148_arg0, f148_arg1, f148_arg2, f148_arg3 )
|
|
local f148_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( f148_arg1 )
|
|
if f148_local0.total then
|
|
f148_local0.slot_offset = math.floor( f148_arg2 * f148_local0.total )
|
|
f148_local0.slot_offset = LUI.clamp( f148_local0.slot_offset, 0, math.max( 0, f148_local0.total - f148_local0.maxButtonsOnPage ) )
|
|
f148_arg1:dispatchEventToRoot( {
|
|
name = "friends_refresh",
|
|
immediate = true
|
|
} )
|
|
end
|
|
end
|
|
|
|
},
|
|
states = {
|
|
default = {
|
|
topAnchor = true,
|
|
bottomAnchor = true,
|
|
leftAnchor = false,
|
|
rightAnchor = true,
|
|
top = 3,
|
|
bottom = -41,
|
|
left = -Friends.Constants.scrollbarWidth,
|
|
right = -4,
|
|
alpha = 1
|
|
},
|
|
visible = {
|
|
alpha = 1
|
|
},
|
|
hidden = {
|
|
alpha = 0
|
|
}
|
|
},
|
|
handlers = {
|
|
hide_scrollbar = MBh.AnimateToState( "hidden", 0 ),
|
|
show_scrollbar = MBh.AnimateToState( "visible", 0 ),
|
|
init_scrollbar = function ( f149_arg0, f149_arg1 )
|
|
local f149_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( f149_arg0 )
|
|
f149_arg0:manualUpdate( f149_local0.slot_offset, f149_local0.maxButtonsOnPage, f149_local0.total, Friends.Constants.FriendButtonHeight )
|
|
end
|
|
|
|
},
|
|
children = {
|
|
{
|
|
type = "UITimer",
|
|
properties = {
|
|
event = "init_scrollbar",
|
|
interval = 1,
|
|
disposable = true,
|
|
deferNextFrame = true
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
type = "generic_back_button"
|
|
},
|
|
{
|
|
type = "UIBindButton",
|
|
handlers = {
|
|
button_left = function ( f150_arg0, f150_arg1 )
|
|
f150_arg0:dispatchEventToRoot( {
|
|
name = "previous_page",
|
|
controller = f150_arg1.controller,
|
|
immediate = true
|
|
} )
|
|
end
|
|
,
|
|
button_right = function ( f151_arg0, f151_arg1 )
|
|
f151_arg0:dispatchEventToRoot( {
|
|
name = "next_page",
|
|
controller = f151_arg1.controller,
|
|
immediate = true
|
|
} )
|
|
end
|
|
,
|
|
button_alt1 = ButtonAlt1Action,
|
|
button_alt2 = ButtonAlt2Action,
|
|
button_start = ButtonStartAction
|
|
}
|
|
}
|
|
}
|
|
}
|
|
end
|
|
|
|
LUI.MenuBuilder.registerDef( "popup_friends", friends_list )
|
|
LUI.MenuBuilder.registerDef( "popup_friend_list_actions", popup_friend_list_actions )
|
|
LUI.MenuBuilder.registerDef( "popup_friend_invite_sent", popup_friend_invite_sent )
|
|
LUI.MenuBuilder.registerDef( "popup_friend_report", popup_friend_report )
|
|
LUI.MenuBuilder.registerDef( "popup_confirm_report", popup_confirm_report )
|
|
LUI.MenuBuilder.registerDef( "popup_elite_clan_updating", popup_elite_clan_updating )
|
|
LUI.MenuBuilder.registerDef( "popup_update_clan_finished", popup_update_clan_finished )
|
|
LUI.MenuBuilder.registerDef( "popup_kick_are_you_sure", popup_kick_are_you_sure )
|
|
LUI.MenuBuilder.registerDef( "popup_transfer_are_you_sure", popup_transfer_are_you_sure )
|
|
LUI.MenuBuilder.registerDef( "popup_leave_are_you_sure", popup_leave_are_you_sure )
|
|
LUI.MenuBuilder.registerDef( "popup_leave_leader_are_you_sure", popup_leave_leader_are_you_sure )
|
|
LUI.MenuBuilder.registerDef( "popup_leave_leader_with_members", popup_leave_leader_with_members )
|
|
LUI.MenuBuilder.registerDef( "popup_change_status", popup_change_status )
|
|
LUI.MenuBuilder.registerDef( "popup_join_on_blocked_player_are_you_sure", popup_join_on_blocked_player_are_you_sure )
|
|
LockTable( _M )
|