private IEnumerator StartRound() { yield return(new WaitForSeconds(1.5f)); int studentAlive = m_studentsList.Count; while (m_studentsList.Count > 0) { yield return(new WaitForSeconds(1.5f)); Exercise exercise = Instantiate(m_currentExercise.Explanation, m_teacher.transform); m_sManager.PlayExperience(); yield return(new WaitForSeconds(m_currentExercise.DisplayTime)); exercise.gameObject.SetActive(false); yield return(new WaitForSeconds(2.0f)); for (int i = 0; i < m_currentExercise.Questions.Count && m_studentsList.Count > 0; ++i) { Question question = Instantiate(m_currentExercise.Questions[i], m_studentsList.Peek().transform); m_sManager.PlayQuestion(); question.Init(exercise.m_elements); while (!question.IsAnswered()) { yield return(new WaitForFixedUpdate()); } Student student = m_studentsList.Pop(); bool rightAnswer = question.IsAnswerRight(); student.CraftPotion(rightAnswer); if (!rightAnswer) { studentAlive -= 1; } GameObject.Destroy(question.gameObject); yield return(new WaitForSeconds((rightAnswer ? 3.0f : 5.0f))); } GameObject.Destroy(exercise.gameObject); if (m_studentsList.Count > 0) { m_currentExercise = m_qManager.NextExercise(); } } if (studentAlive <= 0) { m_transition.FadeToGameOver(); } else if (++m_currentDay > MAX_DAYS) { m_transition.FadeToVictory(); } else { m_text.text = m_days[m_currentDay - 1]; m_transition.SetCallback(() => { DeleteStudents(); NewRound(); }); m_transition.FadeOut(); m_transition.FadeIn(); } }