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)); }
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); }
public HighScorePlacement RegisterHighScore(string name, int score) { var entry = new BlockGameMessages.HighScoreEntry(name, score); return(new HighScorePlacement(TryInsertIntoList(_roundHighscores, entry), TryInsertIntoList(_globalHighscores, entry))); }