public IEnumerator AskQuestion(QuestionSpec questionSpec) { Debug.Log($"Asking question [{questionSpec.QuestionElements["BaseQuestion"].Text}]"); yield return(new WaitForSeconds(_questionsSpec.GeneralQuestionsSpec.AnswerListeningDuration)); Debug.Log($"Correct answers: [{string.Join(", ", questionSpec.CorrectAnswers)}]"); }
private IEnumerator OnCorrectAnswer(QuestionSpec questionSpec) { if (questionSpec.QuestionElements[QuestionSpec.DefaultKeys.Motivator].Voice != null) { yield return(PlayVoice(questionSpec.QuestionElements[QuestionSpec.DefaultKeys.Motivator])); } else { yield return(PlayVoice(_questionsSpec.GeneralQuestionsSpec.CongratsOnCorrectAnswer.Random(Random.Range))); } }
public IEnumerator AskQuestion(QuestionSpec questionSpec) { _speechRecognizer.Setup(questionSpec.CorrectAnswers); yield return(PlayVoice(questionSpec.QuestionElements[QuestionSpec.DefaultKeys.Intro])); yield return(PlayVoice(questionSpec.QuestionElements[QuestionSpec.DefaultKeys.BaseQuestion])); yield return(_speechRecognizer.Recognize(questionSpec.QuestionElements[QuestionSpec.DefaultKeys.BaseQuestion].Text, _questionsSpec.GeneralQuestionsSpec.AnswerListeningDuration)); if (_speechRecognizer.IsCorrectAnswer()) { OnAnswer?.Invoke(_statisticsInfo .AddTimeBeforeAnswer(_speechRecognizer.TimeBeforeAnswer) .AddCorrectAnswerAttempt(1)); yield return(OnCorrectAnswer(questionSpec)); yield break; } yield return(PlayVoice(questionSpec.QuestionElements[QuestionSpec.DefaultKeys.SupportQuestion])); yield return(_speechRecognizer.Recognize(questionSpec.QuestionElements[QuestionSpec.DefaultKeys.BaseQuestion].Text, _questionsSpec.GeneralQuestionsSpec.AnswerListeningDuration)); if (_speechRecognizer.IsCorrectAnswer()) { OnAnswer?.Invoke(_statisticsInfo .AddTimeBeforeAnswer(_speechRecognizer.TimeBeforeAnswer) .AddCorrectAnswerAttempt(2)); yield return(OnCorrectAnswer(questionSpec)); yield break; } OnAnswer?.Invoke(_statisticsInfo); yield return(PlayVoice(questionSpec.QuestionElements[QuestionSpec.DefaultKeys.RepeatOnIncorrect])); }
public QuestionStatisticInfo AddQuestionInfo(int questionNumber, QuestionSpec questionSpec) { QuestionNumber = questionNumber; QuestionSpec = questionSpec; return(this); }