using UnityEngine;

// Used by the Animator for the Archer animation in the Shoot state. Fires an
// Arrow once the accoring state is entered/animation is played.
public class ArrowSpawner : StateMachineBehaviour
{

    [SerializeField] GameObject arrowPrefab;
    GameObject arrow;

    public override void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
    {
        if (stateInfo.IsName("shoot"))
        {
            int directionArrow = 1;
            if (animator.gameObject.transform.localScale.x < 0f)
            {
                directionArrow = -1;
            }
            Vector2 spawnPos = animator.gameObject.transform.position;
            spawnPos += new Vector2(1 * directionArrow, 0);

            arrow = Instantiate(arrowPrefab, spawnPos, Quaternion.identity);
            ChangeArrowDirection(arrow, directionArrow);
            ArrowController arrowController = arrow.GetComponentInChildren<ArrowController>();
            arrowController.direction = directionArrow;
            arrowController.archer = animator.gameObject.GetComponent<Archer>();
        }
    }

    void ChangeArrowDirection(GameObject arrow, int directionArrow)
    {
        arrow.transform.Rotate(0, 0, 90 * directionArrow);

    }
}