using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Graphics; using V3.Input; namespace V3.Screens { public abstract class AbstractScreen : IScreen { /// /// Indicates whether screens below this one should be updated. /// public bool UpdateLower { get; } /// /// Indicates whether screens below this one should be drawn. /// public bool DrawLower { get; } protected AbstractScreen(bool updateLower, bool drawLower) { UpdateLower = updateLower; DrawLower = drawLower; } /// /// Handles the given key event and returns whether it should be passed /// to the screens below this one. /// /// the key event that occurred /// true if the event has been handeled by this screen and /// should not be passed to the lower screens, false otherwise public virtual bool HandleKeyEvent(IKeyEvent keyEvent) { return false; } /// /// Handles the given mouse event and returns whether it should be passed /// to the screens below this one. /// /// the mouse event that occurred /// true if the event has been handeled by this screen and /// should not be passed to the lower screens, false otherwise public virtual bool HandleMouseEvent(IMouseEvent mouseEvent) { return true; } public virtual void Update(GameTime gameTime) { } public virtual void Draw(GameTime gameTime, SpriteBatch spriteBatch) { } } }