コード例 #1
0
       private void fireBiggestEvent(Mistake biggestMistake, Style biggestStyle)
       {
           double mistakeGravity=0;
           double styleGravity = 0;
           if (biggestMistake != null)
               mistakeGravity = getPointsOfMistake(biggestMistake);
           if (biggestStyle != null)
               styleGravity = biggestStyle.gravity;

           //If no mistake, nothing will be done (mistakes should have been ended in switch blocks)
           //-Compare biggest mistake with Current feedback 
           //--If no current feedback add this mistake to feedbacklist  
           //--If current feedback has ended, add this mistake to feedbackList.
           //--If bigger than current feedback, add this mistake to feedbacklist (note that since the feedbacklist only contains references to mistakes, you only have to add new mistakes)
           //--If smaller or equal than current feedback, do nothing.            
           if (mistakeGravity > styleGravity)
           {              
                feedBackList.Add(biggestMistake);               
           }
           else if (styleGravity > mistakeGravity)
           {               
                feedBackList.Add(biggestStyle);               
           }

           if (MainWindow.myState == MainWindow.States.freestyle)
           {
               int size = feedBackList.Count;
               if (size > 0)
               {
                   try
                   {
                       if (interruption)
                       {
                           //makeReport();
                           mostRepeatedMistake = getMostRepeatedMistake();
                           biggestOfAllMistakes = (Mistake)feedBackList[feedBackList.Count - 1];
                           if (repetitions > REPETITION_THRESHOLD && !interrupted)
                           {
                               isRepetitionInterruption = true;
                               triggered = mostRepeatedMistake;
                               increaseInterruptions(triggered);
                               clearReport();
                               //parent.freestyleMode.loadInterruption();                                  
                               parent.freestyleMode.doInterruption();
                               //makeLog();                                   
                               interrupted = true;
                               //Mistake x = (Mistake) feedBackList[feedBackList.Count -1];
                               //resetForMistake(x);
                           }
                           else if (getPointsOfMistake(biggestOfAllMistakes) > MAX_POINTS_THRESHOLD && !interrupted)
                           {
                               isRepetitionInterruption = false;
                               pointsOfBiggestOfAllMistakes = getPointsOfMistake(biggestOfAllMistakes);
                               triggered = biggestOfAllMistakes.subType;
                               increaseInterruptions(triggered);
                               clearReport();
                               //parent.freestyleMode.loadInterruption();
                               parent.freestyleMode.doInterruption();
                               //makeLog();
                               interrupted = true;
                               //Mistake x = (Mistake)feedBackList[feedBackList.Count - 1];
                               //resetForMistake(x);
                           }

                       }

                       PresentationEvent temp = feedBackList[size - 1];
                       if (fired == null || fired != temp)
                       {                           
                           feedBackEvent(this, temp);
                           fired = temp;
                           firedHasEnded = false;
                           
                       }                       
                       else //fired == temp
                       {
                           if (temp.hasEnded && !firedHasEnded)
                           {
                               feedBackEvent(this, temp);
                               firedHasEnded = true;
                               
                           }                           
                       }
                       
                   }
                   catch
                   {

                   }

               }

           }
           else 
           {
               //sendEvent(volumeMistakeList[volumeMistakeList.Count - 1]);
               //sendEvent(cadenceMistakeList[cadenceMistakeList.Count - 1]);
               //sendEvent(postureMistakeList[postureMistakeList.Count - 1]);
               //sendEvent(handMovementMistakeList[handMovementMistakeList.Count - 1]);
           }
       }
コード例 #2
0
        void rulesAnalyzer_feedBackEvent(object sender, PresentationEvent x)
        {

            if (x.hasEnded)
            {
                //Do something 
                animationWidth = ghost.ActualWidth;
                ghost.Visibility = Visibility.Collapsed;
                handleOldFeedback();
                textFeedback.CurrentFeedback.Content = " :-D";
                var uriSource = new Uri(@"/PresentationTrainer;component/Images/thumbs_up.png", UriKind.Relative);
                textFeedback.FeedbackIMG.Source = new BitmapImage(uriSource);
                textFeedback.FeedbackIMG.Visibility = Visibility.Visible;

            }
            else
            {


                if (x.classtype.Equals("Mistake"))
                {

                    mistakeFeedback((Mistake)x);

                }
                else if (x.classtype.Equals("Style"))
                {
                    styleFeedback((Style)x);
                }
                previousFeedback = x;
            }

        }
コード例 #3
0
        public void reset()
        {
            clearReport();
            volumeMistakeList = new List<Mistake>(); //int = 0
            cadenceMistakeList = new List<Mistake>(); //int = 1
            postureMistakeList = new List<Mistake>(); //int = 2
            handMovementMistakeList = new List<Mistake>(); //int = 3
            shortMistakeList = new List<Mistake>();

            feedBackList = new List<PresentationEvent>(); //first integer is number in the queue, the second integer stands for which mistake list the feedback belongs to
            fired = null;
            firedHasEnded = false;

            pauseStyleList = new List<Style>();
            postureStyleList = new List<Style>();
            speakingTimeStyleList = new List<Style>();


            volumeMistake = false;
            cadenceMistake = false;
            postureMistake = false;
            handMovementMistake = false;
            shortMistake = false;
        }