Jump to content
  • Advertisement
Sign in to follow this  

passing a rectangle array through draw method

This topic is 1871 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

illl start with the code i guess.


heres my alien class

public class Alien
        public Texture2D Texture { get; set; }
        public int Rows { get; set; }
        public int Columns { get; set; }
        private int currentFrame;
        private int totalFrames;

        public Alien(Texture2D texture, int rows, int columns)
            Texture = texture;
            Rows = rows;
            Columns = columns;
            currentFrame = 0;
            totalFrames = Rows * Columns;

        public void Update()
            if (currentFrame == totalFrames)
                currentFrame = 0;

        public void Draw(SpriteBatch spriteBatch, Vector2 location)
            int width = Texture.Width / Columns;
            int height = Texture.Height / Rows;
            int row = (int)((float)currentFrame / (float)Columns);
            int column = currentFrame % Columns;

            Rectangle sourceRectangle = new Rectangle(width * column, height * row, width, height);
            Rectangle destinationRectangle = new Rectangle((int)location.X, (int)location.Y, width, height);

            spriteBatch.Draw(Texture, destinationRectangle, sourceRectangle, Color.White);


and heres my main game class


    public class Game1 : Microsoft.Xna.Framework.Game
        SpriteFont font;
        GraphicsDeviceManager graphics;
        SpriteBatch spriteBatch;
        Vector2 alienPos = new Vector2(50, 20);
        Vector2 shipPos;
        Texture2D alienSprite;
        Texture2D shipSprite;
        private Alien alien;
        private Ship ship;

        public int aliensLeft;

        public int alienCount = 6;

        public Alien[] alienGroup = new Alien[6];
        public Rectangle[] alienRec = new Rectangle[6];

        public Game1()
            graphics = new GraphicsDeviceManager(this);
            Content.RootDirectory = "Content";

            this.graphics.PreferredBackBufferHeight = 500;
            this.graphics.PreferredBackBufferWidth = 400;

        protected override void Initialize()
            this.IsMouseVisible = true;

            for (int x = 0; x < alienCount; x++)
                alienRec[x] = new Rectangle(x*20, 0, 20, 30);

        protected override void LoadContent()
            // Create a new SpriteBatch, which can be used to draw textures.
            spriteBatch = new SpriteBatch(GraphicsDevice);

            // TODO: use this.Content to load your game content here
            alienSprite = Content.Load<Texture2D>("aliensprite");
            alien = new Alien(alienSprite, 1, 2);

            shipSprite = Content.Load<Texture2D>("ship");
            ship = new Ship(shipSprite);

            font = Content.Load<SpriteFont>("SpriteFont1");

        protected override void UnloadContent()
            // TODO: Unload any non ContentManager content here

        protected override void Update(GameTime gameTime)
            aliensLeft = alienGroup.Length;
            // Allows the game to exit
            if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)

            // TODO: Add your update logic here


        protected override void Draw(GameTime gameTime)

            /*for (int x = 0; x < alienCount; x++)
                alien.Draw(spriteBatch, alienPos, alienRec[x]);

            ship.Draw(spriteBatch, shipPos);
            alien.Draw(spriteBatch, alienPos);

            spriteBatch.DrawString(font, "Aliens remaining:  " + aliensLeft, new Vector2(10, 480), Color.White);



Basically what I'm trying to do is create an array of rectangles that outlines each alien, and then in the Draw method of my main class I'm trying to draw the animated alien sprite at the position of each rectangle. Now I think I know whats wrong...the alien object wont draw at the position of the rectangle because its not one of the types of the alien object. What Im wondering is if theres an easier way to do this instead? And how could I make my sprite animation code more efficient and still keep it within the class?


The part that is within comments of the draw class in my main method is the part Im confused with

Edited by burnt_casadilla

Share this post

Link to post
Share on other sites
Sign in to follow this  

  • Advertisement

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

Participate in the game development conversation and more when you create an account on GameDev.net!

Sign me up!