|
|
|
@ -6,16 +6,45 @@ using System.Text.RegularExpressions;
|
|
|
|
|
|
|
|
|
|
namespace CoreLibrary.Manageurs
|
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Classe représentant un manager.
|
|
|
|
|
/// </summary>
|
|
|
|
|
public class Manageur
|
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Attribut privé pour la persistance.
|
|
|
|
|
/// </summary>
|
|
|
|
|
private readonly IPersistance persistance;
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Liste des joueurs enregistrés.
|
|
|
|
|
/// </summary>
|
|
|
|
|
private readonly List<Joueur> joueurs;
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Liste des parties enregistrées.
|
|
|
|
|
/// </summary>
|
|
|
|
|
private readonly List<Partie> parties;
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Obtient la liste des joueurs enregistrés.
|
|
|
|
|
/// </summary>
|
|
|
|
|
public IReadOnlyList<Joueur> Joueurs => joueurs;
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Obtient la liste des parties enregistrées terminés.
|
|
|
|
|
/// </summary>
|
|
|
|
|
public IReadOnlyList<Partie> Parties => parties;
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Obtient la liste des parties non terminées.
|
|
|
|
|
/// </summary>
|
|
|
|
|
public IReadOnlyList<Partie> PartiesNonTerminees => parties.Where(partie => !partie.Termine).Reverse().ToList();
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Constructeur de manager avec la persistance spécifiée.
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="persistance">Persistance permettant le chargement des joueurs et parties.</param>
|
|
|
|
|
public Manageur(IPersistance persistance)
|
|
|
|
|
{
|
|
|
|
|
this.persistance = persistance;
|
|
|
|
@ -24,12 +53,20 @@ namespace CoreLibrary.Manageurs
|
|
|
|
|
parties = persistance.Charger<Partie>().ToList();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Sauvegarde les joueurs et les parties.
|
|
|
|
|
/// </summary>
|
|
|
|
|
private void Sauvegarder()
|
|
|
|
|
{
|
|
|
|
|
persistance.Enregistrer(joueurs.ToArray());
|
|
|
|
|
persistance.Enregistrer(parties.ToArray());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Charge une partie avec la partie à charger spécifiée.
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="partie">La partie que l'on veut charger.</param>
|
|
|
|
|
/// <returns>Renvoie la partie.</returns>
|
|
|
|
|
public Partie ChargerPartie(Partie partie)
|
|
|
|
|
{
|
|
|
|
|
parties.Remove(partie);
|
|
|
|
@ -42,6 +79,11 @@ namespace CoreLibrary.Manageurs
|
|
|
|
|
return nouvellePartie;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Créer une nouvelle partie avec les règles spécifiée.
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="regles">Regle permettant la création de la partie.</param>
|
|
|
|
|
/// <returns>Renvoie la nouvelle partie créée.</returns>
|
|
|
|
|
public Partie NouvellePartie(IRegles regles)
|
|
|
|
|
{
|
|
|
|
|
Partie partie = new Partie(regles);
|
|
|
|
@ -52,6 +94,10 @@ namespace CoreLibrary.Manageurs
|
|
|
|
|
return partie;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Suivre le cour d'une partie avec la partie spécifiée.
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="partie">La partie à écouter.</param>
|
|
|
|
|
private void EcouterPartie(Partie partie)
|
|
|
|
|
{
|
|
|
|
|
partie.PartieDemanderJoueur += (sender, e) => Sauvegarder();
|
|
|
|
@ -85,6 +131,11 @@ namespace CoreLibrary.Manageurs
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Demande un joueur avec son nom spécifié.
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="nom">Nom du joueur que l'on souhaite trouver.</param>
|
|
|
|
|
/// <returns>Renvoie le joueur s'il a été trouvé. Sinon, crée un joueur avec le nom passé en paramètre.</returns>
|
|
|
|
|
public Joueur DemanderJoueur(string nom)
|
|
|
|
|
{
|
|
|
|
|
foreach (Joueur joueur in joueurs)
|
|
|
|
|