using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Model { public class Game { public int Id { get; set; } public TimeSpan Duration { get; set; } public DateOnly Date { get; set; } //public ReadOnlyCollection Players { get; private set; } //private List players = new(); public ReadOnlyCollection Turns { get; private set; } private List turns = new(); public ReadOnlyDictionary Grilles { get; private set; } private readonly Dictionary grilles = new Dictionary(); public ReadOnlyDictionary Scores { get; private set; } private readonly Dictionary scores = new Dictionary(); public GameMode GameMode { get; set; } public Player Player { get; set; } //public Game(TimeSpan duration, DateOnly date, Dictionary grilles, Dictionary scores, List turns, GameMode gameMode,int id=0) //{ // Players = players.AsReadOnly(); // Duration = duration; // Date = date; // Grilles = new ReadOnlyDictionary(grilles); // Scores = new ReadOnlyDictionary(scores); // Turns = turns.AsReadOnly(); // GameMode = gameMode; // Id = id; //} public Game(DateOnly date, Player owner, GameMode gameMode, int id = 0) { Date = date; Grilles = new ReadOnlyDictionary(grilles); Scores = new ReadOnlyDictionary(scores); Turns = new ReadOnlyCollection(turns); grilles.Add(owner, new Grille()); scores.Add(owner, 0); GameMode = gameMode; Id = id; Player = owner; } public bool AddPlayerToGame(Player player) { if(grilles.ContainsKey(player) == false && scores.ContainsKey(player) == false) { grilles.Add(player, new Grille()); scores.Add(player, 0); return true; } return false; } public bool AddScoreToPlayer(Player player, int score) { if (grilles.ContainsKey(player) == true && scores.ContainsKey(player) == true) { scores[player] = score; return true; } return false; } public bool AddCaseValue(Player player, int value, int index) { if (grilles.ContainsKey(player) == true && scores.ContainsKey(player) == true) { return grilles[player].AddValueToCase(value, index); } return false; } public void AddTurn(Turn turn) { turns.Add(turn); } public void AddTime(TimeSpan time) { Duration = time; } } }