private void AnalyzeEmotion(double happyPc, double sadPc, double neutralPc) { if (sadPc >= 0.3) // roughly 1/3 unhappy, give teacher time to explain // for unhappy students again or engage some activities { LessonHelper.SendPausedStatusToServer("paused"); LessonHelper.PauseLesson(); LessonHelper.ResumeSpeak(); Synthesizer.Speak("Well, since some of you are not sure of this topic, let Mr Nizam explain again. "); } // Ok, happy or neutral else { Debug.WriteLine("Before Pause Lesson"); LessonHelper.PauseLesson(); Debug.WriteLine("After pause lesson"); LessonHelper.ResumeSpeak(); Synthesizer.Speak("Wow, most of you understand the topic! Let us continue with the lesson. "); //LessonHelper.SendEmotionFeedBackToServer("survey-happy"); Debug.WriteLine("After speak the feedback"); //LessonHelper.Wait(2000); //Debug.WriteLine("After wait 2 seconds"); LessonHelper.ResumeLesson(); Debug.WriteLine("After resume"); } }
private void CommandHandler() { var quiz = new Quiz(); for (commandIteration = 0; commandIteration < _commands.Count; commandIteration++) { while (LessonHelper.PauseRequested) { Thread.Sleep(500); } CurrentCommand = _commands[commandIteration]; var cmd = CurrentCommand.Type; var val = CurrentCommand.Value; UpdateCommand(cmd.ToLower(), val); Debug.WriteLine(cmd + "/" + val); switch (cmd.ToLower()) { case "speak": Speak(val); break; case "speakasync": SpeakAsync(val); break; case "playaudio": AudioHelper.PlayAudio(val); break; case "myspeech": MySpeech(val); break; case "myspeechasync": MySpeechAsync(val); break; case "move": Move(val); break; case "wait": Wait(Convert.ToInt32(val)); break; case "playmedia": PlayMedia(val); break; case "quizformat": quiz.QuizFormat = val; break; case "answer": quiz.Answer = val; break; case "timeout": quiz.TimeOut = val; break; case "gesture": UpperBodyHelper.DoGestures(val); break; case "start": if (val.ToLower() == "quiz") { LessonHelper.QuestionNumber += 1; quiz.QuestionNumber = LessonHelper.QuestionNumber; StartQuiz(quiz); LessonStatusHelper.LessonStatus.CurQuiz = null; //Wait(Convert.ToInt32(quiz.TimeOut) * 1000 + QUIZ_BUFFER_SECONDS * 1000); Wait(QUIZ_BUFFER_SECONDS * 800); // This QUIZ BUFFER TO give extra time for all student submit the answer Debug.WriteLine("Stopping quiz"); StopQuiz(); Wait(QUIZ_BUFFER_SECONDS * 1000); var now = DateTime.Now; Debug.WriteLine(now + " : QUIZ COMPLETED"); // This QUIZ BUFFER TO give extra time for teacher send student result to robot } else if (val.ToLower() == "emotion-survey") { TakeEmotionSurvey(); } break; case "gountil": BaseHelper.GoUntilReachedGoalOrCanceled(val); break; case "asking": var status = LessonStatusHelper.LessonStatus; if (Convert.ToInt32(val) == 1) { status.LessonState = "asking"; } else { status.LessonState = "notAsking"; } WebHelper.UpdateStatus(status); Wait(1500); break; case "lesson": if (val == "pause") { LessonHelper.SendPausedStatusToServer("paused"); LessonHelper.PauseLesson(); } else if (val == "continue") { LessonHelper.SendPausedStatusToServer("resumed"); LessonHelper.ResumeLesson(); } break; case "robot": if (val == "pickup-std") { RandomAskStudentQuestion(); } break; default: //MessageBox.Show($"Unknown Type: {cmd}"); break; } } }