using CoreLibrary.Evenements;
using CoreLibrary.Exceptions;
using CoreLibrary.Joueurs;
namespace MauiSpark.Pages;
///
/// Page de connexion où les joueurs de la partie sont entrés.
///
public partial class ConnexionPage : ContentPage
{
///
/// Indice du joueur à entrer.
///
private int? indice;
///
/// Le joueur demandé.
///
private Joueur? joueurDemande;
///
/// Constructeur de la page de connexion.
/// Initialise les paramètres de navigation et les composants de la page.
///
public ConnexionPage()
{
NavigationPage.SetHasNavigationBar(this, false);
InitializeComponent();
}
///
/// Méthode déclenchée lorsque l'événement DemanderNom de partie est appelée.
///
/// La classe qui appelle l'événement ; ici Partie.
/// L'instance de l'événement PartieDemanderJoueurEventArgs créée par Partie.
public async void QuandDemanderNom(Object? sender, PartieDemanderJoueurEventArgs e)
{
if(Application.Current != null && Application.Current.MainPage != null && ((NavigationPage)Application.Current.MainPage).CurrentPage != this)
await Application.Current.MainPage.Navigation.PushAsync(this);
Nom.Text = "";
indice = e.Indice;
joueurDemande = e.JoueurDemande;
BindingContext = $"Joueur {e.Indice}";
}
///
/// Méthode déclenchée lorsque le bouton "Se Connecter" est cliqué.
///
/// L'objet qui appelle l'événement ; ici le bouton SeConnecterPresse.
/// L'instance de l'événement EventArgs créée par le système.
private void QuandSeConnecterPresse(Object sender, EventArgs e)
{
if (joueurDemande == null || indice == null)
return;
Joueur joueur;
if (string.IsNullOrEmpty(Nom.Text))
{
joueur = new Joueur($"Joueur {indice.Value}");
}
else
{
joueur = MauiProgram.Manageur.DemanderJoueur(Nom.Text);
}
try
{
joueurDemande.SeConnecter(joueur);
}
catch(Exception exception)
when (exception is JoueurDejaPresentException || exception is NomJoueurInterditException)
{
DisplayAlert("Attention", exception.Message, "OK");
}
}
///
/// Méthode déclenchée lorsque le bouton "Robot" est cliqué.
///
/// L'objet qui appelle l'événement ; ici le bouton RobotPresse.
/// L'instance de l'événement EventArgs créée par le système.
private void QuandRobotPresse(object sender, EventArgs e)
{
if (joueurDemande == null || indice == null)
return;
Robot robot = new Robot();
joueurDemande.SeConnecter(robot);
}
}