summaryrefslogtreecommitdiff
path: root/Drawable.cs
diff options
context:
space:
mode:
authorSarah Bradley <git@sarahduck.ca>2023-12-18 19:51:26 -0800
committerSarah Bradley <git@sarahduck.ca>2023-12-18 19:51:26 -0800
commit4b7966ffda3b6ad34d355148ddccbe2959061730 (patch)
tree8be290357abb5d7cf8c72a803f3be63b3e353d7e /Drawable.cs
parentfc3874657348bde6ce7e3fab625c92dfec91baaa (diff)
Networked Mice!!
Also combined Spritesheet + Username packets into one UserInfo packet.
Diffstat (limited to 'Drawable.cs')
-rw-r--r--Drawable.cs8
1 files changed, 6 insertions, 2 deletions
diff --git a/Drawable.cs b/Drawable.cs
index 0f74a1c..f01c478 100644
--- a/Drawable.cs
+++ b/Drawable.cs
@@ -6,6 +6,7 @@ namespace OnekoOnline;
abstract class Drawable : IDisposable
{
protected int DrawOrder = 0;
+ public bool Visible = true;
public Vector2 Position {
get => _position;
@@ -16,13 +17,16 @@ abstract class Drawable : IDisposable
public Vector2 Size;
public float Rotation = 0f;
- public static readonly List<Drawable> Drawables = [];
+ public static readonly HashSet<Drawable> Drawables = [];
+
+ public Drawable() => Drawables.Add(this);
public static void DrawAll()
{
float delta = Raylib.GetFrameTime();
foreach (Drawable drawable in Drawables.OrderBy(d => d.Position.Y + d.DrawOrder*1000)) {
drawable?.Update(delta);
+ if (drawable == null || !drawable.Visible) continue;
drawable?.Draw();
}
}
@@ -36,5 +40,5 @@ abstract class Drawable : IDisposable
public abstract void Update(float delta);
- public abstract void Dispose();
+ public virtual void Dispose() => Drawables.Remove(this);
} \ No newline at end of file