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 => leaderb.AsReadOnly(); private readonly List leaderb = new(); public Leaderboard() { } public int IsPlayerIn(Player player) { for (int i = 0; i < leaderb.Count; i++) { if (player.NameTag == leaderb[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) { leaderb[i].Date = now; if (first) { leaderb[i].Victories++; } leaderb[i].Points = pair.Value; } else { int v = 0; if (first) { v = 1; } Score score = new Score(pair.Key.NameTag, now, pair.Value, v); leaderb.Add(score); } first = false; } } } }