using Photon.Pun;
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;

public class CastingStateController : MonoBehaviour
{
    public bool isCasting;
    public PlayerMovement playerMovement;
    public LayerMask movementMask;

    Camera cam;
    Ray ray;
    RaycastHit hit;

    PhotonView photonView;
    ProjectileSpawnLocationController projectileSpawnLocationController;

    private void Awake()
    {
        cam = Camera.main;
        photonView = GetComponentInParent<PhotonView>();
        projectileSpawnLocationController = transform.root.GetComponentInChildren<ProjectileSpawnLocationController>();
    }
    private void Start()
    {
        if (!photonView.IsMine) this.enabled = false;
    }
    public void RequestAbilityCast(BaseAbility ability, Action abilityExecution)
    {
        if (isCasting) return;

        if (!ability.castableWhileMoving)
            playerMovement.ToggleAgentMoving(true);

        StartCoroutine(Casting(ability, abilityExecution));
    }

    private IEnumerator Casting(BaseAbility ability, Action abilityExecution)
    {
        isCasting = true;
        CastBarHandler.Instance.ShowCastBar(ability);

        playerMovement.InstantFaceCast(projectileSpawnLocationController.GetLookat());

        //cast animation
        yield return new WaitForSeconds(ability.castTime);

        abilityExecution.Invoke();

        isCasting = false;
        if (!ability.castableWhileMoving)
            playerMovement.ToggleAgentMoving(false);
    }
}
