using System.Numerics; namespace Roboto.Core; public enum ClickType { Left, Right, Middle } public enum KeyActionType { Press, Down, Up } public abstract record BotAction(int Priority); public record MoveAction(int Priority, Vector2 Direction) : BotAction(Priority) { /// Normalized movement direction in world space. public Vector2 Direction { get; init; } = Direction; } public record ClickAction(int Priority, Vector2 ScreenPosition, ClickType Type = ClickType.Left) : BotAction(Priority); public record KeyAction(int Priority, ushort ScanCode, KeyActionType Type = KeyActionType.Press) : BotAction(Priority); public record CastAction(int Priority, ushort SkillScanCode, Vector2? TargetScreenPos = null, uint? TargetEntityId = null) : BotAction(Priority); public record FlaskAction(int Priority, ushort FlaskScanCode) : BotAction(Priority); public record ChatAction(int Priority, string Message) : BotAction(Priority); public record WaitAction(int Priority, int DurationMs) : BotAction(Priority);