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, IEnumerable)> 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, IEnumerable)[] plateau = new (IEnumerable, IEnumerable)[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"); } } }