using System; using System.Collections.Generic; using System.Text; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Content; using Microsoft.Xna.Framework.Graphics; namespace Tiles { class AnimatedSprite { public AnimatedSprite(int frameCount, GraphicsDeviceManager graphics) { frames = frameCount; Graphics = graphics; } #region Fields private int delayTime = 30; private int currentTime = 1; private int currentFrame = 0; private GraphicsDeviceManager Graphics; private Texture2D texture; private Color color; public List textures = new List(); private Vector2 position; private float layer; private int frames; public bool draw = true; public bool loop = false; #endregion #region Properties public Texture2D Texture { get { return texture; } set { texture = value; } } public Vector2 Position { get { return position; } set { position = value; } } public Color Color { get { return color; } set { color = value; } } public float Layer { get { return layer; } set { layer = value; } } #endregion public void Draw(SpriteBatch spriteBatch) { Rectangle sourceRectangle = new Rectangle(0, 0, textures[0].Width, textures[0].Height); if (draw) { if (currentTime == delayTime) { Graphics.GraphicsDevice.Clear(Color.Black); spriteBatch.Draw(textures[currentFrame], position, sourceRectangle, color, 0.0f, new Vector2(0, 0), 1.0f, SpriteEffects.None, layer); if (currentFrame < textures.Count - 1) { currentFrame++; } else { if (!loop) { draw = false; Graphics.GraphicsDevice.Clear(Color.Black); } else { currentFrame = 0; } } } else { currentTime++; } } } } }