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

128 lines
4.2 KiB
Ucode

/**
* Copyright 1998-2013 Epic Games, Inc. All Rights Reserved.
*/
/**
* This class is responsible for mapping properties in an OnlineGameSettings
* object to something that the UI system can consume.
*/
class UIDataProvider_OnlineProfileSettings extends UIDataProvider_OnlinePlayerStorage
config(Game)
native(inherit)
dependson(OnlineSubsystem)
transient;
/**
* Reads the data
*
* @param PlayerInterface is the OnlinePlayerInterface used
* @param LocalUserNum the user that we are reading the data for
* @param DeviceId device for local read of player data (-1 for no device)
* @param PlayerStorage the object to copy the results to and contains the list of items to read
*
* @return true if the call succeeds, false otherwise
*/
function bool ReadData(OnlinePlayerInterface PlayerInterface, byte LocalUserNum, int DeviceId, OnlinePlayerStorage PlayerStorage)
{
//@HSL_BEGIN - BWJ - 6-22-16 - We want to manually read this data. Not when the datastore registers
return true;
// return PlayerInterface.ReadProfileSettings(LocalUserNum, OnlineProfileSettings(PlayerStorage));
//@HSL_END
}
/**
* Writes the online data for a given local user to the online data store
*
* @param PlayerInterface is the OnlinePlayerInterface used
* @param LocalUserNum the user that we are writing the data for
* @param DeviceId device for local write of player data (-1 for no device)
* @param PlayerStorage the object that contains the list of items to write
*
* @return true if the call succeeds, false otherwise
*/
function bool WriteData(OnlinePlayerInterface PlayerInterface, byte LocalUserNum, int DeviceId, OnlinePlayerStorage PlayerStorage)
{
return PlayerInterface.WriteProfileSettings(LocalUserNum,OnlineProfileSettings(PlayerStorage));
}
/**
* Fetches the requested object from the online layer's cache
*
* @param PlayerInterface is the OnlinePlayerInterface used
* @param LocalUserNum the user that we are writing the data for
* @param PlayerStorage the object that contains the list of items to write
*
* @return true if the call succeeds, false otherwise
*/
function bool GetData(OnlinePlayerInterface PlayerInterface, byte LocalUserNum)
{
local OnlineProfileSettings CachedProfile;
CachedProfile = PlayerInterface.GetProfileSettings(LocalUserNum);
if (CachedProfile != None)
{
Profile = CachedProfile;
// If there is one in the cache, the read will return immediately
return PlayerInterface.ReadProfileSettings(LocalUserNum,OnlineProfileSettings(Profile));
}
return false;
}
/**
* Sets the delegate used to notify the gameplay code that the last read request has completed
*
* @param PlayerInterface is the OnlinePlayerInterface used
* @param LocalUserNum which user to watch for read complete notifications
*/
function AddReadCompleteDelegate(OnlinePlayerInterface PlayerInterface, byte LocalUserNum)
{
PlayerInterface.AddReadProfileSettingsCompleteDelegate(LocalUserNum,OnReadStorageComplete);
}
/**
* Clears the delegate used to notify the gameplay code that the last read request has completed
*
* @param PlayerInterface is the OnlinePlayerInterface used
* @param LocalUserNum which user to stop watching for read complete notifications
*/
function ClearReadCompleteDelegate(OnlinePlayerInterface PlayerInterface, byte LocalUserNum)
{
PlayerInterface.ClearReadProfileSettingsCompleteDelegate(LocalUserNum,OnReadStorageComplete);
}
/**
* Reads this user's storage data from the online subsystem.
*/
function RefreshStorageData()
{
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)
{
// Start the async task
if (!ReadData(PlayerInterface,PlayerControllerId,Profile.DeviceId,Profile))
{
}
}
}
}
/**
* Profile doesn't care, so ignores it
*/
function OnStorageDeviceChange()
{
}
defaultproperties
{
ProviderName=ProfileData
}