iw6-lui/lui/common_menus/friendswidget.dec.lua
2024-09-12 17:25:45 +02:00

151 lines
4.5 KiB
Lua

local f0_local0 = module
local f0_local1, f0_local2 = ...
f0_local0( f0_local1, package.seeall )
CoD.PrintModuleLoad( _NAME )
function CanSomeoneAccessFriendslist()
for f1_local0 = 0, Engine.GetMaxControllerCount() - 1, 1 do
if Engine.HasActiveLocalClient( f1_local0 ) and Engine.UserCanAccessFriendsList( f1_local0 ) then
return true
end
end
return false
end
function online_friends_widget( f2_arg0, f2_arg1 )
if not f2_arg1 then
f2_arg1 = {}
end
local self = LUI.UIElement.new( {
topAnchor = false,
bottomAnchor = true,
leftAnchor = false,
rightAnchor = true,
bottom = -35,
right = -100,
width = 50,
height = 36,
alpha = 1
} )
self:registerAnimationState( "disabled", {
alpha = 0
} )
self.id = "online_friends_widget"
self:registerEventHandler( "show_widget", function ( element, event )
local f3_local0 = element:getParent()
if f3_local0 then
local f3_local1 = LUI.ButtonHelperText.CommonEvents.addFriendsButton
f3_local1.ignorePopups = f2_arg1.ignorePopups
f3_local0:processEvent( f3_local1 )
element:animateToState( "default", 100 )
if Engine.IsXB3() or not Engine.IsConsoleGame() then
Engine.ExecNow( "friends_widget_refresh" )
end
end
end )
self:registerEventHandler( "hide_widget", function ( element, event )
local f4_local0 = element:getParent()
if f4_local0 then
local f4_local1 = LUI.ButtonHelperText.CommonEvents.removeFriendsButton
f4_local1.dispatchChildren = true
f4_local0:processEvent( f4_local1 )
element:animateToState( "disabled", 0 )
end
end )
self:registerEventHandler( "live_connection", function ( element, event )
if event.signed_in == nil then
local f5_local0 = Engine.IsNetworkConnected()
if f5_local0 then
f5_local0 = Engine.IsUserSignedInToLive()
end
event.signed_in = f5_local0
end
if event.signed_in and CanSomeoneAccessFriendslist() then
element:processEvent( {
name = "show_widget"
} )
else
element:processEvent( {
name = "hide_widget"
} )
end
end )
self:registerEventHandler( "network_connection", function ( element, event )
if not event.plugged_in then
element:processEvent( {
name = "hide_widget"
} )
elseif Engine.IsUserSignedInToLive() then
element:processEvent( {
name = "show_widget"
} )
end
end )
self:registerEventHandler( "menu_create", function ( element, event )
element:processEvent( {
name = "live_connection"
} )
end )
local f2_local1 = LUI.UIBindButton.new()
f2_local1.id = "friends_bind_buttons_id"
f2_local1:registerEventHandler( "button_alt2", function ( element, event )
if Engine.IsNetworkConnected() and Engine.IsUserSignedInToLive( event.controller ) then
local f8_local0 = Engine.UserCanAccessFriendsList( event.controller )
local f8_local1 = Engine.IsUserAGuest( event.controller )
if f8_local0 and not f8_local1 then
if Engine.InFrontend() then
LUI.FlowManager.RequestPopupMenu( element, "popup_friends", true, event.controller, false, {} )
else
LUI.FlowManager.RequestAddMenu( element, "popup_friends", true, event.controller, false, {} )
end
elseif f8_local1 then
LUI.FlowManager.RequestPopupMenu( element, "mp_no_guest_popup", false, event.controller, false )
elseif Engine.IsPS3() and event.controller ~= 0 then
LUI.FlowManager.RequestPopupMenu( element, "mp_wrong_controller_popup", false, event.controller, false )
end
end
return true
end )
self:addElement( f2_local1 )
local f2_local2 = LUI.UIImage.new
local f2_local3 = {
topAnchor = false,
bottomAnchor = false,
leftAnchor = true,
rightAnchor = false,
top = -5,
bottom = 5,
left = 0,
right = 10,
material = RegisterMaterial( "widg_triangle" )
}
if not Engine.InFrontend() then
local f2_local4 = Engine.GetDvarBool( "dedicated_dhclient" )
local f2_local5 = 0.7
end
f2_local3.alpha = f2_local4 and f2_local5 or 0.25
f2_local3.zRot = -135
f2_local2 = f2_local2( f2_local3 )
f2_local2.id = "friends_triangle_id"
self:addElement( f2_local2 )
if Friends then
f2_local3 = LUI.UIText.new( CoD.ColorizeState( Colors.frontend_hilite, {
topAnchor = false,
bottomAnchor = false,
leftAnchor = false,
rightAnchor = true,
left = 0,
right = 0,
height = CoD.TextSettings.BigFont.Height,
font = CoD.TextSettings.BigFont.Font,
alignment = LUI.Alignment.Right
} ) )
f2_local3.id = "friends_number_text"
f2_local3:setupUIBindText( "CountOnlineFriends" )
self:addElement( f2_local3 )
end
return self
end
LUI.MenuBuilder.registerType( "online_friends_widget", online_friends_widget )
LockTable( _M )