using LittleTown.Core.Enums; namespace LittleTown.Core; /// Représente les données propre à un joueur public class PlayerZone : ICloneable { /// Les ressources que possede le joueur public IDictionary Ressources { get; init; } = new Dictionary(); /// La liste des objectifs que le joueur possede/// public IReadOnlyCollection Objectives { get; init; } = new List(); /// Le marqueur de score pendant le match public int ScoreMarker { get; init; } /// Permet d'ajouter d'une type de ressources au stock du joueur /// le type de ressources /// la quantité non nulle non négative public void AddRessources(ResourceType res, int qte) { ArgumentOutOfRangeException.ThrowIfLessThan(qte, 1); if (Ressources.ContainsKey(res)) { Ressources[res] += qte; } else { Ressources.Add(res, qte); } } /// Cloner ce playerZone /// Une copie de l'objet public object Clone() { PlayerZone result = new PlayerZone() { Ressources = new Dictionary(Ressources), Objectives = new List(Objectives), ScoreMarker = ScoreMarker }; return result; } }