using System.Numerics; using Raylib_cs; namespace OnekoOnline; abstract class Drawable : IDisposable { public Vector2 Position { get => _position; set => _position = value.Round(); } private Vector2 _position; public Vector2 Size; public float Rotation = 0f; public static readonly List Drawables = []; public static void DrawAll() { float delta = Raylib.GetFrameTime(); foreach (Drawable drawable in Drawables.OrderBy(d => -d.Position.Y)) { drawable?.Update(delta); drawable?.Draw(); } } public static void DisposeAll() { foreach (Drawable drawable in Drawables.ToArray()) drawable?.Dispose(); } public abstract void Draw(); public abstract void Update(float delta); public abstract void Dispose(); }