public bool GetDownloadedLeaderboardEntry(LeaderboardEntriesHandle entries, int index, out LeaderboardEntry entry, int[] details) { CheckIfUsable(); int numberOfDetails = details == null ? 0 : details.Length; using (NativeBuffer entryBuffer = new NativeBuffer(Marshal.SizeOf(typeof(LeaderboardEntry)))) { using (NativeBuffer detailsBuffer = new NativeBuffer(numberOfDetails * sizeof(int))) { bool result = NativeMethods.Stats_GetDownloadedLeaderboardEntry(entries.AsUInt64, index, entryBuffer.UnmanagedMemory, detailsBuffer.UnmanagedMemory, numberOfDetails); // Read the entry directly from the unmanaged buffer entry = LeaderboardEntry.Create(entryBuffer.UnmanagedMemory, entryBuffer.UnmanagedSize); for (int i = 0; i < numberOfDetails; i++) { // Read all the detail values from the unmanaged buffer details[i] = Marshal.ReadInt32(detailsBuffer.UnmanagedMemory, sizeof(int) * i); } return(result); } } }
public bool GetDownloadedLeaderboardEntry(LeaderboardEntriesHandle entries, int index, out LeaderboardEntry entry, int[] details) { CheckIfUsable(); int numberOfDetails = details == null ? 0 : details.Length; using (NativeBuffer entryBuffer = new NativeBuffer(Marshal.SizeOf(typeof(LeaderboardEntry)))) { using (NativeBuffer detailsBuffer = new NativeBuffer(numberOfDetails * sizeof(int))) { bool result = NativeMethods.Stats_GetDownloadedLeaderboardEntry(entries.AsUInt64, index, entryBuffer.UnmanagedMemory, detailsBuffer.UnmanagedMemory, numberOfDetails); // Read the entry directly from the unmanaged buffer entry = LeaderboardEntry.Create(entryBuffer.UnmanagedMemory, entryBuffer.UnmanagedSize); for (int i = 0; i < numberOfDetails; i++) { // Read all the detail values from the unmanaged buffer details[i] = Marshal.ReadInt32(detailsBuffer.UnmanagedMemory, sizeof(int) * i); } return result; } } }
void TestStats() { IStats stats = null; LeaderboardHandle lHandle = default(LeaderboardHandle); LeaderboardEntriesHandle leHandle = default(LeaderboardEntriesHandle); LeaderboardEntry entry = default(LeaderboardEntry); LeaderboardSortMethod sort = LeaderboardSortMethod.None; LeaderboardDisplayType display = LeaderboardDisplayType.None; LeaderboardDataRequest request = LeaderboardDataRequest.Friends; LeaderboardUploadScoreMethod score = LeaderboardUploadScoreMethod.None; switch (sort) { case LeaderboardSortMethod.None: break; case LeaderboardSortMethod.Ascending: break; case LeaderboardSortMethod.Descending: break; default: break; } switch (display) { case LeaderboardDisplayType.None: break; case LeaderboardDisplayType.Numeric: break; case LeaderboardDisplayType.TimeSeconds: break; case LeaderboardDisplayType.TimeMilliSeconds: break; default: break; } switch (request) { case LeaderboardDataRequest.Global: break; case LeaderboardDataRequest.GlobalAroundUser: break; case LeaderboardDataRequest.Friends: break; case LeaderboardDataRequest.Users: break; default: break; } switch (score) { case LeaderboardUploadScoreMethod.None: break; case LeaderboardUploadScoreMethod.KeepBest: break; case LeaderboardUploadScoreMethod.ForceUpdate: break; default: break; } stats.UserStatsReceived += (UserStatsReceived x) => { }; stats.UserStatsStored += (UserStatsStored x) => { }; stats.UserAchievementStored += (UserAchievementStored x) => { }; stats.LeaderboardFindResult += (LeaderboardFindResult x, bool y) => { }; stats.LeaderboardScoresDownloaded += (LeaderboardScoresDownloaded x, bool y) => { }; stats.LeaderboardScoreUploaded += (LeaderboardScoreUploaded x, bool y) => { }; stats.LeaderboardUGCSet += (LeaderboardUGCSet x, bool y) => { }; stats.NumberOfCurrentPlayers += (NumberOfCurrentPlayers x, bool y) => { }; stats.UserStatsUnloaded += (UserStatsUnloaded x) => { }; stats.UserAchievementIconFetched += (UserAchievementIconFetched x) => { }; stats.GlobalAchievementPercentagesReady += (GlobalAchievementPercentagesReady x, bool y) => { }; stats.GlobalStatsReceived += (GlobalStatsReceived x, bool y) => { }; b = stats.RequestCurrentStats(); b = stats.GetStat(s, out i); b = stats.GetStat(s, out f); b = stats.SetStat(s, i); b = stats.SetStat(s, f); b = stats.UpdateAverageRateStat(s, f, d); b = stats.GetAchievement(s, out b); b = stats.SetAchievement(s); b = stats.ClearAchievement(s); b = stats.GetAchievementAndUnlockTime(s, out b, out ui); b = stats.StoreStats(); s = stats.GetAchievementDisplayAttribute(s, s); b = stats.IndicateAchievementProgress(s, ui, ui); stats.RequestUserStats(steamID); b = stats.GetUserStat(steamID, s, out i); b = stats.GetUserStat(steamID, s, out f); b = stats.GetUserAchievement(steamID, s, out b); b = stats.GetUserAchievementAndUnlockTime(steamID, s, out b, out ui); b = stats.ResetAllStats(b); stats.FindOrCreateLeaderboard(s, sort, display); stats.FindLeaderboard(s); s = stats.GetLeaderboardName(lHandle); i = stats.GetLeaderboardEntryCount(lHandle); sort = stats.GetLeaderboardSortMethod(lHandle); display = stats.GetLeaderboardDisplayType(lHandle); stats.DownloadLeaderboardEntries(lHandle, request, i, i); stats.DownloadLeaderboardEntriesForUsers(lHandle, sia); b = stats.GetDownloadedLeaderboardEntry(leHandle, i, out entry, ia); stats.UploadLeaderboardScore(lHandle, score, i, ia); stats.AttachLeaderboardUGC(lHandle, ugcHandle); stats.GetNumberOfCurrentPlayers(); stats.RequestGlobalAchievementPercentages(); i = stats.GetMostAchievedAchievementInfo(out s, out f, out b); i = stats.GetNextMostAchievedAchievementInfo(i, out s, out f, out b); b = stats.GetAchievementAchievedPercent(s, out f); stats.RequestGlobalStats(i); b = stats.GetGlobalStat(s, out l); b = stats.GetGlobalStat(s, out d); i = stats.GetGlobalStatHistory(s, out la, i); i = stats.GetGlobalStatHistory(s, out da, i); }