using System.Collections;
using UnityEngine;
using UnityEngine.InputSystem;

public class PlayerAttack : MonoBehaviour
{
    public PlayerMovement player;
    public Animator animator;
    public InputActionReference lightAttack;
    public InputActionReference heavyAttack;
    public float attackCooldown;
    public int attacksBeforeCooldown;
    public AnimationClip attackAnim;
    public float lungeDistance;

    void Update()
    {
        if(player.currentState == PlayerState.ability || player.currentState == PlayerState.attack 
            || player.currentState == PlayerState.interact) 
        {
            return;
        }
     
        if(lightAttack.action.WasPressedThisFrame())
        {
            StartCoroutine(AttackCo());
        }
        if(heavyAttack.action.WasPressedThisFrame())
        {
            StartCoroutine(AttackCo());
        }
        else
        {
            player.currentState = PlayerState.idle;
            animator.SetBool("Attacking", false);
        }
    }

    private IEnumerator AttackCo()
    {
        Vector2 facingDirection = new Vector2(animator.GetFloat("Horizontal"), animator.GetFloat("Vertical"));
        Debug.Log("attacked");
        animator.SetBool("Attacking", true);
        player.rb.position = player.rb.position + facingDirection * lungeDistance;    
        player.currentState = PlayerState.attack;
        yield return null;
        animator.SetBool("Attacking", false);
        yield return new WaitForSeconds (attackAnim.length);
        if (player.currentState != PlayerState.interact)
        {
            player.currentState = PlayerState.idle;
        }
    }
}