예제 #1
0
        public void ReportScore(Score _userScore, Action <EditorScore> _onCompletion)
        {
            // Couldnt verify user
            if (!VerifyUser())
            {
                // Send callback
                if (_onCompletion != null)
                {
                    _onCompletion(null);
                }

                return;
            }

            // Get leaderboard info
            EGCLeaderboard _gcLeaderboard = GetLeaderboardWithID(_userScore.LeaderboardID);

            if (_gcLeaderboard == null)
            {
                if (_onCompletion != null)
                {
                    _onCompletion(null);
                }

                return;
            }

            // Add this new score info
            string          _reportedUserID     = _userScore.User.Identifier;
            List <EGCScore> _scoreHistory       = _gcLeaderboard.Scores;
            int             _existingScoreEntry = _scoreHistory.FindIndex(_score => _score.User.Identifier.Equals(_reportedUserID));
            EGCScore        _newScoreEntry      = new EGCScore(_userScore.LeaderboardID, _reportedUserID, _userScore.Value);

            // Dint find any score record for this user
            if (_existingScoreEntry != -1)
            {
                _scoreHistory.RemoveAt(_existingScoreEntry);
            }

            // Add new entry and sort the list
            _scoreHistory.Add(_newScoreEntry);
            _scoreHistory.Sort(CompareScore);

            // Update Ranks
            for (int _iter = 0; _iter < _scoreHistory.Count; _iter++)
            {
                (_scoreHistory[_iter] as EGCScore).SetRank(_iter + 1);
            }

            // Complete action on finishing task
            if (_onCompletion != null)
            {
                _onCompletion(_newScoreEntry.GetEditorFormatData());
            }
        }
예제 #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);
            }
        }