IEnumerator AddFreeze(eFreezeDuration duration) { ++_freezeStack; if (_freezeStack == 1) { GameManager.AddFreeze(GameFreezeMask.FreezeContext.Pause); } yield return(new WaitForSecondsRealtime(GetFreezeCoroutine(duration))); _freezeStack = Mathf.Max(0, _freezeStack - 1); if (_freezeStack == 0) { GameManager.RemoveFreeze(GameFreezeMask.FreezeContext.Pause); } }
float GetFreezeCoroutine(eFreezeDuration duration) { switch (duration) { case eFreezeDuration.eSmall: return(0.035f); case eFreezeDuration.eMedium: return(0.055f); case eFreezeDuration.eBig: return(0.08f); case eFreezeDuration.eVeryBig: return(0.15f); } return(0f); }