You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
mastermind/Sources/MauiSpark/Pages/Plateau.xaml.cs

90 lines
2.4 KiB

using CoreLibrary;
using CoreLibrary.Core;
using CoreLibrary.Events;
using CoreLibrary.Exceptions;
using CoreLibrary.Joueurs;
using MauiSpark.Convertisseurs;
namespace MauiSpark.Pages;
internal class Tour
{
public IEnumerable<(IEnumerable<Jeton>, IEnumerable<Indicateur>)> Plateau { get; private init; }
public Joueur Joueur { get; private init; }
public string Numero { get; private init; }
public Code Code { get; private init; }
public Tour(NouveauTourEventArgs e)
{
Numero = $"Tour {e.Tour}";
Joueur = e.Joueur;
Code = e.Code;
(IEnumerable<Jeton>, IEnumerable<Indicateur>)[] plateau = new (IEnumerable<Jeton>, IEnumerable<Indicateur>)[e.Grille.Count()];
for (int i = 0; i < e.Grille.Count(); ++i)
{
plateau[i] = (e.Grille.ElementAt(i).Where(x => x.HasValue).Select(x => x!.Value), e.Indicateurs.ElementAt(i));
}
Plateau = plateau;
}
}
public partial class Plateau : ContentPage
{
private readonly Code code;
private readonly Joueur joueur;
public Plateau(Partie p, NouveauTourEventArgs e)
{
NavigationPage.SetHasBackButton(this, false);
NavigationPage.SetHasNavigationBar(this, false);
InitializeComponent();
code = e.Code;
joueur = e.Joueur;
BindingContext = new Tour(e);
}
private void CouleurPresee(Object sender, EventArgs e)
{
Label label = (Label)sender;
Couleur couleur = (Couleur)new CouleurVersCouleurMAUI().ConvertBack(label.TextColor, null, null, null);
try
{
code.AjouterJeton(new Jeton(couleur));
}
catch (CodeCompletException ignored)
{
DisplayAlert("Attention", "La code est plein", "OK");
}
}
private void SupprimerDernierJeton(Object sender, EventArgs e)
{
try
{
code.SupprimerDernierJeton();
}
catch(CodeVideException ignored)
{
DisplayAlert("Attention", "La code est vide", "OK");
}
}
private void ValiderCode(Object sender, EventArgs e)
{
try
{
joueur.Code(code);
}
catch (CodeIncompletException ignored)
{
DisplayAlert("Attention", "La code n'est pas complet", "OK");
}
}
}