/* Ici on exécute le comportement paramétré, qui lui aura un algorithme de recherche * différent prédéfini pour chaque état */ public override void Execution() { // Console.WriteLine("Le personnage s'apprête à effectuer une action ..."); if (EtatPersonnage is EtatClientEnAttenteDeFaim) { // Décrémenter points de vie // S'il est dans la zone externe, il doit atteindre le point de rassemblement if (PersonnageClient.PointsDeVie > 0) { --PersonnageClient.PointsDeVie; } if (ZoneActuelle.nom == "Zone Externe") { var coor = PersonnageClient.AtteindreGatherPoint(ZoneActuelle); if (coor != null && coor.EstValide()) { Console.WriteLine("Déplacement du personnage de " + PersonnageClient.Case + " vers " + coor + ", direction pt de Rassemblement"); PersonnageClient.Case = coor; } } else { throw new InvalidOperationException("Le personnage n'est pas dans la zone externe .."); } } else { throw new InvalidCastException("Le comportement ne correspond pas à l'état du personnage !"); } }
public override void Execution() { if (EtatPersonnage is EtatClientVaCommander) { // Décrémenter points de vie // S'il est dans la zone externe, il doit atteindre le point de rassemblement if (PersonnageClient.PointsDeVie > 0) { --PersonnageClient.PointsDeVie; } if (ZoneActuelle.nom == "Zone Externe") { var coor = PersonnageClient.RentrerDansLeRestaurant(ZoneActuelle); //if (coor != null && coor.EstValide()) //{ // Console.WriteLine("Déplacement du personnage de " + PersonnageClient.Case + " vers " + coor + ", direction pt de Rassemblement"); // PersonnageClient.Case = coor; //} } else { throw new InvalidOperationException("Le personnage n'est pas dans la zone externe .."); } } else { throw new InvalidCastException("Le comportement ne correspond pas à l'état du personnage !"); } }