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); } }