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;
}
}