65 lines
1.5 KiB
C#
Raw Normal View History

2024-03-19 17:42:38 +03:00
using System.Collections;
using Koptilnya;
using Koptilnya.StateMachine;
using Mirror;
using UnityEditor.Timeline.Actions;
using UnityEngine;
namespace Characters.Enemy.States
{
public class StunnedState : State<EnemyState>
{
private readonly Enemy _enemy;
private Task _task;
private static readonly int DamageAnimHash = Animator.StringToHash("damage");
public StunnedState(Enemy enemy) : base(EnemyState.Stunned)
{
_enemy = enemy;
}
public override void Enter()
{
2024-03-19 17:56:12 +03:00
if (_enemy.isServer)
{
_enemy.canAttack = false;
_enemy.target = null;
2024-03-19 17:42:38 +03:00
2024-03-19 17:56:12 +03:00
_enemy.SetSpeedMul(0f);
_enemy.GetComponent<NetworkAnimator>().SetTrigger(DamageAnimHash);
_task = new Task(GetStunned());
}
else
{
_enemy.hitVFX.Stop();
_enemy.hitVFX.Play();
}
2024-03-19 17:42:38 +03:00
}
2024-03-19 17:56:12 +03:00
[Server]
2024-03-19 17:42:38 +03:00
public override void ReEnter()
{
_task.Stop();
_task.Start();
}
public override void Exit()
{
2024-03-19 17:56:12 +03:00
if (!_enemy.isServer) return;
2024-03-19 17:42:38 +03:00
_task.Stop();
_enemy.SetSpeedMul(1f);
_enemy.canAttack = true;
}
IEnumerator GetStunned()
{
yield return new WaitForSeconds(6);
2024-03-19 17:56:12 +03:00
_enemy.state = EnemyState.Patrol;
2024-03-19 17:42:38 +03:00
}
}
}