/// <summary>
        /// Affiche à l'écran le sprite en fonction de la position de la camera. L'affichage est
        /// déléguée à palette afin d'afficher la tuile courante d'animation.
        /// </summary>
        /// <param name="camera">Caméra à exploiter pour l'affichage.</param>
        /// <param name="spriteBatch">Gestionnaire d'affichage en batch aux périphériques.</param>
        public override void Draw(Camera camera, SpriteBatch spriteBatch)
        {
            // Comme l'attribut _position contient la position centrée du sprite mais
            // que Draw() considère la position fournie comme celle de l'origine du
            // sprite, il faut décaler _position en conséquence avant d'invoquer Draw().
            this.ForcerPosition(Position.X - (this.Width / 2), Position.Y - (this.Height / 2));

            // Créer destRect aux coordonnées du sprite dans le monde. À noter que
            // les dimensions de destRect sont constantes.
            Rectangle destRect = new Rectangle((int)Position.X, (int)Position.Y, this.Width, this.Height);

            // Afficher le sprite s'il est visible.
            if (camera == null)
            {
                // Afficher la tuile courante.
                this.Palette.Draw((int)this.IndexTuile, destRect, spriteBatch);
            }
            else if (camera.EstVisible(destRect))
            {
                // Puisque le sprite est visible, déléguer à la palette de tuiles la tâche d'afficher
                // la tuile courante.

                // Décaler la destination en fonction de la caméra. Ceci correspond à transformer destRect
                // de coordonnées logiques (i.e. du monde) à des coordonnées physiques (i.e. de l'écran).
                camera.Monde2Camera(ref destRect);

                // Afficher la tuile courante.
                this.Palette.Draw((int)this.IndexTuile, destRect, spriteBatch);
            }

            // Remettre _position au centre du sprite.
            this.ForcerPosition(Position.X + (this.Width / 2), Position.Y + (this.Height / 2));
        }
Exemple #2
0
 /// <summary>
 /// Affiche à l'écran la partie du monde visible par la caméra.
 /// </summary>
 /// <param name="camera">Caméra à exploiter pour l'affichage.</param>
 /// <param name="spriteBatch">Gestionnaire d'affichage en batch aux périphériques.</param>
 public abstract void Draw(Camera camera, SpriteBatch spriteBatch);
        /// <summary>
        /// Affiche à l'écran la partie de la mappe monde visible par la camera.
        /// </summary>
        /// <param name="camera">Caméra à exploiter pour l'affichage.</param>
        /// <param name="spriteBatch">Gestionnaire d'affichage en batch aux périphériques.</param>
        public override void Draw(Camera camera, SpriteBatch spriteBatch)
        {
            // Initialiser le rectangle de destination aux dimensions d'une tuile
            Rectangle destRect = new Rectangle(0, 0, this.Palette.LargeurTuile, this.Palette.HauteurTuile);

            // Afficher une rangée à la fois
            for (int row = 0; row < this.MappeMonde.GetLength(0); row++)
            {
                for (int col = 0; col < this.MappeMonde.GetLength(1); col++)
                {
                    // Calculer la position de la tuile à l'écran
                    destRect.X = col * this.Palette.LargeurTuile;
                    destRect.Y = row * this.Palette.HauteurTuile;

                    // Afficher la tuile si elle est visible par la caméra
                    if (camera.EstVisible(destRect))
                    {
                        // Puisque le sprite est visible, déléguer à la palette de tuiles la tâche d'afficher
                        // la tuile courante.

                        // Décaler la destination en fonction de la caméra. Ceci correspond à transformer destRect
                        // de coordonnées logiques (i.e. du monde) à des coordonnées physiques (i.e. de l'écran).
                        camera.Monde2Camera(ref destRect);

                        // Afficher la tuile courante
                        this.Palette.Draw(this.MappeMonde[row, col], destRect, spriteBatch);
                    }
                }
            }
        }
        /// <summary>
        /// Affiche à l'écran la partie de la mappe monde visible par la caméra.
        /// </summary>
        /// <param name="camera">Caméra à exploiter pour l'affichage.</param>
        /// <param name="spriteBatch">Gestionnaire d'affichage en batch aux périphériques.</param>
        public override void Draw(Camera camera, SpriteBatch spriteBatch)
        {
            // Initialiser le rectangle de destination aux dimensions d'une image.
            Rectangle destRect = new Rectangle(0, 0, this.LargeurImage, this.HauteurImage);

            // Afficher une rangée à la fois.
            for (int row = 0; row < this.Textures.GetLength(0); row++)
            {
                for (int col = 0; col < this.Textures.GetLength(1); col++)
                {
                    // Calculer la position de l'image à l'écran.
                    destRect.X = col * this.LargeurImage;
                    destRect.Y = row * this.HauteurImage;

                    // Afficher l'image si elle est visible dans la caméra.
                    if (camera.EstVisible(destRect))
                    {
                        // Puisque l'image est visible, l'afficher.

                        // Décaler la destination en fonction de la caméra. Ceci correspond à transformer destRect
                        // de coordonnées logiques (i.e. du monde) à des coordonnées physiques (i.e. de l'écran).
                        camera.Monde2Camera(ref destRect);

                        // Afficher l'image courante.
                        spriteBatch.Draw(this.Textures[row, col], destRect, null, Color.White);   // afficher la tuile
                    }
                }
            }
        }
Exemple #5
0
        /// <summary>
        /// Permet au jeu d'effectuer toute initialisation avant de commencer à jouer.
        /// Cette fonction membre peut demander les services requis et charger tout contenu
        /// non graphique pertinent. L'invocation de base.Initialize() itèrera parmi les
        /// composants afin de les initialiser individuellement.
        /// </summary>
        protected override void Initialize()
        {
            // Initialiser la vue de la caméra à la taille de l'écran.
            this.camera = new Camera(new Rectangle(0, 0, this.graphics.GraphicsDevice.Viewport.Width, this.graphics.GraphicsDevice.Viewport.Height));

            // Activer la gestion de services.
            ServiceHelper.Game = this;

            // Activer le service de gestion de l'input. Essayer premièrement
            // d'activer la manette, sinon le clavier
            GamePadState gamepadState = GamePad.GetState(PlayerIndex.One);
            if (gamepadState.IsConnected)
            {
                this.Components.Add(new ManetteService(this));
            }
            else
            {
                this.Components.Add(new ClavierService(this));
            }

            this.listeProjectiles = new List<Sprite>();
            this.listeProjectileFini = new List<Sprite>();

            this.listeBloc = new List<Sprite>();
            this.listeBlocFini = new List<Sprite>();

            this.listeOgres = new List<Ennemi>();
            this.listeOgresFini = new List<Ennemi>();

            this.listeSwitch = new List<Sprite>();
            this.listeSwitchFini = new List<Sprite>();

            this.listePorte = new List<Sprite>();
            this.listePorteFini = new List<Sprite>();

            this.listePorteHorizontale = new List<Sprite>();
            this.listePorteHorizontaleFini = new List<Sprite>();

            this.listeVideJoueur = new List<Sprite>();
            this.listeVideJoueurFini = new List<Sprite>();

            this.listeFood = new List<Sprite>();
            this.listeFoodFini = new List<Sprite>();
            this.boolFood = true;

            this.listeClef = new List<Sprite>();
            this.listeClefFini = new List<Sprite>();
            this.boolClef = false;
            this.portesClefOuvert[0] = false;

            // Créer les attributs de gestion des explosions.
            this.randomExplosions = new Random();

            this.randomPJEnemi = new Random();
            this.probPJ = 0.01f;

            // Le jeu est en cours de démarrage. Notez qu'on évite d'exploiter la prorpiété EtatJeu
            // car le setter de cette dernière manipule des effets sonores qui ne sont pas encore
            // chargées par LoadContent()
            this.etatJeu = Etats.Demarrer;

            base.Initialize();
        }