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/Vues/PartieCommenceeVue.xaml.cs

90 lines
2.8 KiB

using CoreLibrary;
using MauiSpark.Pages;
using System.ComponentModel;
namespace MauiSpark.Vues;
/// <summary>
/// Vue affichant les détails d'une partie en cours.
/// </summary>
public partial class PartieCommenceeVue : ContentView, INotifyPropertyChanged
{
/// <summary>
/// Propriété de dépendance pour la partie en cours.
/// </summary>
public static readonly BindableProperty PartieProperty = BindableProperty.Create(nameof(Partie), typeof(Partie), typeof(PartieCommenceeVue), null, propertyChanged: QuandPartieChangee);
/// <summary>
/// La partie en cours.
/// </summary>
public Partie Partie
{
get => (Partie)GetValue(PartieProperty);
set => SetValue(PartieProperty, value);
}
/// <summary>
/// Le nom des règles de la partie.
/// </summary>
public string NomRegles
{
get => Partie != null ? Partie.Regles.Nom : "";
}
/// <summary>
/// Le tour actuel de la partie.
/// </summary>
public string TourActuel
{
get => $"Tour : {(Partie != null ? Partie.Tour : 0)} / {(Partie != null ? Partie.Regles.NbTour : 0)}";
}
/// <summary>
/// Les joueurs participant à la partie.
/// </summary>
public string[] Joueurs
{
get => Partie != null ? Partie.Joueurs.ToArray() : [];
}
/// <summary>
/// Le nombre de joueurs participant à la partie.
/// </summary>
public string NombreJoueurs => $"Joueurs : {Joueurs.Length} / {(Partie != null ? Partie.Regles.NbJoueurs : 0)}";
/// <summary>
/// Méthode déclenchée lorsqu'une propriété de la partie change.
/// </summary>
private static void QuandPartieChangee(BindableObject bindable, object ancienneValeur, object nouvelleValeur)
{
((PartieCommenceeVue)bindable).OnPropertyChanged(nameof(NomRegles));
((PartieCommenceeVue)bindable).OnPropertyChanged(nameof(TourActuel));
((PartieCommenceeVue)bindable).OnPropertyChanged(nameof(Joueurs));
((PartieCommenceeVue)bindable).OnPropertyChanged(nameof(NombreJoueurs));
}
/// <summary>
/// Méthode déclenchée lorsqu'un utilisateur appuie sur la vue de la partie.
/// </summary>
private void PartiePressee(object? sender, EventArgs e)
{
if (Partie == null)
return;
Partie partie = MauiProgram.Manageur.ChargerPartie(Partie);
partie.PartieDemanderJoueur += new ConnexionPage().QuandDemanderNom;
partie.PartiePartieTerminee += new VictoirePage().QuandPartieTerminee;
partie.PartieNouveauTour += new PlateauPage().QuandNouveauTour;
partie.Jouer();
}
/// <summary>
/// Constructeur par défaut de la vue de la partie en cours.
/// </summary>
public PartieCommenceeVue()
{
InitializeComponent();
}
}