RiftMayhem/Assets/Scripts/AbilitySystem/Base/CastingStateController.cs

58 lines
1.5 KiB
C#

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);
}
}