using System.Collections; namespace Strawberry { public class Solid : Geometry { public this(Point position, Rect hitbox) : base(position) { Hitbox = hitbox; } public override List GetRiders(List into) { for (var a in Scene.All(scope List)) if (a.IsRiding(this)) into.Add(a); return into; } public override void MoveExactX(int amount) { if (Collidable) { let riders = GetRiders(scope List); X += amount; Collidable = false; for (Actor a in Scene.All(scope List)) { if (Check(a)) { //Push int move; if (amount > 0) move = Right - a.Left; else move = Left - a.Right; a.MoveExactX(move, scope => a.Squish, this); } else if (riders.Contains(a)) { //Carry a.MoveExactX(amount, null, null, this); } } Collidable = true; } else X += amount; } public override void MoveExactY(int amount) { if (Collidable) { let riders = GetRiders(scope List); Y += amount; Collidable = false; for (Actor a in Scene.All(scope List)) { if (Check(a)) { //Push int move; if (amount > 0) move = Bottom - a.Top; else move = Top - a.Bottom; a.MoveExactY(move, scope => a.Squish, this); } else if (riders.Contains(a)) { //Carry a.MoveExactY(amount, null, null, this); } } Collidable = true; } else Y += amount; } public override void Draw() { DrawHitbox(.(255, 255, 255, 255)); } } }