using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Runtime.ExceptionServices; using System.Text; using System.Threading.Tasks; namespace QwirkleClassLibrary.Players { public class Leaderboard { public ReadOnlyCollection Lb => leaderboard.AsReadOnly(); private readonly List leaderboard = new(); public int IsPlayerIn(Player player) { for (int i = 0; i < leaderboard.Count; i++) { if (player.NameTag == leaderboard[i].PlayerName) { return i; } } return -1; } public void AddScoreInLead(ReadOnlyDictionary scoreBoard) { DateTime now = DateTime.Today; bool first = true; var sb = scoreBoard.OrderByDescending(x => x.Value).ThenBy(x => x.Key.NameTag); foreach (KeyValuePair pair in sb) { int i = IsPlayerIn(pair.Key); if (i != -1) { leaderboard[i].Date = now; if (first) { leaderboard[i].Victories++; } leaderboard[i].Points = pair.Value; } else { int v = 0; if (first) { v = 1; } Score score = new Score(pair.Key.NameTag, now, pair.Value, v); leaderboard.Add(score); } first = false; } } } }