using UnityEngine;
using UnityEngine.InputSystem;

namespace DocCodeSamples.Tests
{
    internal class GamepadExample : MonoBehaviour
    {
        void Start()
        {
            // Print all connected gamepads
            Debug.Log(string.Join("\n", Gamepad.all));
        }

        void Update()
        {
            var gamepad = Gamepad.current;

            // No gamepad connected.
            if (gamepad == null)
            {
                return;
            }

            // Check if "Button North" was pressed this frame
            if (gamepad.buttonNorth.wasPressedThisFrame)
            {
                Debug.Log("Button North was pressed");
            }

            // Check if the button control is being continuously actuated and read its value
            if (gamepad.rightTrigger.IsActuated())
            {
                Debug.Log("Right trigger value: " + gamepad.rightTrigger.ReadValue());
            }

            // Read left stick value and perform some code based on the value
            Vector2 move = gamepad.leftStick.ReadValue();
            {
                // Use the Vector2 move for the game logic here
            }

            // Creating haptic feedback while "Button South" is pressed and stopping it when released.
            if (gamepad.buttonSouth.wasPressedThisFrame)
            {
                gamepad.SetMotorSpeeds(0.2f, 1.0f);
            }
            else if (gamepad.buttonSouth.wasReleasedThisFrame)
            {
                gamepad.ResetHaptics();
            }
        }
    }
}