using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Graphics; using Microsoft.Xna.Framework.Input; using RhythmBullet.Zer01HD.Utilities.Camera; using RhythmBullet.Zer01HD.Utilities.Input; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace RhythmBullet.Zer01HD.UI.Modular { public class UIModule : IInputListener { public Rectangle Bounds; public UIModuleGroup Parent; public string Name; public Color Color = Color.White; public virtual void Update(GameTime gameTime) { } public virtual void Draw(SpriteBatch batch) { } public Rectangle ConvertToParentCoordinates(Rectangle bounds) { if (Parent != null) { Rectangle parentHitbox = Parent.ConvertToParentCoordinates(bounds); int tX = bounds.X + parentHitbox.X; int tY = bounds.Y + parentHitbox.Y; return new Rectangle(tX, tY, bounds.Width, bounds.Height); } else { return bounds; } } public void RemoveFromParent() { if (Parent == null) { throw new InvalidOperationException("Parent is null."); } Parent.RemoveModule(this); } public virtual bool KeyboardStateChanged(KeyboardState state) { return true; } public virtual bool MouseStateChanged(MouseState state) { return true; } } }