Exemplo n.º 1
0
        private int?TryInsertIntoList(List <BlockGameMessages.HighScoreEntry> highScoreEntries, BlockGameMessages.HighScoreEntry entry)
        {
            if (highScoreEntries.Count < 5)
            {
                highScoreEntries.Add(entry);
                return(GetPlacement(highScoreEntries, entry));
            }

            if (highScoreEntries.Min(e => e.Score) >= entry.Score)
            {
                return(null);
            }

            var lowestHighscore = highScoreEntries.Min();

            highScoreEntries.Remove(lowestHighscore);
            highScoreEntries.Add(entry);
            return(GetPlacement(highScoreEntries, entry));
        }
Exemplo n.º 2
0
        private int?GetPlacement(List <BlockGameMessages.HighScoreEntry> highScoreEntries, BlockGameMessages.HighScoreEntry entry)
        {
            int?placement = null;

            if (highScoreEntries.Contains(entry))
            {
                highScoreEntries.Sort((p1, p2) => p2.Score.CompareTo(p1.Score));
                placement = 1 + highScoreEntries.IndexOf(entry);
            }

            return(placement);
        }
Exemplo n.º 3
0
        public HighScorePlacement RegisterHighScore(string name, int score)
        {
            var entry = new BlockGameMessages.HighScoreEntry(name, score);

            return(new HighScorePlacement(TryInsertIntoList(_roundHighscores, entry), TryInsertIntoList(_globalHighscores, entry)));
        }