using UnityEngine; // ReSharper disable once CheckNamespace namespace BlueWaterProject { public class CombatStatus : MonoBehaviour { [field: SerializeField] public bool IsStunned { get; private set; } [field: SerializeField] public bool IsSlowedMoveSpeed { get; private set; } [field: SerializeField] public float MoveSpeedCoefficient { get; private set; } private Coroutine stunCoolDownCoroutine; private Coroutine slowMoveSpeedCoolDownCoroutine; public void Stun(float duration) { IsStunned = true; if (stunCoolDownCoroutine != null) { StopCoroutine(stunCoolDownCoroutine); } stunCoolDownCoroutine = StartCoroutine(Utils.CoolDown(duration, EndStun)); } private void EndStun() { IsStunned = false; stunCoolDownCoroutine = null; } public void SlowMoveSpeed(float duration, float moveSpeedCoefficient) { IsSlowedMoveSpeed = true; MoveSpeedCoefficient = moveSpeedCoefficient; if (slowMoveSpeedCoolDownCoroutine != null) { StopCoroutine(slowMoveSpeedCoolDownCoroutine); } slowMoveSpeedCoolDownCoroutine = StartCoroutine(Utils.CoolDown(duration, EndSlowMoveSpeed)); } private void EndSlowMoveSpeed() { IsSlowedMoveSpeed = false; slowMoveSpeedCoolDownCoroutine = null; } } }