public void LoadPlayerCenteredScores(Leaderboard _leaderboard, Action <EditorScore[], EditorScore> _onCompletion) { // Check if user has logged in if (!VerifyUser()) { if (_onCompletion != null) { _onCompletion(null, null); } return; } // Get leaderboard EGCLeaderboard _gcLeaderboard = GetLeaderboardWithID(_leaderboard.Identifier); if (_gcLeaderboard == null) { if (_onCompletion != null) { _onCompletion(null, null); } return; } // Compute range based on player rank Score _localUserScore = _gcLeaderboard.GetScoreWithUserID(m_localUser.Info.Identifier); if (_localUserScore == null) { DebugPRO.Console.LogError(Constants.kDebugTag, "[GameServices] Local user score not found."); if (_onCompletion != null) { _onCompletion(null, null); } return; } int _localPlayerRank = _localUserScore.Rank; int _maxResults = _leaderboard.MaxResults; int _loadFrom = Mathf.Max(1, _localPlayerRank - Mathf.FloorToInt(_maxResults * 0.5f)); _gcLeaderboard.Range = new Range(_loadFrom, _maxResults); // Load scores LoadScores(_gcLeaderboard, _leaderboard.TimeScope, _leaderboard.UserScope, _onCompletion); }
private void LoadScores(EGCLeaderboard _gcLeaderboard, eLeaderboardTimeScope _timeScope, eLeaderboardUserScope _userScope, Action <EditorScore[], EditorScore> _onCompletion) { EGCScore[] _filteredScoreList = GetFilteredScoreList(_gcLeaderboard, _timeScope, _userScope); EGCScore _gcLocalUserScore = _gcLeaderboard.GetScoreWithUserID(m_localUser.Info.Identifier); // Now get final list EditorScore[] _formattedScoreList = EGCScore.ConvertToEditorScoreList(_filteredScoreList); EditorScore _formattedLocalUserScore = _gcLocalUserScore == null ? null : _gcLocalUserScore.GetEditorFormatData(); // Invoke on finished action if (_onCompletion != null) { _onCompletion(_formattedScoreList, _formattedLocalUserScore); } }