using System;
using UnityEngine.InputSystem;

namespace SalientVoid.Input
{
    /// <summary>
    /// Simple event container for Player-specific actions
    /// </summary>
    public class PlayerInputActions
    {
        public event Action<InputAction.CallbackContext> Attack;
        public event Action<InputAction.CallbackContext> Crouch;
        public event Action<InputAction.CallbackContext> Interact;
        public event Action<InputAction.CallbackContext> Jump;
        public event Action<InputAction.CallbackContext> Look;
        public event Action<InputAction.CallbackContext> Move;
        public event Action<InputAction.CallbackContext> Next;
        public event Action<InputAction.CallbackContext> Previous;
        public event Action<InputAction.CallbackContext> Sprint;

        public void Bind(InputControls.PlayerActions control)
        {
            control.Attack.performed += context => Attack?.Invoke(context);
            control.Crouch.performed += context => Crouch?.Invoke(context);
            control.Interact.performed += context => Interact?.Invoke(context);
            control.Jump.performed += context => Jump?.Invoke(context);
            control.Look.performed += context => Look?.Invoke(context);
            control.Move.performed += context => Move?.Invoke(context);
            control.Next.performed += context => Next?.Invoke(context);
            control.Previous.performed += context => Previous?.Invoke(context);
            control.Sprint.performed += context => Sprint?.Invoke(context);
        }
    }
}