From c5b8b31dc7f29fd5512ac482cdffa2d274e6e01b Mon Sep 17 00:00:00 2001 From: Sarah Duck Date: Wed, 11 Jun 2025 21:35:02 -0700 Subject: AI Tweaks and DrawSort tweak --- Drawable.cs | 4 +++- OnekoLocal.cs | 10 ++++++---- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/Drawable.cs b/Drawable.cs index 67e4344..214fc0d 100644 --- a/Drawable.cs +++ b/Drawable.cs @@ -21,10 +21,12 @@ abstract class Drawable : IDisposable public Drawable() => Drawables.Add(this); + public virtual int DrawSort => (int)Position.Y; + public static void DrawAll() { float delta = Raylib.GetFrameTime(); - foreach (Drawable drawable in Drawables.OrderBy(d => d.Position.Y + d.DrawOrder*1000)) { + foreach (Drawable drawable in Drawables.OrderBy(d => d.DrawSort + d.DrawOrder*1000)) { drawable?.Update(delta); if (drawable == null || !drawable.Visible) continue; drawable?.Draw(); diff --git a/OnekoLocal.cs b/OnekoLocal.cs index 6c3c2df..df54ff1 100644 --- a/OnekoLocal.cs +++ b/OnekoLocal.cs @@ -20,6 +20,8 @@ class OnekoLocal : Oneko int Frame = 0; int FrameCounter = 0; + public override int DrawSort => (int)(Position.Y - (Size.Y/2.5f)); + public OnekoLocal() : base() { Instance ??= this; @@ -214,8 +216,8 @@ class OnekoLocal : Oneko public override int GetPriority() { //If feeling playful, chase another cat! - if (Victim != null && LastChase.AddSeconds(Energy > 0.5 ? 25 : 15) > DateTime.Now) return 80; - if (Playfullness < 0.5f || AllNekos.Count < 2 || LastChase.AddMinutes(Energy > 0.5 ? 1 : 3) > DateTime.Now) return -1; + if (Victim != null && LastChase.AddSeconds(Energy > 0.5 ? 24 : 12) > DateTime.Now) return 80; + if (Playfullness < 0.7f || AllNekos.Count < 2 || LastChase.AddMinutes(Energy > 0.5 ? 2 : 5) > DateTime.Now) return -1; Victim = AllNekos.Where(neko => neko != Neko).MinBy(neko => Random.Shared.NextSingle()); if (Victim != null) return 80; return -1; @@ -231,7 +233,7 @@ class OnekoLocal : Oneko if (Victim is null) return; Playfullness -= delta/40f; Energy -= delta/60f; - Neko.MoveTowardsPosition(Victim.Position + Raymath.Vector2Rotate(Directions.Down, DateTime.Now.Second+RandOffset)*24); + Neko.MoveTowardsPosition(Victim.Position + Raymath.Vector2Rotate(Directions.Down, DateTime.Now.Second+RandOffset)*28); } } @@ -272,7 +274,7 @@ class OnekoLocal : Oneko if (MouseToChase is null || !MouseToChase.Visible) return; MousePosition = MouseToChase.Position; - Neko.MoveTowardsPosition(MousePosition); + Neko.MoveTowardsPosition(MousePosition + (Raymath.Vector2Rotate(Directions.Down, Id*2f) * 20f)); Energy -= delta/60f; Playfullness -= delta/30f; -- cgit