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