using Amberframe.Controllers.Abstractions.Inputs;
using Amberframe.Controllers.Basic.Types;
using Amberframe.Controllers.Inputs;

namespace Amberframe.Controllers.Basic.Definitions
{
    public static class ControllerDefinitions
    {
        public static readonly IInputDefinition Circle = new InputDefinition(
            ControllerDefinitionNames.Circle,
            InputTypes.Button,
            string.Empty);

        public static readonly IInputDefinition Triangle = new InputDefinition(
            ControllerDefinitionNames.Triangle,
            InputTypes.Button,
            string.Empty);

        public static readonly IInputDefinition Square = new InputDefinition(
            ControllerDefinitionNames.Square,
            InputTypes.Button,
            string.Empty);

        // Note: XYAB overlap with basic key definitions
        public static readonly IInputDefinition X = new InputDefinition(
            ControllerDefinitionNames.X,
            InputTypes.Button,
            string.Empty);

        public static readonly IInputDefinition Y = new InputDefinition(
            ControllerDefinitionNames.Y,
            InputTypes.Button,
            string.Empty);

        public static readonly IInputDefinition A = new InputDefinition(
            ControllerDefinitionNames.A,
            InputTypes.Button,
            string.Empty);

        public static readonly IInputDefinition B = new InputDefinition(
            ControllerDefinitionNames.B,
            InputTypes.Button,
            string.Empty);

        public static readonly IInputDefinition Select = new InputDefinition(
            ControllerDefinitionNames.Select,
            InputTypes.Button,
            string.Empty);

        public static readonly IInputDefinition Start = new InputDefinition(
            ControllerDefinitionNames.Start,
            InputTypes.Button,
            string.Empty);

        // Note: LStart overlaps with 
        public static readonly IInputDefinition LBumper = new InputDefinition(
            ControllerDefinitionNames.LBumper,
            InputTypes.Button,
            string.Empty);

        public static readonly IInputDefinition RBumper = new InputDefinition(
            ControllerDefinitionNames.RBumper,
            InputTypes.Button,
            string.Empty);

        public static readonly IInputDefinition LTrigger = new InputDefinition(
            ControllerDefinitionNames.LTrigger,
            InputTypes.Button,
            string.Empty);

        public static readonly IInputDefinition RTrigger = new InputDefinition(
            ControllerDefinitionNames.RTrigger,
            InputTypes.Button,
            string.Empty);

        public static readonly IInputDefinition DPadLeft = new InputDefinition(
            ControllerDefinitionNames.DPadLeft,
            InputTypes.Button,
            string.Empty);

        public static readonly IInputDefinition DPadRight = new InputDefinition(
            ControllerDefinitionNames.DPadRight,
            InputTypes.Button,
            string.Empty);

        public static readonly IInputDefinition DPadUp = new InputDefinition(
            ControllerDefinitionNames.DPadUp,
            InputTypes.Button,
            string.Empty);

        public static readonly IInputDefinition DPadDown = new InputDefinition(
            ControllerDefinitionNames.DPadDown,
            InputTypes.Button,
            string.Empty);
    }
}