Skip to content

Commit 890f30a

Browse files
committed
feature: Add convenience method for getting stored player data
1 parent b632042 commit 890f30a

File tree

2 files changed

+44
-1
lines changed

2 files changed

+44
-1
lines changed

Runtime/Client/LootLockerStateData.cs

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ private static bool LoadPlayerDataFromPlayerPrefs(string playerULID)
134134
}
135135

136136
string playerDataJson = PlayerPrefs.GetString($"{PlayerDataSaveSlot}_{playerULID}");
137-
if (!LootLockerJson.TryDeserializeObject(playerDataJson, out LootLockerPlayerData parsedPlayerData)) //TODO: auth platform is not parsed correctly. Write json test
137+
if (!LootLockerJson.TryDeserializeObject(playerDataJson, out LootLockerPlayerData parsedPlayerData))
138138
{
139139
return false;
140140
}
@@ -159,6 +159,36 @@ public static bool SaveStateExistsForPlayer(string playerULID)
159159
return PlayerPrefs.HasKey($"{PlayerDataSaveSlot}_{playerULID}");
160160
}
161161

162+
public static LootLockerPlayerData GetPlayerDataForPlayerWithUlidWithoutChangingState(string playerULID)
163+
{
164+
if (string.IsNullOrEmpty(playerULID))
165+
{
166+
return new LootLockerPlayerData();
167+
}
168+
LoadMetaDataFromPlayerPrefsIfNeeded();
169+
if (ActiveMetaData == null)
170+
{
171+
return new LootLockerPlayerData();
172+
}
173+
174+
if (!SaveStateExistsForPlayer(playerULID))
175+
{
176+
return new LootLockerPlayerData();
177+
}
178+
179+
if (ActivePlayerData.TryGetValue(playerULID, out var data))
180+
{
181+
return data;
182+
}
183+
184+
string playerDataJson = PlayerPrefs.GetString($"{PlayerDataSaveSlot}_{playerULID}");
185+
if (!LootLockerJson.TryDeserializeObject(playerDataJson, out LootLockerPlayerData parsedPlayerData))
186+
{
187+
return new LootLockerPlayerData();
188+
}
189+
return parsedPlayerData;
190+
}
191+
162192
[CanBeNull]
163193
public static LootLockerPlayerData GetStateForPlayerOrDefaultStateOrEmpty(string playerULID)
164194
{
@@ -330,6 +360,8 @@ public static List<string> ClearAllSavedStatesExceptForPlayer(string playerULID)
330360
}
331361
}
332362
}
363+
364+
SetDefaultPlayerULID(playerULID);
333365
return removedULIDs;
334366
}
335367

@@ -360,6 +392,8 @@ public static void SetAllPlayersToInactiveExceptForPlayer(string playerULID)
360392
{
361393
ActivePlayerData.Remove(key);
362394
}
395+
396+
SetDefaultPlayerULID(playerULID);
363397
}
364398

365399
public static List<string> GetActivePlayerULIDs()

Runtime/Game/LootLockerSDKManager.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,15 @@ public static void _OverrideLootLockerCertificateHandler(CertificateHandler cert
131131

132132
#region Multi-User Management
133133

134+
/// <summary>
135+
/// Get the information from the stored state for the player with the specified ULID.
136+
/// </summary>
137+
/// <returns>The data stored for the specified player. Will be empty if no data is found.</returns>
138+
public static LootLockerPlayerData GetPlayerDataForPlayerWithUlid(string playerUlid)
139+
{
140+
return LootLockerStateData.GetPlayerDataForPlayerWithUlidWithoutChangingState(playerUlid);
141+
}
142+
134143
/// <summary>
135144
/// Get a list of player ULIDs that have been active since game start (or state initialization).
136145
/// </summary>

0 commit comments

Comments
 (0)