/// <summary> /// Lorsque qu'un personnage finit son tour, en mourrant ou en utilisant tous ses points de déplacement et d'attaque, /// cette méthode est appelée. Elle met fin au tour local et réinitialise les composants et les propriétés spécifiques /// au personnage qui était en jeu. /// </summary> void TerminerLeTour() { NetworkManager.SendFinDeTour(); // Envoie au serveur le message que le tour de ce client est terminé IndicePersonnage = IndicePersonnage < JoueurLocal.Personnages.Count - 1 ? IndicePersonnage + 1 : 0; BoutonsActions.RéinitialiserDialogueActions(JoueurLocal.Personnages[IndicePersonnage]); Cibles.Clear(); BoutonsActions.VoirBoutonAction(false); ZoneDEffet.Visible = false; Portée.Visible = false; ZoneDéplacement.Visible = false; TourTerminé = true; }
/// <summary> /// Initialise les propriétés et les composants qui doivent être assignés /// au début du jeu pour le bon fonctionnement de la classe. /// </summary> public override void Initialize() { JoueurLocal = NetworkManager.JoueurLocal; JoueurEnnemi = NetworkManager.JoueurEnnemi; Cibles = new List <Personnage>(); ancienIndicePersonnage = -1; IndicePersonnage = 0; TempsDepuisDernierUpdate = 0; DéplacementRestant = DÉPLACEMENT_MAX; CréerBtnClasses(); PersonnageActif = JoueurLocal.Personnages[IndicePersonnage]; BoutonsActions.RéinitialiserDialogueActions(PersonnageActif); BoutonsActions.VoirBoutonAction(NetworkManager.TourActif); ZoneDEffet = Jeu.AOE1; Portée = Jeu.AOE2; ZoneDéplacement = Jeu.AOE3; TourTerminé = true; DernierSurvivant = false; base.Initialize(); }
/// <summary> /// Vérifie si un nouveau personnage est en jeu et gère les propriétés de celui-ci si c'est le cas. /// </summary> /// <param name="gameTime"></param> void VérifierDébutDeTour(GameTime gameTime) { if (ancienIndicePersonnage != IndicePersonnage || DernierSurvivant) { PersonnageActif = JoueurLocal.Personnages[IndicePersonnage]; VérifierÉtatsSpéciaux(); if (!JoueurLocal.Personnages[IndicePersonnage].EstMort && !JoueurLocal.Personnages[IndicePersonnage]._Frozen) { TourTerminé = false; BoutonsActions.VoirBoutonAction(true); PeutAttaquer = true; ActiverAttaque(); ZoneDéplacement.ChangerÉtendueEtPosition(new Vector2(DéplacementRestant * 2), PersonnageActif.Position); ancienIndicePersonnage = IndicePersonnage; DéplacementRestant = DÉPLACEMENT_MAX; DernierSurvivant = false; } else { DernierSurvivant = JoueurLocal.Personnages.FindAll(perso => !perso.EstMort).Count == 1; if (JoueurLocal.Personnages[IndicePersonnage]._Frozen) { NetworkManager.SendÉtatsSpéciaux(JoueurLocal.Personnages[IndicePersonnage], true, new List <string>() { ÉtatSpécial.FREEZE }, new List <bool>() { false }); NetworkManager.SendFinDeTour(); } IndicePersonnage = IndicePersonnage < JoueurLocal.Personnages.Count - 1 ? IndicePersonnage + 1 : 0; BoutonsActions.RéinitialiserDialogueActions(JoueurLocal.Personnages[IndicePersonnage]); BoutonsActions.VoirBoutonAction(false); } } }