using System.Numerics; using LiteNetLib.Utils; using OnekoOnline.Net; using Raylib_cs; namespace OnekoOnline; class OnekoLocal : Oneko { public static Oneko? Instance; static int Id => OnekoOnline.Client?.Id ?? -1; public OnekoLocal() : base() { Instance ??= this; Client.UserConnected += OnekoNet.SpawnNetNeko; Name = Client.UserName; } public override void OnekoUpdate() { Mouse? NearestMouse = Mouse.AllMice.Where(m => m.Visible).MinBy(m => Vector2.Distance(m.Position, Position)); if (NearestMouse != null) TargetPosition = NearestMouse.Position; else TargetPosition = new Vector2(Math.Clamp((Id+1)*40, 20, 300), 240/2); if (OnekoOnline.Client!.Connected) { NetDataWriter writer = new(); writer.Put(new PacketInfo(PacketType.OnekoTargetPosition, Id)); writer.Put(TargetPosition); OnekoOnline.Client?.ConnectedServer.Send(writer, LiteNetLib.DeliveryMethod.Unreliable); } base.OnekoUpdate(); } }