示例#1
0
        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);
        }