using System.ComponentModel;

namespace io.github.hatayama.uLoopMCP
{
    public class SimulateMouseInputSchema : BaseToolSchema
    {
        [Description("Mouse input action: Click(0) - inject left/right/middle button press+release, LongPress(1) - inject button hold for Duration seconds, MoveDelta(2) - inject mouse delta for camera/look (one-shot), Scroll(3) - inject scroll wheel, SmoothDelta(4) - inject mouse delta smoothly over Duration seconds")]
        public MouseInputAction Action { get; set; } = MouseInputAction.Click;

        [Description("Target X position in screen pixels (origin: top-left). Used by Click and LongPress to set Mouse.current.position.")]
        public float X { get; set; } = 0f;

        [Description("Target Y position in screen pixels (origin: top-left). Used by Click and LongPress to set Mouse.current.position.")]
        public float Y { get; set; } = 0f;

        [Description("Mouse button: Left(0, default), Right(1), Middle(2). Used by Click and LongPress.")]
        public MouseButton Button { get; set; } = MouseButton.Left;

        [Description("Hold duration in seconds for LongPress, or minimum hold time for Click (0 = one-shot tap). Also used as total duration for SmoothDelta.")]
        public float Duration { get; set; } = 0f;

        [Description("Delta X in pixels for MoveDelta/SmoothDelta action. Positive = right.")]
        public float DeltaX { get; set; } = 0f;

        [Description("Delta Y in pixels for MoveDelta/SmoothDelta action. Positive = up (Unity screen space).")]
        public float DeltaY { get; set; } = 0f;

        [Description("Horizontal scroll delta for Scroll action (default: 0).")]
        public float ScrollX { get; set; } = 0f;

        [Description("Vertical scroll delta for Scroll action. Positive = up, negative = down. Typically 120 per notch.")]
        public float ScrollY { get; set; } = 0f;
    }
}
