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); }
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(); }
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(); }