/// <summary> /// Internal function to create the four high score entries. /// </summary> private HighScoreEntry[] CreateEntries( string username, Score score) { // Create a list of four entries HighScoreEntry[] entries = new HighScoreEntry[4]; entries[0] = new HighScoreEntry(); entries[0].Name = username; entries[0].UtcWhen = DateTime.UtcNow; entries[0].Score = score.CurrentScore; entries[1] = new HighScoreEntry(); entries[1].Name = username; entries[1].UtcWhen = DateTime.UtcNow; entries[1].Score = score.TotalWords; entries[2] = new HighScoreEntry(); entries[2].Name = username; entries[2].UtcWhen = DateTime.UtcNow; entries[2].Word = score.LongestWord; entries[2].Score = score.LongestWord.Length; entries[3] = new HighScoreEntry(); entries[3].Name = username; entries[3].UtcWhen = DateTime.UtcNow; entries[3].Word = score.HighestWord; entries[3].Score = score.HighestWordScore; // Return the entries return(entries); }
/// <summary> /// Returns true if this score is in the list. /// </summary> public bool IsHighScore( HighScoreEntry entry, LinkedList <HighScoreEntry> list) { // If we haven't hit the highest entries, then yes if (list.Count < MaximumEntries) { return(true); } // See if our score is higher than the last one return(list.Last.Score < entry.Score); }
/// <summary> /// This function adds a high score to a given list. /// </summary> private void AddHighScore( HighScoreEntry entry, LinkedList <HighScoreEntry> list) { // Don't bother if we aren't on the list if (!IsHighScore(entry, list)) { return; } // Add it, sort it, and remove any excess list.Add(entry); list.Sort(); while (list.Count > MaximumEntries) { list.RemoveLast(); } }