using UnityEngine;
using UnityEditor;
using UnityEngine.InputSystem;

public class PlayerMovement : MonoBehaviour
{
    [Header("Physics")]
    private Rigidbody2D rb;
    [SerializeField] private float speed;
    [SerializeField] private float dash;
    [Header("Animation")]
    private Animator anim;
    [SerializeField] private Vector2 lastDir;
    [SerializeField] private float ROT;
    [Header("Inputs")]
    [SerializeField] private Vector2 _moveInput;
    [SerializeField] private Vector2 _lookInput;
    [SerializeField] private bool _attack;
    private InputHandler ih; //InputHandler
    private void Start()
    {
        rb = GetComponent<Rigidbody2D>();
        anim = GetComponentInChildren<Animator>();
        ih = InputHandler.Instance;
    }
    private void FixedUpdate()
    {
        Inputs();
        Animation();
        Move();
    }

    private void Inputs()
    {
        _moveInput = ih.moveInput;
        _lookInput = ih.lookInput;
        _attack = ih.attackInput;
    }
    private void Move()
    {
        rb.MovePosition(rb.position + new Vector2(_moveInput.x, _moveInput.y) * speed * Time.fixedDeltaTime);
    }
    private void Animation()
    {
        if (_moveInput.magnitude > 0)
        {
            lastDir = _moveInput;
        }
        anim.SetFloat("MoveX", _moveInput.x);
        anim.SetFloat("MoveY", _moveInput.y);
        anim.SetFloat("MoveMagnitude", _moveInput.magnitude);
        anim.SetFloat("LastMoveX", lastDir.x);
        anim.SetFloat("LastMoveY", lastDir.y);
    }

    public void OnAttack(float dashAngle)
    {
        Vector3 vector = new Vector3(Mathf.Cos(dashAngle), Mathf.Sin(dashAngle), 0);
        Debug.Log(dashAngle);
        Debug.Log(vector);
        rb.AddForce(vector * dash, ForceMode2D.Impulse);
    }
}