Example #1
0
 /// <summary>
 /// Constructeur paramétré initialisant les attributs de this. Invoque la fonction privée
 /// Initialiser() qui fait la quasi-totalité du travail d'initialisation de l'instance.
 /// </summary>
 /// <param name="monde">Monde de tuiles à utiliser pour construire la grille.</param>
 /// <param name="couleursFranchissables">Liste de couleurs à considérer comme franchissable 
 /// (voir fonction Initialiser()).</param>
 public PFGrille(MondeTuiles monde, List<Color> couleursFranchissables)
 {
     this.Initialiser(monde, couleursFranchissables);
 }
Example #2
0
        /// <summary>
        /// Fonction construisant la grille de noeuds à partir du monde de tuiles fourni en paramètre.
        /// La fonction crée la matrice (grille) de même taille que celle de tuiles du monde, puis
        /// un noeud pour chaque tuile. Le paramètre couleursFranchissables est exploité pour
        /// déterminer si chaque tuile est franchissable ou pas (si les couleurs retrouvées dans une tuiles
        /// sont toutes dans couleursFranchissables, alors la tuile est considérée franchissable).
        /// </summary>
        /// <param name="monde">Monde de tuiles à considérer pour construire pricGrille.</param>
        /// <param name="couleursFranchissables">Liste de couleurs à considérer pour déterminer si une tuile
        /// est franchissable ou pas.</param>
        public void Initialiser(MondeTuiles monde, List<Color> couleursFranchissables)
        {
            this.Monde = monde;     // socker l'instance de MondeDeTuiles

            // Déterminer pour chaque tuile de la palette lesquelles sont franchissables.
            bool[] franchissables = new bool[this.Monde.PaletteCollisions.NombreDeTuiles];
            for (int tuileIdx = 0; tuileIdx < franchissables.GetLength(0); tuileIdx++)
            {
                franchissables[tuileIdx] = true;

                // Obtenir la liste des couleurs retrouvées dans la tuile courante.
                List<Color> couleurs;
                this.Monde.PaletteCollisions.CouleursDansTuile(tuileIdx, out couleurs);

                // Pour chaque couleur de la tuile, vérifier si elle est dans couleursFranchissables
                // (sinon la tuile n'est pas considérée comme franchissable).
                foreach (Color clr in couleurs)
                {
                    if (!couleursFranchissables.Exists(delegate(Color c) { return c == clr; }))
                    {
                        franchissables[tuileIdx] = false;
                        break;
                    }
                }
            }

            // Indiquer pour chaque noeud de la grille s'il est franchissable ou non.
            for (int row = 0; row < this.NombreRangees; row++)
            {
                for (int col = 0; col < this.NombreColonnes; col++)
                {
                    // Calculer les coordonnées du centre de la tuile correspondant au noeud.
                    Vector2 centre = new Vector2(
                        (col * this.Monde.PaletteCollisions.LargeurTuile) + (this.Monde.PaletteCollisions.LargeurTuile / 2),
                        (row * this.Monde.PaletteCollisions.HauteurTuile) + (this.Monde.PaletteCollisions.HauteurTuile / 2));

                    // Obtenir l'index de cette tuile dans la palette du monde.
                    int tuileIdx = this.Monde.MondeXY2TuileIdx(centre);

                    // Configurer le noeud en conséquence.
                    this.grille[row, col].Franchissable = franchissables[tuileIdx];
                }
            }
        }
Example #3
0
        /// <summary>
        /// Constructeur paramétré initialisant les attributs de this. Invoque la fonction privée
        /// Initialiser() qui fait la quasi-totalité du travail d'initialisation de l'instance.
        /// </summary>
        /// <param name="monde">Monde de tuiles à utiliser pour construire la grille.</param>
        /// <param name="couleurFranchissable">Couleur à considérer comme franchissable (voir 
        /// fonction Initialiser()).</param>
        public PFGrille(MondeTuiles monde, Color couleurFranchissable)
        {
            // Invoquer l'autre constructeur de la classe.
            List<Color> couleursFranchissables = new List<Color>();
            couleursFranchissables.Add(couleurFranchissable);

            this.Initialiser(monde, couleursFranchissables);
        }