using BlueWater.Interfaces; using BlueWater.Utility; using Sirenix.OdinInspector; using UnityEngine; namespace BlueWater.Enemies.Bosses.SandMole { public class SandMoleStatus : MonoBehaviour, IStunnable { // Variables #region Variables // Stun [Title("기절 효과")] [SerializeField] private ParticleSystem _stunParticle; public bool IsStunEnabled { get; private set; } = true; public bool IsStunned { get; private set; } private Coroutine _stunCoolDownCoroutine; #endregion // Stun public bool CanStun() => IsStunEnabled; public void Stun(float duration) { if (!CanStun()) return; IsStunned = true; if (_stunParticle) { _stunParticle.Play(); } Utils.StartUniqueCoroutine(this, ref _stunCoolDownCoroutine, Utils.CoolDownCoroutine(duration, EndStun)); } public void EndStun() { Utils.EndUniqueCoroutine(this, ref _stunCoolDownCoroutine); _stunParticle.Stop(); _stunParticle.Clear(); IsStunned = false; } } }