Пример #1
0
        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);
        }
Пример #2
0
        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);
            }
        }