Problème de PATH ??
continuous-integration/drone/push Build is failing Details

master
Pauline PRADY 11 months ago
parent ef3face08f
commit a2c964c583

@ -1,17 +0,0 @@
using CoreLibrary.Joueurs;
namespace CoreLibrary.Manager
{
public interface IPersistanceManager
{
public bool EstEnregistre { get; }
public IEnumerable<Joueur> ChargerJoueurs();
public IEnumerable<Partie> ChargerParties();
public void EnregistrerJoueurs(IEnumerable<Joueur> donnees);
public void EnregistrerParties(IEnumerable<Joueur> donnees);
}
}

@ -1,41 +0,0 @@
using CoreLibrary.Joueurs;
using System.Runtime.InteropServices;
namespace CoreLibrary.Manager
{
public class Manager : IDisposable
{
private bool estDetruit;
private readonly IPersistanceManager persistance;
private readonly IEnumerable<Joueur> joueurs;
public IEnumerable<Joueur> Joueurs => joueurs;
public Manager(IPersistanceManager persistance)
{
this.persistance = persistance;
joueurs = this.persistance.Charger();
}
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
protected virtual void Dispose(bool detruire)
{
if (estDetruit) return;
persistance.Enregistrer(joueurs);
estDetruit = true;
}
~Manager()
{
Dispose(false);
}
}
}

@ -1,26 +0,0 @@
using CoreLibrary.Joueurs;
using System.Diagnostics.CodeAnalysis;
namespace CoreLibrary.Manager
{
public class Stub : IPersistanceManager
{
public bool EstEnregistre { get; private set; } = false;
public IEnumerable<Joueur> Charger()
{
return [
new Joueur("Pauline", 50, 5, 2, 0),
new Joueur("Céleste", 40, 6, 2, 0),
new Joueur("Camille", 55, 8, 0, 1),
new Joueur("Toto", 70, 0, 0, 10),
];
}
[SuppressMessage("SonarAnalyzer", "S1186", Justification = "This method is intentionally left blank.")]
public void Enregistrer(IEnumerable<Joueur> donnees)
{
EstEnregistre = true;
}
}
}

@ -1,6 +1,7 @@
using CoreLibrary.Core;
using CoreLibrary.Events;
using CoreLibrary.Joueurs;
using CoreLibrary.Persistance;
using CoreLibrary.Regles;
using System.Runtime.Serialization;
@ -14,6 +15,8 @@ namespace CoreLibrary
{
[DataMember]
public IRegles Regles { get; private set; }
[DataMember]
public IPersistance Persistance { get; }
[DataMember]
private readonly List<Joueur> joueurs = new List<Joueur>();
@ -23,7 +26,7 @@ namespace CoreLibrary
private int? courant;
/// <summary>
/// Événement déclenché lorsqu'il est nécessaire d'ajouter un joueur.
/// Événement déclenché lorsqu'il est nécessaire de d'ajouter un joueur.
/// </summary>
public event EventHandler<DemanderNomEventArgs>? DemanderNom;
@ -107,9 +110,13 @@ namespace CoreLibrary
/// Crée une nouvelle instance de la classe Partie.
/// </summary>
/// <param name="regles">Les règles de la partie.</param>
public Partie(IRegles regles)
/// <param name="persistance">Persistance de la partie.</param>
public Partie(IRegles regles, IPersistance persistance)
{
Regles = regles;
Persistance = persistance;
ChargerPartie();
}
/// <summary>
@ -174,8 +181,9 @@ namespace CoreLibrary
if (++courant == joueurs.Count)
courant = 0;
QuandPasserMain();
SauvegarderPartie();
if(courant == 0 && (plateauCourant.Tour > Regles.TourMaximum || plateaux.Where(plateau => plateau.Victoire).Any()))
if (courant == 0 && (plateauCourant.Tour > Regles.TourMaximum || plateaux.Where(plateau => plateau.Victoire).Any()))
{
Terminee();
}
@ -195,7 +203,7 @@ namespace CoreLibrary
List<Joueur> gagnants = new List<Joueur>();
List<Joueur> perdants = new List<Joueur>();
for(int i = 0; i < joueurs.Count; i++)
for (int i = 0; i < joueurs.Count; i++)
{
if (plateaux[i].Victoire)
gagnants.Add(joueurs[i]);
@ -205,5 +213,28 @@ namespace CoreLibrary
QuandPartieTerminee(gagnants, perdants);
}
/// <summary>
/// Sauvegarder la partie
/// </summary>
private void SauvegarderPartie()
{
Persistance.EnregistrerParties(new List<Partie> { this });
}
/// <summary>
/// Charger la partie
/// </summary>
private void ChargerPartie()
{
var parties = Persistance.ChargerParties();
if (parties.Any())
{
var partie = parties.First();
joueurs.AddRange(partie.joueurs);
plateaux.AddRange(partie.plateaux);
courant = partie.courant;
}
}
}
}

@ -4,6 +4,7 @@ namespace CoreLibrary.Persistance
{
public interface IPersistance
{
public bool EstEnregistre { get; }
public List<Joueur> ChargerJoueurs();

@ -0,0 +1,50 @@
using CoreLibrary.Joueurs;
using CoreLibrary.Persistance;
using System.Runtime.InteropServices;
namespace CoreLibrary.Manager
{
public class Manager : IDisposable
{
private bool estDetruit;
private readonly IPersistance persistance;
private readonly List<Joueur> joueurs;
public IReadOnlyCollection<Joueur> Joueurs => joueurs.AsReadOnly();
private readonly List<Partie> parties;
public IReadOnlyCollection<Partie> Parties => parties.AsReadOnly();
public Manager(IPersistance persistance)
{
this.persistance = persistance ?? throw new ArgumentNullException(nameof(persistance));
joueurs = this.persistance.ChargerJoueurs() ?? new List<Joueur>();
parties = this.persistance.ChargerParties() ?? new List<Partie>();
}
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
protected virtual void Dispose(bool detruire)
{
if (estDetruit) return;
if (detruire)
{
persistance.EnregistrerJoueurs(joueurs);
persistance.EnregistrerParties(parties);
}
estDetruit = true;
}
~Manager()
{
Dispose(false);
}
}
}

@ -7,16 +7,22 @@ namespace CoreLibrary.Persistance
{
public class Persistance : IPersistance
{
public List<Joueur> joueurs = new List<Joueur>();
public List<Partie> parties = new List<Partie>();
public string ancienRepertoire = Directory.GetCurrentDirectory();
private readonly string joueursFilePath = "joueurs.json";
private readonly string partiesFilePath = "parties.json";
private readonly string ancienRepertoire = Directory.GetCurrentDirectory();
public bool EstEnregistre { get; private set; }
public List<Joueur> ChargerJoueurs()
{
if (!File.Exists(joueursFilePath))
{
return new List<Joueur>();
}
DataContractJsonSerializer jsonSerializer = new DataContractJsonSerializer(typeof(List<Joueur>));
List<Joueur> joueurs;
using (FileStream s = File.OpenRead("joueurs.json"))
using (FileStream s = File.OpenRead(joueursFilePath))
{
joueurs = jsonSerializer.ReadObject(s) as List<Joueur>;
}
@ -26,9 +32,15 @@ namespace CoreLibrary.Persistance
public List<Partie> ChargerParties()
{
if (!File.Exists(partiesFilePath))
{
return new List<Partie>();
}
DataContractJsonSerializer jsonSerializer = new DataContractJsonSerializer(typeof(List<Partie>));
List<Partie> parties;
using (FileStream s = File.OpenRead("parties.json"))
using (FileStream s = File.OpenRead(partiesFilePath))
{
parties = jsonSerializer.ReadObject(s) as List<Partie>;
}
@ -40,7 +52,7 @@ namespace CoreLibrary.Persistance
{
DataContractJsonSerializer jsonSerializer = new DataContractJsonSerializer(typeof(List<Joueur>));
using (FileStream s = File.Create("joueurs.json"))
using (FileStream s = File.Create(Path.Combine(joueursFilePath, "../..")))
{
using (var writer = JsonReaderWriterFactory.CreateJsonWriter(
s,
@ -51,6 +63,8 @@ namespace CoreLibrary.Persistance
jsonSerializer.WriteObject(writer, joueurs);
}
}
EstEnregistre = true;
Directory.SetCurrentDirectory(ancienRepertoire);
}
@ -58,7 +72,7 @@ namespace CoreLibrary.Persistance
{
DataContractJsonSerializer jsonSerializer = new DataContractJsonSerializer(typeof(List<Partie>));
using (FileStream s = File.Create("parties.json"))
using (FileStream s = File.Create(Path.Combine(partiesFilePath, "../..")))
{
using (var writer = JsonReaderWriterFactory.CreateJsonWriter(
s,
@ -69,7 +83,9 @@ namespace CoreLibrary.Persistance
jsonSerializer.WriteObject(writer, parties);
}
}
EstEnregistre = true;
Directory.SetCurrentDirectory(ancienRepertoire);
}
}
}
}

@ -1,11 +1,12 @@
using CoreLibrary.Manager;
using CoreLibrary.Persistance;
using Microsoft.Extensions.Logging;
namespace MauiSpark
{
public static class MauiProgram
{
public static Manager Manager { get; private set; } = new Manager(new Stub());
public static Manager Manager { get; private set; } = new Manager(new Persistance());
public static MauiApp CreateMauiApp()
{

@ -1,5 +1,6 @@
using CoreLibrary;
using CoreLibrary.Events;
using CoreLibrary.Persistance;
using CoreLibrary.Regles;
namespace MauiSpark.Pages;
@ -16,7 +17,7 @@ public partial class Mode : ContentPage
private void QuandReglesClassiques(Object? sender, EventArgs e)
{
Partie partie = new Partie(new ReglesClassiques());
Partie partie = new Partie(new ReglesClassiques(), new Persistance());
partie.DemanderNom += QuandDemanderNom;
partie.Jouer();
}

Loading…
Cancel
Save