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 !"); } } } } } } }
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); }