Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 43 additions & 3 deletions Assets/Talo Game Services/Talo/Runtime/APIs/LeaderboardsAPI.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,15 @@

namespace TaloGameServices
{
public class GetEntriesOptions
{
public int page = 0;
public int aliasId = -1;
public bool includeArchived = false;
public string propKey = "";
public string propValue = "";
}

public class LeaderboardsAPI : BaseAPI
{
private LeaderboardEntriesManager _entriesManager = new();
Expand All @@ -24,9 +33,22 @@ public List<LeaderboardEntry> GetCachedEntriesForCurrentPlayer(string internalNa
return _entriesManager.GetEntries(internalName).FindAll(e => e.playerAlias.id == Talo.CurrentAlias.id);
}

public async Task<LeaderboardEntriesResponse> GetEntries(string internalName, int page, int aliasId = -1, bool includeArchived = false)
private string BuildGetEntriesQueryParams(GetEntriesOptions options)
{
options ??= new GetEntriesOptions();

var query = new Dictionary<string, string> { ["page"] = options.page.ToString() };
if (options.aliasId != -1) query["aliasId"] = options.aliasId.ToString();
if (options.includeArchived) query["withDeleted"] = "1";
if (!string.IsNullOrEmpty(options.propKey)) query["propKey"] = options.propKey;
if (!string.IsNullOrEmpty(options.propValue)) query["propValue"] = options.propValue;

return string.Join("&", query.Select(x => $"{x.Key}={x.Value}"));
}

public async Task<LeaderboardEntriesResponse> GetEntries(string internalName, GetEntriesOptions options = null)
{
var uri = new Uri($"{baseUrl}/{internalName}/entries?page={page}" + (aliasId != -1 ? $"&aliasId={aliasId}" : "") + (includeArchived ? "&withDeleted=1" : ""));
var uri = new Uri($"{baseUrl}/{internalName}/entries?{BuildGetEntriesQueryParams(options)}");
var json = await Call(uri, "GET");

var res = JsonUtility.FromJson<LeaderboardEntriesResponse>(json);
Expand All @@ -39,10 +61,28 @@ public async Task<LeaderboardEntriesResponse> GetEntries(string internalName, in
return res;
}

[Obsolete("Use GetEntries(string internalName, GetEntriesOptions options) instead.")]
public async Task<LeaderboardEntriesResponse> GetEntries(string internalName, int page, int aliasId = -1, bool includeArchived = false)
{
return await GetEntries(internalName, new GetEntriesOptions
{
page = page,
aliasId = aliasId,
includeArchived = includeArchived
});
}

[Obsolete("Use GetEntries(string internalName, GetEntriesOptions options) and set options.aliasId = Talo.CurrentAlias.id instead.")]
public async Task<LeaderboardEntriesResponse> GetEntriesForCurrentPlayer(string internalName, int page, bool includeArchived = false)
{
Talo.IdentityCheck();
return await GetEntries(internalName, page, Talo.CurrentAlias.id, includeArchived);

return await GetEntries(internalName, new GetEntriesOptions
{
page = page,
aliasId = Talo.CurrentAlias.id,
includeArchived = includeArchived
});
}

public async Task<(LeaderboardEntry, bool)> AddEntry(string internalName, float score, params (string, string)[] propTuples)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,11 @@ private async Task LoadEntries()
{
try
{
var res = await Talo.Leaderboards.GetEntries(leaderboardName, page, includeArchived: includeArchived);
var res = await Talo.Leaderboards.GetEntries(leaderboardName, new GetEntriesOptions() {
page = page,
includeArchived = includeArchived
});

page++;
done = res.isLastPage;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ private async Task FetchEntries()
try
{
int score = UnityEngine.Random.Range(0, 10000);
LeaderboardEntriesResponse res = await Talo.Leaderboards.GetEntries(leaderboardInternalName, page);
LeaderboardEntriesResponse res = await Talo.Leaderboards.GetEntries(leaderboardInternalName, new GetEntriesOptions() { page = page });
LeaderboardEntry[] entries = res.entries;

if (entries.Length == 0)
Expand Down