using CoreLibrary.Evenements; using CoreLibrary.Joueurs; namespace MauiSpark.Pages; partial class Message { public string Titre { get; init; } = ""; public string Texte { get; init; } = ""; public string Image { get; init; } = ""; } /// /// Page affichée lorsque la partie est terminée, montrant le résultat de la partie. /// public partial class VictoirePage : ContentPage { /// /// Constructeur de la page de victoire. /// Initialise les paramètres de navigation et les composants de la page. /// public VictoirePage() { NavigationPage.SetHasNavigationBar(this, false); InitializeComponent(); } /// /// Méthode déclenchée lorsque la partie est terminée. /// Affiche le résultat de la partie en fonction des gagnants et des perdants. /// /// La classe qui appelle l'événement ; ici Partie. /// L'instance de l'événement PartiePartieTermineeEventArgs créée par Partie. public async void QuandPartieTerminee(object? sender, PartiePartieTermineeEventArgs 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); } IReadOnlyList gagnants = e.Gagnants; IReadOnlyList perdants = e.Perdants; // Affichage du message en fonction du résultat de la partie if (gagnants.Count == 1) BindingContext = new Message() { Titre = "Victoire", Texte = $"Le joueur {gagnants[0]} a gagné", Image = "trophy.jpg" }; else if (gagnants.Count > 1) BindingContext = new Message() { Titre = "Egalité", Texte = $"Les joueurs {string.Join(' ', gagnants)} ont gagné", Image = "egalite.jpg" }; else BindingContext = new Message() { Titre = "Défaite", Texte = "Personne n'a trouvé le code...", Image = "defaite.png" }; } /// /// Méthode déclenchée lorsque le bouton de retour au menu est pressé. /// Retourne à la page précédente. /// /// L'objet qui appelle l'événement ; ici le bouton de retour au menu. /// L'instance de l'événement EventArgs créée par le système. public async void QuandMenuPresse(object sender, EventArgs e) { await Navigation.PopAsync(); } }