/// <summary> /// Covers the transition between an active submission state to a validation state. /// </summary> internal IEnumerator ExitSubmit() { _init.isAnimated = true; _init.isCountingDown = false; _pho.PlaySound("endSubmit"); // ElasticOut ease of buttons going down. float k = 0; while (k <= 1) { _pho.Panel.transform.localPosition = new Vector3(0, (0.035f * Function.ElasticOut(1 - k)) - 0.025f, 0); k += 0.00390625f; yield return(new WaitForSecondsRealtime(0.01f)); } // ElasticOut ease of screen going up. k = 1; while (k > 0) { _pho.Screen.transform.localPosition = new Vector3(-0.015f, (0.02f * Function.ElasticOut(1 - k)) - 0.015f, -0.016f); k -= 0.015625f; yield return(new WaitForSecondsRealtime(0.01f)); } // Validation check. if (_init.solution == _init.submission) { _pho.StartCoroutine(_init.Solve()); } else { _pho.StartCoroutine(_init.BufferStrike()); } // Make the module inactive. _init.isAnimated = false; _init.isInSubmission = false; _init.isSelected = false; _pho.ButtonGroupRenderer.localScale = new Vector3(0, 0, 0); }
/// <summary> /// Starts a countdown, and attempts a strike if it reaches the end. Make sure that _time is set before running a coroutine with this method. /// </summary> internal IEnumerator Countdown() { _init.isCountingDown = true; _pho.PlaySound("voice_go"); for (time = currentTime; time >= 1; time--) { if (!_init.isCountingDown) { yield break; } _pho.PlaySoundFromTime(time, time == currentTime); UpdateDisplay(time); yield return(new WaitForSecondsRealtime(1)); } UpdateDisplay(0); _pho.StartCoroutine(_init.BufferStrike()); }