using CoreLibrary.Core; using CoreLibrary.Evenements; using CoreLibrary.Exceptions; using CoreLibrary.Joueurs; 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(PartieNouveauTourEventArgs e) { Numero = $"Tour {e.Tour}"; Joueur = e.Joueur; Code = e.Code; (IReadOnlyList> jetons, IReadOnlyList < IReadOnlyList < Indicateur >> indicateurs) = e.Plateau.Grille; List<(IEnumerable, IEnumerable)> plateau = new List<(IEnumerable, IEnumerable)>(); for (int i = 0; i < e.Plateau.TailleMax; ++i) { if(i >= jetons.Count) { plateau.Add(([], [])); continue; } plateau.Add((jetons.ElementAt(i), indicateurs.ElementAt(i))); } Plateau = plateau; } } public partial class PlateauPage : ContentPage { private Code? code; private Plateau? plateau; public PlateauPage() { NavigationPage.SetHasNavigationBar(this, false); InitializeComponent(); } public async void QuandNouveauTour(object? sender, PartieNouveauTourEventArgs e) { if (Application.Current == null || Application.Current.MainPage == null) return; if (((NavigationPage)Application.Current!.MainPage).CurrentPage != this) await Application.Current.MainPage.Navigation.PushAsync(this); IEnumerable pages = Application.Current.MainPage.Navigation.NavigationStack.Reverse().Skip(1); foreach (Page page in pages) { if (page is AccueilPage) break; Application.Current.MainPage.Navigation.RemovePage(page); } code = e.Code; plateau = e.Plateau; BindingContext = new Tour(e); } private void SupprimerDernierJeton(Object sender, EventArgs e) { try { if(code != null) code.SupprimerDernierJeton(); } catch(CodeVideException) { DisplayAlert("Attention", "La code est vide", "OK"); } } private void ValiderCode(Object sender, EventArgs e) { try { if (plateau != null && code != null) plateau.AjouterCode(code); } catch (CodeIncompletException) { DisplayAlert("Attention", "La code n'est pas complet", "OK"); } } private async void QuandReglesClique(object sender, EventArgs e) { await Navigation.PushAsync(new Regle()); } }