예제 #1
0
        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");
            }
        }
예제 #2
0
        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;
                }
            }
        }