Beispiel #1
0
 private void OnLeaderboardEntriesRetrievedCallback(ref LeaderboardScoresDownloaded_t callbackData)
 {
   if (callbackData.m_cEntryCount > 0)
   {
     int num = callbackData.m_cEntryCount;
     LeaderboardEntry_t leaderboardEntry = new LeaderboardEntry_t();
     LeaderboardEntries leaderboardEntries = new LeaderboardEntries(this);
     int[] scoreDetails1 = new int[this._maxDetails];
     for (int index = 0; index < num; ++index)
     {
       if (Leaderboard.SteamUnityAPI_SteamUserStats_GetDownloadedLeaderboardEntry(this._leaderboards.Stats, callbackData.m_hSteamLeaderboardEntries, index, ref leaderboardEntry, scoreDetails1, this._maxDetails))
       {
         List<int> scoreDetails2 = (List<int>) null;
         if (scoreDetails1 != null)
           scoreDetails2 = new List<int>((IEnumerable<int>) scoreDetails1);
         leaderboardEntries.Add(new LeaderboardEntry(leaderboardEntry.m_steamIDUser, leaderboardEntry.m_nGlobalRank, leaderboardEntry.m_nScore, scoreDetails2));
       }
     }
     this._onLeaderboardEntriesRetrieved(leaderboardEntries);
   }
   else
     this._onLeaderboardEntriesRetrieved((LeaderboardEntries) null);
 }
Beispiel #2
0
        private void CacheEntries(LeaderboardEntries entries, int pageSign)
        {
            if (entries != null)
            {
                int num1 = this.cachedEntries.Count == 0 || this.startIndex == -1 ? 0 : this.cachedEntries[this.startIndex].GlobalRank;
                if (pageSign == 0)
                {
                    this.cachedEntries.Clear();
                }
                if (this.leaderboard != null)
                {
                    switch (pageSign)
                    {
                    case -1:
                        num1 = Math.Max(num1 - this.virtualPageSize, 1);
                        using (IEnumerator <LeaderboardEntry> enumerator = Enumerable.Reverse <LeaderboardEntry>((IEnumerable <LeaderboardEntry>)entries).GetEnumerator())
                        {
                            while (enumerator.MoveNext())
                            {
                                this.cachedEntries.Insert(0, enumerator.Current);
                            }
                            break;
                        }

                    case 1:
                        num1 = Math.Min(num1 + this.virtualPageSize, this.TotalEntries);
                        using (IEnumerator <LeaderboardEntry> enumerator = entries.GetEnumerator())
                        {
                            while (enumerator.MoveNext())
                            {
                                this.cachedEntries.Add(enumerator.Current);
                            }
                            break;
                        }

                    default:
                        using (IEnumerator <LeaderboardEntry> enumerator = entries.GetEnumerator())
                        {
                            while (enumerator.MoveNext())
                            {
                                this.cachedEntries.Add(enumerator.Current);
                            }
                            break;
                        }
                    }
                    int num2 = -1;
                    for (int index = 0; index < this.cachedEntries.Count; ++index)
                    {
                        if (pageSign == 0)
                        {
                            if (this.cachedEntries[index].PersonaName == this.ActiveGamer.PersonaName)
                            {
                                num2 = Math.Max(index - this.virtualPageSize / 2, 0);
                                break;
                            }
                        }
                        else if (this.cachedEntries[index].GlobalRank == num1)
                        {
                            num2 = index;
                            break;
                        }
                    }
                    this.startIndex = pageSign != 0 ? num2 : (this.View == LeaderboardView.Overall ? 0 : num2);
                }
            }
            this.Reading = false;
            this.callback();
        }
Beispiel #3
0
 private void CacheEntries(LeaderboardEntries entries, int pageSign)
 {
   if (entries != null)
   {
     int num1 = this.cachedEntries.Count == 0 || this.startIndex == -1 ? 0 : this.cachedEntries[this.startIndex].GlobalRank;
     if (pageSign == 0)
       this.cachedEntries.Clear();
     if (this.leaderboard != null)
     {
       switch (pageSign)
       {
         case -1:
           num1 = Math.Max(num1 - this.virtualPageSize, 1);
           using (IEnumerator<LeaderboardEntry> enumerator = Enumerable.Reverse<LeaderboardEntry>((IEnumerable<LeaderboardEntry>) entries).GetEnumerator())
           {
             while (enumerator.MoveNext())
               this.cachedEntries.Insert(0, enumerator.Current);
             break;
           }
         case 1:
           num1 = Math.Min(num1 + this.virtualPageSize, this.TotalEntries);
           using (IEnumerator<LeaderboardEntry> enumerator = entries.GetEnumerator())
           {
             while (enumerator.MoveNext())
               this.cachedEntries.Add(enumerator.Current);
             break;
           }
         default:
           using (IEnumerator<LeaderboardEntry> enumerator = entries.GetEnumerator())
           {
             while (enumerator.MoveNext())
               this.cachedEntries.Add(enumerator.Current);
             break;
           }
       }
       int num2 = -1;
       for (int index = 0; index < this.cachedEntries.Count; ++index)
       {
         if (pageSign == 0)
         {
           if (this.cachedEntries[index].PersonaName == this.ActiveGamer.PersonaName)
           {
             num2 = Math.Max(index - this.virtualPageSize / 2, 0);
             break;
           }
         }
         else if (this.cachedEntries[index].GlobalRank == num1)
         {
           num2 = index;
           break;
         }
       }
       this.startIndex = pageSign != 0 ? num2 : (this.View == LeaderboardView.Overall ? 0 : num2);
     }
   }
   this.Reading = false;
   this.callback();
 }