using Koptilnya.StateMachine; using Mirror; using UnityEngine; namespace Characters.Enemy.States { public class IdleState : State { private readonly Enemy _enemy; private static readonly int DanceAnimHash = Animator.StringToHash("dance"); private bool _entered; public IdleState(Enemy enemy) : base(EnemyState.Idle) { _enemy = enemy; } [ServerCallback] public override void Enter() { _enemy.SetSpeedMul(0f); _enemy.networkAnimator.SetTrigger(DanceAnimHash); } [ServerCallback] public override void Update() { var stateInfo = _enemy.animator.GetCurrentAnimatorStateInfo(0); bool inAnim = stateInfo.shortNameHash == DanceAnimHash; if (!_entered && inAnim) _entered = true; if (_entered && !inAnim) _enemy.ChangeState(EnemyState.Patrol); } [ServerCallback] public override void Exit() { _entered = false; _enemy.networkAnimator.ResetTrigger(DanceAnimHash); _enemy.SetSpeedMul(1f); } } }