public void Update() { if (Personnage == null) throw new NullReferenceException("Aucun personnage n'est assigné à ce comportement !"); ZonePrincipale = Personnage.ZonePrincipale; ZoneActuelle = Personnage.ZoneActuelle; EtatPersonnage = Personnage.Etat; }
public void AddZoneAnnexe(ZoneFinale zone) { if (zone != null) { ZoneAnnexes.Add(zone); } }
protected override void ConstruireZones() { ZoneInterne = new ZoneComposite("Zone Interne", Simulation); ZoneExterne = new ZoneFinale("Zone Externe", new TextureHerbe(), Simulation); CaissesClient = new ZoneFinale("Caisses client", new TextureGround2(), Simulation); CaissesCuistots = new ZoneFinale("Caisses cuistots", new TextureGround1(), Simulation); ZoneRepas = new ZoneFinale("Zone Repas ", new TextureMozaic1(), Simulation); }
public Coordonnees AtteindreGatherPoint(ZoneFinale zone) { if(zone == null) throw new NullReferenceException("La zone de travail est nulle !"); // Chercher les objets Gather Point dans la zone // Etablir les chemins pour y aller // Aller vers celui qui est le moins long return new ChercherCheminVersGatherPoint().CaseSuivante(this); }
protected override void ConstruireZones() { ZoneInterne = new ZoneComposite("Zone Interne", Simulation); ZoneExterne = new ZoneFinale("Zone Externe", new TextureHerbe(), Simulation); CaissesClient = new ZoneFinale("Caisses client",new TextureGround2(), Simulation); CaissesCuistots = new ZoneFinale("Caisses cuistots", new TextureGround1(), Simulation); ZoneRepas = new ZoneFinale("Zone Repas ",new TextureMozaic1(), Simulation); }
public void SetZones(ZoneGenerale zonegenerale, ZoneFinale zoneactuelle) // définit le contexte d'exécution { ZonePrincipale = zonegenerale; ZoneActuelle = zoneactuelle; if (Comportement != null) { Comportement.Update(); } }
public void Update() { if (Personnage == null) { throw new NullReferenceException("Aucun personnage n'est assigné à ce comportement !"); } ZonePrincipale = Personnage.ZonePrincipale; ZoneActuelle = Personnage.ZoneActuelle; EtatPersonnage = Personnage.Etat; }
public List<Coordonnees> FindAvailableCases(ZoneFinale zone) { List<Coordonnees> list = new List<Coordonnees>(); if (zone == null) return list; list = new List<Coordonnees>( zone.Cases); foreach (var obj in zone.Objets) // Les cases ayant des objets ne sont pas disponibles pour un pt d'app list.Remove(obj.Case); return list; }
public Coordonnees AtteindreGatherPoint(ZoneFinale zone) { if (zone == null) { throw new NullReferenceException("La zone de travail est nulle !"); } // Chercher les objets Gather Point dans la zone // Etablir les chemins pour y aller // Aller vers celui qui est le moins long return(new ChercherCheminVersGatherPoint().CaseSuivante(this)); }
public static void PlacerPoint(ZoneFinale zone) { if (zone == null) return; var list = new ObjectPointFinder().FindAvailableCases(zone); if (list.Count == 0) { Console.WriteLine("SpawnPoint -PlacerPoint: Impossible de trouver une case disponible dans la zone " + zone); return; } var point = new SpawnPoint(EGame.AgeOfKebab, list[0]); if (!zone.AjouterObjet(point)) Console.WriteLine("SpawnPoint - PlacerPoint: Erreur rencontrée à l'ajout du pt d'apparition " + point + " dans la zone " + zone); }
public List <Coordonnees> FindAvailableCases(ZoneFinale zone) { List <Coordonnees> list = new List <Coordonnees>(); if (zone == null) { return(list); } list = new List <Coordonnees>(zone.Cases); foreach (var obj in zone.Objets) // Les cases ayant des objets ne sont pas disponibles pour un pt d'app { list.Remove(obj.Case); } return(list); }
public List <Coordonnees> Find(ZoneFinale zonedepart, ZoneFinale zonearrivee) { var list = new List <Coordonnees>(); if (zonedepart == null) { Console.WriteLine("AccessPointFinder: zonedepart is null"); return(list); } if (zonearrivee == null) { Console.WriteLine("AccessPointFinder: zonearrivee is null"); return(list); } list.AddRange(from coor1 in zonedepart.Cases from coor2 in zonearrivee.Cases where coor1.EstAdjacent(coor2) select coor1); return(list); }
protected override List <ObjetAbstrait> RecupererListeObjets(ZoneFinale zone) { if (zone == null) { throw new NullReferenceException("La zone de travail est nulle !"); } var list = new List <ObjetAbstrait>(); foreach (var obj in zone.Objets) { if (obj is GatherPoint) { // Console.WriteLine("Objet pt de rassemblement trouvé: " + obj); list.Add(obj); } } return(list); // return zone.Objets.OfType<GatherPoint>().Cast<ObjetAbstrait>().ToList(); }
public static void PlacerPoint(ZoneFinale zone) { if (zone == null) { return; } var list = new ObjectPointFinder().FindAvailableCases(zone); if (list.Count == 0) { Console.WriteLine("SpawnPoint -PlacerPoint: Impossible de trouver une case disponible dans la zone " + zone); return; } var point = new SpawnPoint(EGame.AgeOfKebab, list[0]); if (!zone.AjouterObjet(point)) { Console.WriteLine("SpawnPoint - PlacerPoint: Erreur rencontrée à l'ajout du pt d'apparition " + point + " dans la zone " + zone); } }
public List <Coordonnees> FindAjacentOfZone(Coordonnees coor, ZoneFinale zone) { List <Coordonnees> list = new List <Coordonnees>(); if (zone == null) { return(list); } if (coor == null || !coor.EstValide()) { return(list); } foreach (var adj in Coordonnees.ObtenirCasesAdjacentes(coor)) { if (zone.ContientCoordonnees(adj)) { list.Add(adj); } } return(list); }
public Coordonnees RentrerDansLeRestaurant(ZoneFinale zone) { return(null); }
public AccessPoint(string nom, EGame nomdujeu, ZoneFinale zoneannexe) : base(nom, nomdujeu, new TextureWoodPlatformVertical()) { AddZoneAnnexe(zoneannexe); }
public Coordonnees RentrerDansLeRestaurant(ZoneFinale zone) { return null; }
public Coordonnees RejoindreCaisse(ZoneFinale zone) { return null; }
public Coordonnees ChercherPlace(ZoneFinale zone) { return null; }
public static void PlacerPoint(ZoneFinale zonedepart, ZoneFinale zonearrivee) { PlacerPoint(zonedepart, zonearrivee, true, null); }
protected override List<ObjetAbstrait> RecupererListeObjets(ZoneFinale zone) { if(zone == null) throw new NullReferenceException("La zone de travail est nulle !"); var list = new List<ObjetAbstrait>(); foreach (var obj in zone.Objets) { if (obj is GatherPoint) { // Console.WriteLine("Objet pt de rassemblement trouvé: " + obj); list.Add(obj); } } return list; // return zone.Objets.OfType<GatherPoint>().Cast<ObjetAbstrait>().ToList(); }
public static void PlacerPoint(ZoneFinale zonedepart, ZoneFinale zonearrivee) { PlacerPoint(zonedepart, zonearrivee, true,null); }
public List<Coordonnees> FindAjacentOfZone(Coordonnees coor, ZoneFinale zone) { List<Coordonnees> list = new List<Coordonnees>(); if (zone == null) return list; if (coor == null || !coor.EstValide()) return list; foreach (var adj in Coordonnees.ObtenirCasesAdjacentes(coor)) { if(zone.ContientCoordonnees(adj)) list.Add(adj); } return list; }
public void AddZoneAnnexe(ZoneFinale zone) { if(zone != null) ZoneAnnexes.Add(zone); }
protected static bool PlacerPoint( ZoneFinale zonedepart,ZoneFinale zonearrivee, bool doReverseToo,Coordonnees coorReverse) { if (zonedepart == null || zonearrivee == null) { Console.Write("PlacerPoint: La zone de départ/arrivée est nulle ! "); return false; } string accesspointname = "Pt d'accès de " + zonedepart.nom + " vers " + zonearrivee.nom; var accesspoint = new AccessPoint(accesspointname, zonedepart.Simulation.NomDuJeu, zonearrivee); if (doReverseToo) { var list = new AccessPointFinder().Find(zonedepart, zonearrivee); if (list.Count == 0) { Console.WriteLine("Aucun point d'accès ne peut être placé entre la zone " + zonedepart + " et " + zonearrivee); } else { foreach (var coor in list) // Place l'objet dans la première coordonnée valide { accesspoint.SetCoordonnees(coor); if (zonedepart.PeutPlacerObjet(accesspoint)) { if (!zonedepart.AjouterObjet(accesspoint)) // Pas normal donc break; Console.WriteLine("PlacerPoint: Erreur anormale rencontrée au moment de l'ajout du pt d'accès" + accesspoint + " à la zone " + zonedepart); else { foreach (var adj in new AccessPointFinder().FindAjacentOfZone(coor, zonearrivee)) { if (PlacerPoint(zonearrivee, zonedepart, false, adj)) break; } } break; } } } } else { if (coorReverse == null) { Console.WriteLine("Coordonnées du point d'accès reverse est null !"); return false; } accesspoint.SetCoordonnees(coorReverse); if (!zonedepart.AjouterObjet(accesspoint)) { foreach (var obj in zonedepart.Objets) // s'il existe dejà un pt d'acces a cet endroit, rajouter la zone d'arrivée parmi les zones annexes { if (obj is AccessPoint) { if (obj.Case.Equals(coorReverse)) { var objAccess = (AccessPoint) obj; objAccess.AddZoneAnnexe(zonearrivee); // Cas où le point d'accès est relié à plusieurs zones (>= 3) return true; } } } Console.WriteLine("PlacerPoint: Erreur rencontrée au moment de l'ajout du pt d'accès" + accesspoint + " à la zone " + zonedepart); return false; } } return true; }
protected static bool PlacerPoint(ZoneFinale zonedepart, ZoneFinale zonearrivee, bool doReverseToo, Coordonnees coorReverse) { if (zonedepart == null || zonearrivee == null) { Console.Write("PlacerPoint: La zone de départ/arrivée est nulle ! "); return(false); } string accesspointname = "Pt d'accès de " + zonedepart.nom + " vers " + zonearrivee.nom; var accesspoint = new AccessPoint(accesspointname, zonedepart.Simulation.NomDuJeu, zonearrivee); if (doReverseToo) { var list = new AccessPointFinder().Find(zonedepart, zonearrivee); if (list.Count == 0) { Console.WriteLine("Aucun point d'accès ne peut être placé entre la zone " + zonedepart + " et " + zonearrivee); } else { foreach (var coor in list) // Place l'objet dans la première coordonnée valide { accesspoint.SetCoordonnees(coor); if (zonedepart.PeutPlacerObjet(accesspoint)) { if (!zonedepart.AjouterObjet(accesspoint)) // Pas normal donc break; { Console.WriteLine("PlacerPoint: Erreur anormale rencontrée au moment de l'ajout du pt d'accès" + accesspoint + " à la zone " + zonedepart); } else { foreach (var adj in new AccessPointFinder().FindAjacentOfZone(coor, zonearrivee)) { if (PlacerPoint(zonearrivee, zonedepart, false, adj)) { break; } } } break; } } } } else { if (coorReverse == null) { Console.WriteLine("Coordonnées du point d'accès reverse est null !"); return(false); } accesspoint.SetCoordonnees(coorReverse); if (!zonedepart.AjouterObjet(accesspoint)) { foreach (var obj in zonedepart.Objets) // s'il existe dejà un pt d'acces a cet endroit, rajouter la zone d'arrivée parmi les zones annexes { if (obj is AccessPoint) { if (obj.Case.Equals(coorReverse)) { var objAccess = (AccessPoint)obj; objAccess.AddZoneAnnexe(zonearrivee); // Cas où le point d'accès est relié à plusieurs zones (>= 3) return(true); } } } Console.WriteLine("PlacerPoint: Erreur rencontrée au moment de l'ajout du pt d'accès" + accesspoint + " à la zone " + zonedepart); return(false); } } return(true); }
public Coordonnees RejoindreCaisse(ZoneFinale zone) { return(null); }
protected abstract List <ObjetAbstrait> RecupererListeObjets(ZoneFinale zone);
public Coordonnees ChercherPlace(ZoneFinale zone) { return(null); }
protected abstract List<ObjetAbstrait> RecupererListeObjets(ZoneFinale zone);
public void SetZoneToObserve(ZoneFinale zone) { ZoneToObserve = zone; Update(); }
public List<Coordonnees> Find(ZoneFinale zonedepart, ZoneFinale zonearrivee) { var list = new List<Coordonnees>(); if (zonedepart == null) { Console.WriteLine("AccessPointFinder: zonedepart is null"); return list; } if (zonearrivee == null) { Console.WriteLine("AccessPointFinder: zonearrivee is null"); return list; } list.AddRange(from coor1 in zonedepart.Cases from coor2 in zonearrivee.Cases where coor1.EstAdjacent(coor2) select coor1); return list; }