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.
92 lines
3.0 KiB
92 lines
3.0 KiB
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; } = "";
|
|
}
|
|
|
|
/// <summary>
|
|
/// Page affichée lorsque la partie est terminée, montrant le résultat de la partie.
|
|
/// </summary>
|
|
|
|
public partial class VictoirePage : ContentPage
|
|
{
|
|
/// <summary>
|
|
/// Constructeur de la page de victoire.
|
|
/// Initialise les paramètres de navigation et les composants de la page.
|
|
/// </summary>
|
|
public VictoirePage()
|
|
{
|
|
NavigationPage.SetHasNavigationBar(this, false);
|
|
|
|
InitializeComponent();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 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.
|
|
/// </summary>
|
|
/// <param name="sender">La classe qui appelle l'événement ; ici Partie.</param>
|
|
/// <param name="e">L'instance de l'événement PartiePartieTermineeEventArgs créée par Partie.</param>
|
|
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<Page> 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<string> gagnants = e.Gagnants;
|
|
IReadOnlyList<string> 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"
|
|
};
|
|
}
|
|
|
|
/// <summary>
|
|
/// Méthode déclenchée lorsque le bouton de retour au menu est pressé.
|
|
/// Retourne à la page précédente.
|
|
/// </summary>
|
|
/// <param name="sender">L'objet qui appelle l'événement ; ici le bouton de retour au menu.</param>
|
|
/// <param name="e">L'instance de l'événement EventArgs créée par le système.</param>
|
|
public async void QuandMenuPresse(object sender, EventArgs e)
|
|
{
|
|
await Navigation.PopAsync();
|
|
}
|
|
} |