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]); } }
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; } }
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; }