protected override void InsererPersonnagesRestants()
        {
            if (PersonnagesToInsert <= 0)
            {
                Console.WriteLine("Il ne reste plus de personnages à insérer");
                return;
            }
            //Insertion Personnages: Trouver la zone et le lieu où se trouvent les SpawnPoints
            foreach (var zone in ZonePrincipale.ObtenirZonesFinales())
            {
                foreach (var objet in zone.Objets) // Pour chaque objet de cette zone finale
                {
                    if (objet is SpawnPoint)       // Si c'est un pt d'apparition
                    {
//                        Console.WriteLine("Objet SpawnPoint trouvé " + objet + " dans la zone " + zone);
                        var casesAdjacentes = Coordonnees.ObtenirCasesAdjacentes(objet.Case);
                        foreach (var coor in casesAdjacentes)   // Pour chaque case adjacente à ce pt d'accès
                        {
                            if (zone.ContientCoordonnees(coor)) // De cette zone !
                            {
//                                Console.WriteLine("Case adjacente  trouvée: " + coor + " dans la " + zone);
                                var            node = (Node <Case>)zone.Simulation.Tableau[coor.X, coor.Y];
                                CaseAgeOfKebab c    = node.Value as CaseAgeOfKebab;
                                if (c == null)
                                {
                                    throw new InvalidCastException("La case n'est pas au format CaseAgeOfKebab");
                                }
                                if (c.Walkable) // Si un personnage peut aller dans cette case, alors ..
                                {
                                    if (PersonnagesToInsert > 0)
                                    {
                                        var perso = PersonnageToInsertAt(coor);
                                        if (zone.AjouterPersonnage(perso))
                                        {
                                            Console.WriteLine("Insertion du personnage " + perso);
                                            perso.SetZones(ZonePrincipale, zone);
                                            ++PersonnagesInseres;
                                            --PersonnagesToInsert;
                                            AttacherPersonnage((Client)perso);
                                        }
                                    }
                                }
                                else
                                {
                                    Console.WriteLine("Cette Case n'est pas Walkable !");
                                }
                            }
                        }
                    }
                }
            }
        }
Пример #2
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);
        }