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; } public override void Enter() { if (!_enemy.isServer) return; _enemy.SetSpeedMul(0f); _enemy.networkAnimator.SetTrigger("dance"); } public override void Update() { if (!_enemy.isServer) return; var stateInfo = _enemy.animator.GetCurrentAnimatorStateInfo(0); bool inAnim = stateInfo.shortNameHash == DanceAnimHash; if (!_entered && inAnim) _entered = true; if (_entered && !inAnim) _enemy.state = EnemyState.Patrol; } public override void Exit() { if (!_enemy.isServer) return; _entered = false; _enemy.networkAnimator.ResetTrigger("dance"); _enemy.SetSpeedMul(1f); } } }