using Raylib_cs; using System.Collections.ObjectModel; using System.Numerics; namespace OnekoOnline; abstract class Mouse : Drawable { public string Name = "Mouse"; public Bitmap Cursor; protected static List allMice = []; public static ReadOnlyCollection AllMice => allMice.AsReadOnly(); public static Action? Clicked; public Mouse() : base() { DrawOrder = 100; allMice.Add(this); string CursorPath = "mddisc/cursor.png"; if (File.Exists(CursorPath) && new FileInfo(CursorPath).Length < 12*19*3) { Cursor = Bitmap.FromPNGMemory(File.ReadAllBytes(CursorPath)); } else { Console.WriteLine("Path to cursor png was invalid or the file was too big, using the default."); Cursor = Bitmap.FromPNGMemory(EmbeddedResources.GetResource("misc.cursor.png")); } } public Mouse(Bitmap cursor) : base() { DrawOrder = 100; allMice.Add(this); Cursor = cursor; } public override void Draw() { Vector2 NametagPosition = new(Position.X-(Name.Length*3)+4, Position.Y-13); Raylib.DrawTextEx(OnekoOnline.DefaultFont, Name, NametagPosition+Directions.Down, 11, 0, Color.BLACK); //Shadow Raylib.DrawTextEx(OnekoOnline.DefaultFont, Name, NametagPosition, 11, 0, Color.WHITE); Raylib.DrawTexture(Cursor.Texture, (int)Position.X, (int)Position.Y, Color.WHITE); } public override void Dispose() { Cursor.Dispose(); allMice.Remove(this); base.Dispose(); } }