|
|
@ -1,4 +1,5 @@
|
|
|
|
using CoreLibrary.Events;
|
|
|
|
using CoreLibrary.Events;
|
|
|
|
|
|
|
|
using CoreLibrary.Exceptions;
|
|
|
|
|
|
|
|
|
|
|
|
namespace CoreLibrary
|
|
|
|
namespace CoreLibrary
|
|
|
|
{
|
|
|
|
{
|
|
|
@ -7,7 +8,7 @@ namespace CoreLibrary
|
|
|
|
private readonly IRegles regles;
|
|
|
|
private readonly IRegles regles;
|
|
|
|
|
|
|
|
|
|
|
|
public delegate string? StringEventHandler<TEventArgs>(Object? sender, TEventArgs e);
|
|
|
|
public delegate string? StringEventHandler<TEventArgs>(Object? sender, TEventArgs e);
|
|
|
|
public delegate Jeton JetonEventHandler<TEventArgs>(Object? sender, TEventArgs e);
|
|
|
|
public delegate Jeton? JetonEventHandler<TEventArgs>(Object? sender, TEventArgs e);
|
|
|
|
|
|
|
|
|
|
|
|
public event StringEventHandler<DemanderJoueurEventArgs>? DemanderJoueur;
|
|
|
|
public event StringEventHandler<DemanderJoueurEventArgs>? DemanderJoueur;
|
|
|
|
public event JetonEventHandler<DemanderJetonEventArgs>? DemanderJeton;
|
|
|
|
public event JetonEventHandler<DemanderJetonEventArgs>? DemanderJeton;
|
|
|
@ -16,6 +17,7 @@ namespace CoreLibrary
|
|
|
|
public event EventHandler<DebutPartieEventArgs>? DebutPartie;
|
|
|
|
public event EventHandler<DebutPartieEventArgs>? DebutPartie;
|
|
|
|
public event EventHandler<NouveauTourEventArgs>? NouveauTour;
|
|
|
|
public event EventHandler<NouveauTourEventArgs>? NouveauTour;
|
|
|
|
public event EventHandler<AjouterJetonEventArgs>? AjouterJeton;
|
|
|
|
public event EventHandler<AjouterJetonEventArgs>? AjouterJeton;
|
|
|
|
|
|
|
|
public event EventHandler<SupprimerDernierJetonEventArgs>? SupprimerDernierJeton;
|
|
|
|
public event EventHandler<AjouterCodeEventArgs>? AjouterCode;
|
|
|
|
public event EventHandler<AjouterCodeEventArgs>? AjouterCode;
|
|
|
|
public event EventHandler<PasserMainEventArgs>? PasserMain;
|
|
|
|
public event EventHandler<PasserMainEventArgs>? PasserMain;
|
|
|
|
public event EventHandler<PartieTermineeEventArgs>? PartieTerminee;
|
|
|
|
public event EventHandler<PartieTermineeEventArgs>? PartieTerminee;
|
|
|
@ -28,6 +30,7 @@ namespace CoreLibrary
|
|
|
|
private void QuandDebutPartie() => DebutPartie?.Invoke(this, new DebutPartieEventArgs());
|
|
|
|
private void QuandDebutPartie() => DebutPartie?.Invoke(this, new DebutPartieEventArgs());
|
|
|
|
private void QuandNouveauTour(Joueur joueur, int tour, IEnumerable<IEnumerable<Jeton?>> grille, IEnumerable<IEnumerable<Indicateur>> indicateurs) => NouveauTour?.Invoke(this, new NouveauTourEventArgs(joueur, tour, grille, indicateurs));
|
|
|
|
private void QuandNouveauTour(Joueur joueur, int tour, IEnumerable<IEnumerable<Jeton?>> grille, IEnumerable<IEnumerable<Indicateur>> indicateurs) => NouveauTour?.Invoke(this, new NouveauTourEventArgs(joueur, tour, grille, indicateurs));
|
|
|
|
private void QuandNouveauJeton(Jeton jeton) => AjouterJeton?.Invoke(this, new AjouterJetonEventArgs(jeton));
|
|
|
|
private void QuandNouveauJeton(Jeton jeton) => AjouterJeton?.Invoke(this, new AjouterJetonEventArgs(jeton));
|
|
|
|
|
|
|
|
private void QuandSupprimerDernierJeton() => SupprimerDernierJeton?.Invoke(this, new SupprimerDernierJetonEventArgs());
|
|
|
|
private void QuandNouveauCode(Code code) => AjouterCode?.Invoke(this, new AjouterCodeEventArgs(code));
|
|
|
|
private void QuandNouveauCode(Code code) => AjouterCode?.Invoke(this, new AjouterCodeEventArgs(code));
|
|
|
|
private void QuandPasserMain() => PasserMain?.Invoke(this, new PasserMainEventArgs());
|
|
|
|
private void QuandPasserMain() => PasserMain?.Invoke(this, new PasserMainEventArgs());
|
|
|
|
private void QuandPartieTerminee(IEnumerable<Joueur> gagnants, IEnumerable<Joueur> perdants) => PartieTerminee?.Invoke(this, new PartieTermineeEventArgs(gagnants, perdants));
|
|
|
|
private void QuandPartieTerminee(IEnumerable<Joueur> gagnants, IEnumerable<Joueur> perdants) => PartieTerminee?.Invoke(this, new PartieTermineeEventArgs(gagnants, perdants));
|
|
|
@ -61,9 +64,32 @@ namespace CoreLibrary
|
|
|
|
|
|
|
|
|
|
|
|
while (!code.EstComplet())
|
|
|
|
while (!code.EstComplet())
|
|
|
|
{
|
|
|
|
{
|
|
|
|
Jeton jeton = QuandDemanderJeton() ?? new Jeton();
|
|
|
|
Jeton? jeton = QuandDemanderJeton();
|
|
|
|
code.AjouterJeton(jeton);
|
|
|
|
|
|
|
|
QuandNouveauJeton(jeton);
|
|
|
|
if(jeton == null)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
if(DemanderJeton != null)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
// Si quelqu'un écoute l'événement mais ne renvoie rien, alors on supprime le dernier jeton
|
|
|
|
|
|
|
|
try
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
code.SupprimerDernierJeton();
|
|
|
|
|
|
|
|
QuandSupprimerDernierJeton();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
catch(CodeVideException){}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
// Si personne n'écoute l'évenment, on met un jeton aléatoire
|
|
|
|
|
|
|
|
jeton = new Jeton();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if(jeton != null)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
code.AjouterJeton(jeton.Value);
|
|
|
|
|
|
|
|
QuandNouveauJeton(jeton.Value);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
plateauCourant.AjouterCode(code);
|
|
|
|
plateauCourant.AjouterCode(code);
|
|
|
|
QuandNouveauCode(code);
|
|
|
|
QuandNouveauCode(code);
|
|
|
|