/// <summary> /// Fetch a subset of scores. The scores are passed to <paramref name="onSuccess"/>. /// </summary> /// <returns>Returns true if we have started the query</returns> public bool FetchScores(RequestType RequestType, int start, int end, FetchScoresCallback onSuccess, FailureCallback onFailure = null) { if (IsError) { return(false); } if (!IsValid) { return(DeferOnCreated(() => FetchScores(RequestType, start, end, onSuccess, onFailure), onFailure)); } client.native.userstats.DownloadLeaderboardEntries(BoardId, (LeaderboardDataRequest)RequestType, start, end, (result, error) => { if (error) { onFailure?.Invoke(Callbacks.Result.IOFailure); } else { if (_sEntryBuffer == null) { _sEntryBuffer = new List <Entry>(); } else { _sEntryBuffer.Clear(); } ReadScores(result, _sEntryBuffer); onSuccess(_sEntryBuffer.ToArray()); } }); return(true); }
public unsafe bool FetchUsersScores(RequestType RequestType, UInt64[] steamIds, FetchScoresCallback onSuccess, FailureCallback onFailure = null) { if (IsError) { return(false); } if (!IsValid) { return(DeferOnCreated(() => FetchUsersScores(RequestType, steamIds, onSuccess, onFailure), onFailure)); fixed(ulong *pointer = steamIds) { client.native.userstats.DownloadLeaderboardEntriesForUsers(BoardId, (IntPtr)pointer, steamIds.Length, (result, error) => { if (error) { onFailure?.Invoke(Callbacks.Result.IOFailure); } else { if (_sEntryBuffer == null) { _sEntryBuffer = new List <Entry>(); } else { _sEntryBuffer.Clear(); } ReadScores(result, _sEntryBuffer); onSuccess(_sEntryBuffer.ToArray()); } }); } return(true); }