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

public class NPCAnimatorControllerBase : MonoBehaviour
{
    protected Animator anim;
    protected NavMeshAgent agent;
    protected PhotonView photonView;
    protected NPCControllerBase npcController;

    protected bool isLockedInAnimation = false;

    protected virtual void Awake()
    {
        anim = GetComponent<Animator>();
        agent = GetComponentInParent<NavMeshAgent>();
        photonView = GetComponentInParent<PhotonView>();
        npcController = GetComponentInParent<NPCControllerBase>();
    }

    protected virtual void Start()
    {
        
    }

    protected void Update()
    {
        if (!photonView.IsMine) return;

        anim.SetFloat("movementSpeed", agent.velocity.magnitude);
    }

    protected virtual void OnAttackAnimationEvent()
    {
        if (!photonView.IsMine) return;

        Debug.Log("Sending Notice On Attack Animation Event Trigger");
        //send notice for brain/abilitybinder to execute queued action/ability
        npcController.OnAttackAnimationEventTriggered();
    }

    protected virtual void OnDeathAnimationEvent()
    {
        if (!photonView.IsMine) return;

        //send notice for brain/abilitybinder to execute queued action/ability
        npcController.OnDeathAnimationEventTriggered();
    }

    public void SetDead()
    {
        anim.SetTrigger("dead");
    }

    public void SetTriggerBasedOnAbility(AbilityAnimationType animationType)
    {
        Debug.Log("Setting animation trigger = " + animationType);
        switch (animationType)
        {
            case AbilityAnimationType.Throw:
                anim.SetTrigger("throw");
                break;
            case AbilityAnimationType.Spell:
                anim.SetTrigger("cast");
                break;
            case AbilityAnimationType.Melee:
                anim.SetTrigger("melee");
                break;
            default:
                break;
        }
    }
}
