[FEAT] mise en place des action pour passer
This commit was merged in pull request #26.
This commit is contained in:
18
src/LittleTown.Core/Aggregates/PlayerZone/Objective.cs
Normal file
18
src/LittleTown.Core/Aggregates/PlayerZone/Objective.cs
Normal file
@@ -0,0 +1,18 @@
|
||||
namespace LittleTown.Core;
|
||||
|
||||
/// <summary>
|
||||
/// Représente une carte objectif dans le jeu, les objectif sont des conditions qui une fois remplie accordent des points au joueur
|
||||
/// </summary>
|
||||
public class Objective
|
||||
{
|
||||
/// <summary> la description, une clé pour la traduction </summary>
|
||||
public required string Description { get; init; }
|
||||
/// <summary> la condition de l'objectif sous forme de formule </summary>
|
||||
public string Formula { get; init; } = string.Empty;
|
||||
|
||||
/// <summary> le nombre de points que procure cet objectif </summary>
|
||||
public int Points { get; init; }
|
||||
|
||||
/// <summary> indique si l'objectif a deja été atteint ou non, un objectif ne peut etre atteint qu'une fois </summary>
|
||||
public bool Filled { get; init; }
|
||||
}
|
||||
59
src/LittleTown.Core/Aggregates/PlayerZone/PlayerZone.cs
Normal file
59
src/LittleTown.Core/Aggregates/PlayerZone/PlayerZone.cs
Normal file
@@ -0,0 +1,59 @@
|
||||
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> l'id du joueur a cette zone </summary>
|
||||
public required string PlayerName { get; init; }
|
||||
|
||||
/// <summary> La liste des objectifs que le joueur possede/// </summary>
|
||||
public IReadOnlyCollection<Objective> Objectives { get => _objectives.AsReadOnly(); init => _objectives = new List<Objective>(value); }
|
||||
private List<Objective> _objectives = 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>
|
||||
/// Assigner des objectifs au joueur
|
||||
/// </summary>
|
||||
/// <param name="objectives"></param>
|
||||
public void AddObjectives(ICollection<Objective> objectives)
|
||||
{
|
||||
_objectives.AddRange(objectives);
|
||||
}
|
||||
|
||||
/// <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,
|
||||
PlayerName = PlayerName
|
||||
};
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user