128 lines
4.2 KiB
Ucode
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
|
||
|
}
|