1
0
KF2-Dev-Scripts/Engine/Classes/UIDataProvider_OnlinePartyChatList.uc
2020-12-13 18:01:13 +03:00

145 lines
4.1 KiB
Ucode

/**
* Copyright 1998-2013 Epic Games, Inc. All Rights Reserved.
*/
/**
* This class is responsible for retrieving the party chat member list from the online
* subsystem and populating the UI with that data.
*/
class UIDataProvider_OnlinePartyChatList extends UIDataProvider_OnlinePlayerDataBase
native(inherit)
dependson(OnlineSubsystem)
transient;
/** Gets a copy of the friends data from the online subsystem */
var array<OnlinePartyMember> PartyMembersList;
/** The text to use for nat types */
var localized array<string> NatTypes;
/** The column name to display in the UI */
var localized string NickNameCol;
/** The column name to display in the UI */
var localized string NatTypeCol;
/** The column name to display in the UI */
var localized string IsLocalCol;
/** The column name to display in the UI */
var localized string IsInPartyVoiceCol;
/** The column name to display in the UI */
var localized string IsTalkingCol;
/** The column name to display in the UI */
var localized string IsInGameSessionCol;
/** The column name to display in the UI */
var localized string IsPlayingThisGameCol;
/**
* Binds the player to this provider. Starts the async friends list gathering
*
* @param InPlayer the player that we are retrieving friends for
*/
event OnRegister(LocalPlayer InPlayer)
{
local OnlineSubsystem OnlineSub;
local OnlinePlayerInterface PlayerInterface;
Super.OnRegister(InPlayer);
// If the player is None, we are in the editor
if (PlayerControllerId != -1)
{
// Figure out if we have an online subsystem registered
OnlineSub = class'GameEngine'.static.GetOnlineSubsystem();
if (OnlineSub != None)
{
// Grab the player interface to verify the subsystem supports it
PlayerInterface = OnlineSub.PlayerInterface;
if (PlayerInterface != None)
{
// Register that we are interested in any sign in change for this player
PlayerInterface.AddLoginChangeDelegate(OnLoginChange);
// Start the async task
// PlayerInterface.ReadFriendsList(Player.ControllerId);
}
}
}
}
/**
* Clears our delegate for getting login change notifications
*/
event OnUnregister()
{
local OnlineSubsystem OnlineSub;
local OnlinePlayerInterface PlayerInterface;
// Figure out if we have an online subsystem registered
OnlineSub = class'GameEngine'.static.GetOnlineSubsystem();
if (OnlineSub != None)
{
// Grab the player interface to verify the subsystem supports it
PlayerInterface = OnlineSub.PlayerInterface;
if (PlayerInterface != None)
{
// Clear our delegate
PlayerInterface.ClearLoginChangeDelegate(OnLoginChange);
}
}
Super.OnUnregister();
}
/**
* Executes a refetching of the friends data when the login for this player
* changes
*
* @param LocalUserNum the player that logged in/out
*/
function OnLoginChange(byte LocalUserNum)
{
local OnlineSubsystem OnlineSub;
local OnlinePlayerInterface PlayerInterface;
PartyMembersList.Length = 0;
// Figure out if we have an online subsystem registered
OnlineSub = class'GameEngine'.static.GetOnlineSubsystem();
if (OnlineSub != None)
{
// Grab the player interface to verify the subsystem supports it
PlayerInterface = OnlineSub.PlayerInterface;
if (PlayerInterface != None &&
PlayerInterface.GetLoginStatus(PlayerControllerId) > LS_NotLoggedIn)
{
// Start the async task
// PlayerInterface.ReadFriendsList(Player.ControllerId);
}
}
}
/** Re-reads the friends list to freshen any cached data */
event RefreshMembersList()
{
local OnlineSubsystem OnlineSub;
local OnlinePlayerInterface PlayerInterface;
// If the player is None, we are in the editor
if (PlayerControllerId != -1)
{
// Figure out if we have an online subsystem registered
OnlineSub = class'GameEngine'.static.GetOnlineSubsystem();
if (OnlineSub != None)
{
// Grab the player interface to verify the subsystem supports it
PlayerInterface = OnlineSub.PlayerInterface;
if (PlayerInterface != None)
{
// Start the async task
// PlayerInterface.ReadFriendsList(Player.ControllerId);
`log("Refreshing friends list");
}
}
}
}