示例#1
0
        internal void UpdateScores()
        {
            if (!_init)
            {
                return;
            }
            currentScores.Clear();
            var playerScore = Plugin.storedScores.FirstOrDefault(x => x.playerPosition == 0);

            if (playerScore == null)
            {
                return;
            }
            Plugin.storedScores.Sort(LeaderboardInfo.CompareScore);
            foreach (var score in Plugin.storedScores)
            {
                if (score.playerPosition != 0)
                {
                    score.playerPosition = Plugin.storedScores.IndexOf(score) + 1;
                }
            }
            int playerIndex          = Plugin.storedScores.IndexOf(playerScore);
            int additionalScoreCount = 4;
            var playerEntry          = new LeaderboardTableView.ScoreData(playerScore.playerScore, playerScore.playerName, 0, false);

            currentScores.Add(playerEntry);
            var belowScore = Plugin.storedScores.ElementAtOrDefault(playerIndex + 1);

            if (belowScore != null)
            {
                currentScores.Add(new LeaderboardTableView.ScoreData(belowScore.playerScore, belowScore.playerName, belowScore.playerPosition, false));
                additionalScoreCount--;
            }
            for (int i = playerIndex - 1; i >= 0; i--)
            {
                if (additionalScoreCount == 0)
                {
                    break;
                }
                var score = Plugin.storedScores[i];
                currentScores.Add(new LeaderboardTableView.ScoreData(score.playerScore, score.playerName, score.playerPosition, false));
                additionalScoreCount--;
            }
            for (int i = playerIndex + 2; i < Plugin.storedScores.Count; i++)
            {
                if (additionalScoreCount == 0)
                {
                    break;
                }
                var score = Plugin.storedScores[i];
                currentScores.Add(new LeaderboardTableView.ScoreData(score.playerScore, score.playerName, score.playerPosition, false));
                additionalScoreCount--;
            }
            currentScores.Sort(CompareLeaderBoardData);


            leaderboardTableView.SetScores(currentScores, currentScores.IndexOf(playerEntry));
        }
示例#2
0
 static int CompareLeaderBoardData(LeaderboardTableView.ScoreData a, LeaderboardTableView.ScoreData b)
 {
     if (!PluginConfig.Instance.sortByAcc)
     {
         return(b.score.CompareTo(a.score));
     }
     else
     {
         //       Plugin.Log("A: " + a.GetAcc() + " B: " + b.GetAcc());
         return(GetAccScoreData(b).CompareTo(GetAccScoreData(a)));
     }
 }
示例#3
0
        public static float GetAccScoreData(LeaderboardTableView.ScoreData score)
        {
            if (score.rank == 0)
            {
                if (Plugin.currentMaxPossibleScore > 0)
                {
                    return((float)score.score / Plugin.currentMaxPossibleScore);
                }
                else
                {
                    return(0);
                }
            }

            return((float)score.score / Plugin.maxPossibleScore);
        }