コード例 #1
0
 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;
 }
コード例 #2
0
 public void AddZoneAnnexe(ZoneFinale zone)
 {
     if (zone != null)
     {
         ZoneAnnexes.Add(zone);
     }
 }
コード例 #3
0
 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);
 }
コード例 #4
0
 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);
 }
コード例 #5
0
 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);
 }
コード例 #6
0
 public void SetZones(ZoneGenerale zonegenerale, ZoneFinale zoneactuelle) // définit le contexte d'exécution
 {
     ZonePrincipale = zonegenerale;
     ZoneActuelle   = zoneactuelle;
     if (Comportement != null)
     {
         Comportement.Update();
     }
 }
コード例 #7
0
 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;
 }
コード例 #8
0
        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;
        }
コード例 #9
0
 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));
 }
コード例 #10
0
 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);
 }
コード例 #11
0
        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);
        }
コード例 #12
0
        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);
        }
コード例 #13
0
        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();
        }
コード例 #14
0
        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);
            }
        }
コード例 #15
0
        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);
        }
コード例 #16
0
 public Coordonnees RentrerDansLeRestaurant(ZoneFinale zone)
 {
     return(null);
 }
コード例 #17
0
 public AccessPoint(string nom, EGame nomdujeu, ZoneFinale zoneannexe)
     : base(nom, nomdujeu, new TextureWoodPlatformVertical())
 {
     AddZoneAnnexe(zoneannexe);
 }
コード例 #18
0
 public Coordonnees RentrerDansLeRestaurant(ZoneFinale zone)
 {
     return null;
 }
コード例 #19
0
 public Coordonnees RejoindreCaisse(ZoneFinale zone)
 {
     return null;
 }
コード例 #20
0
 public Coordonnees ChercherPlace(ZoneFinale zone)
 {
     return null;
 }
コード例 #21
0
 public static void PlacerPoint(ZoneFinale zonedepart, ZoneFinale zonearrivee)
 {
     PlacerPoint(zonedepart, zonearrivee, true, null);
 }
コード例 #22
0
 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();
 }
コード例 #23
0
 public static void PlacerPoint(ZoneFinale zonedepart, ZoneFinale zonearrivee)
 {
     PlacerPoint(zonedepart, zonearrivee, true,null);
 }
コード例 #24
0
        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;
        }
コード例 #25
0
 public void AddZoneAnnexe(ZoneFinale zone)
 {
     if(zone != null) ZoneAnnexes.Add(zone);
 }
コード例 #26
0
        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;
        }
コード例 #27
0
 public AccessPoint(string nom, EGame nomdujeu, ZoneFinale zoneannexe)
     : base(nom, nomdujeu, new TextureWoodPlatformVertical())
 {
     AddZoneAnnexe(zoneannexe);
 }
コード例 #28
0
        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);
        }
コード例 #29
0
 public Coordonnees RejoindreCaisse(ZoneFinale zone)
 {
     return(null);
 }
コード例 #30
0
 protected abstract List <ObjetAbstrait> RecupererListeObjets(ZoneFinale zone);
コード例 #31
0
 public Coordonnees ChercherPlace(ZoneFinale zone)
 {
     return(null);
 }
コード例 #32
0
 protected abstract List<ObjetAbstrait> RecupererListeObjets(ZoneFinale zone);
コード例 #33
0
ファイル: Case.cs プロジェクト: tibow91/MetaSimulatorConsole
 public void SetZoneToObserve(ZoneFinale zone)
 {
     ZoneToObserve = zone;
     Update();
 }
コード例 #34
0
        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;
        }