using System; using System.Collections.Generic; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Graphics; namespace PingPong { public class Sprite { protected Texture2D _texture; public Vector2 Position; public Vector2 Velocity; public float Speed; public Input Input; int offset=10; protected int _textureWidth, _textureHeight; public bool Shining = false; public Color Color = Color.White; public Rectangle Rectangle { get { return new Rectangle((int)Position.X, (int)Position.Y, _textureWidth, _textureHeight); } } public Sprite(Texture2D texture) { _texture = texture; _textureWidth = texture.Width; _textureHeight= texture.Height; } public virtual void Update(GameTime gameTime, List sprites) { } public virtual void Draw(SpriteBatch spriteBatch) { spriteBatch.Draw(_texture, Position, Color); } //kolizja protected bool IsTouchingLeft(Sprite sprite) { return this.Rectangle.Right + this.Velocity.X - offset > sprite.Rectangle.Left && this.Rectangle.Left < sprite.Rectangle.Left && this.Rectangle.Bottom > sprite.Rectangle.Top && this.Rectangle.Top < sprite.Rectangle.Bottom; } protected bool IsTouchingRight(Sprite sprite) { return this.Rectangle.Left + this.Velocity.X + offset < sprite.Rectangle.Right && this.Rectangle.Right > sprite.Rectangle.Right && this.Rectangle.Bottom > sprite.Rectangle.Top && this.Rectangle.Top < sprite.Rectangle.Bottom; } protected bool IsTouchingTop(Sprite sprite) { return this.Rectangle.Bottom + this.Velocity.Y - offset > sprite.Rectangle.Top && this.Rectangle.Top < sprite.Rectangle.Top && this.Rectangle.Right > sprite.Rectangle.Left && this.Rectangle.Left < sprite.Rectangle.Right; } protected bool IsTouchingBottom(Sprite sprite) { return this.Rectangle.Top + this.Velocity.Y + offset < sprite.Rectangle.Bottom && this.Rectangle.Bottom > sprite.Rectangle.Bottom && this.Rectangle.Right > sprite.Rectangle.Left && this.Rectangle.Left < sprite.Rectangle.Right; } } }