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; } } }
private void SyncHelper_StatusChanged(object sender, StatusEventArgs e) { var status = e.Status; LessonStatusHelper.LessonStatus = status; //if (_prevState != status.LessonState) // _prevState = status.LessonState; //else return; if (status.LessonState != null) { if (status.LessonState.Contains("starting") && GlobalFlowControl.Lesson.Starting == false) { this.Invoke(new Action(() => { picClose.Visible = false; })); var lessonStt = status.LessonState.Split('-'); var teacherId = lessonStt[1]; string voiceName = "Voice 1"; if (lessonStt.Length > 2) { voiceName = lessonStt[2]; } string className = null; if (lessonStt.Length > 3) { className = lessonStt[3]; } GlobalFlowControl.Lesson.Name = status.LessonName; LessonHelper.SaveLessonHistory(status.LessonName, teacherId, className); LessonHelper.LessonId = status.LessonId; //this.Invoke(new MethodInvoker(() => this.Hide())); if (InvokeRequired) { this.Invoke(new Action(() => LessonHelper.Start(status.LessonName, Convert.ToInt32(status.LessonSlide), voiceName))); return; } } else if (status.LessonState == "pause" || status.LessonState == "asking") { Debug.WriteLine("PAUSING"); LessonHelper.PauseLesson(); } else if (status.LessonState == "continue") { Debug.WriteLine("Continue from server"); LessonHelper.ResumeLesson(); } else if (status.LessonState == "end") { try { if (InvokeRequired) { this.Invoke(new Action(() => { picClose.Visible = true; LessonHelper.EndLesson(); })); return; } } catch { } } if (status.MediaCompleted != null) { if (status.MediaCompleted == "true") { LessonHelper.MediaEnded(); status.MediaCompleted = null; WebHelper.UpdateStatus(status); } } } }