All checks were successful
dotnet package / build (8.0.x) (push) Successful in 1m29s
temp fin de l'ajout de données au match
45 lines
1.5 KiB
C#
45 lines
1.5 KiB
C#
using LittleTown.Core.Enums;
|
|
|
|
namespace LittleTown.Core;
|
|
/// <summary> Représente les données propre à un joueur </summary>
|
|
public class PlayerZone : ICloneable
|
|
{
|
|
/// <summary> Les ressources que possede le joueur </summary>
|
|
public IDictionary<ResourceType, int> Ressources { get; init; } = new Dictionary<ResourceType, int>();
|
|
|
|
/// <summary> La liste des objectifs que le joueur possede/// </summary>
|
|
public IReadOnlyCollection<Objective> Objectives { get; init; } = new List<Objective>();
|
|
|
|
/// <summary> Le marqueur de score pendant le match </summary>
|
|
public int ScoreMarker { get; init; }
|
|
|
|
/// <summary> Permet d'ajouter d'une type de ressources au stock du joueur </summary>
|
|
/// <param name="res">le type de ressources</param>
|
|
/// <param name="qte">la quantité non nulle non négative</param>
|
|
public void AddRessources(ResourceType res, int qte)
|
|
{
|
|
ArgumentOutOfRangeException.ThrowIfLessThan(qte, 1);
|
|
if (Ressources.ContainsKey(res))
|
|
{
|
|
Ressources[res] += qte;
|
|
}
|
|
else
|
|
{
|
|
Ressources.Add(res, qte);
|
|
}
|
|
}
|
|
|
|
/// <summary> Cloner ce playerZone </summary>
|
|
/// <returns>Une copie de l'objet</returns>
|
|
public object Clone()
|
|
{
|
|
PlayerZone result = new PlayerZone()
|
|
{
|
|
Ressources = new Dictionary<ResourceType, int>(Ressources),
|
|
Objectives = new List<Objective>(Objectives),
|
|
ScoreMarker = ScoreMarker
|
|
};
|
|
|
|
return result;
|
|
}
|
|
} |