Ejemplo n.º 1
0
        public ChartData CalculateChartPoints()
        {
            double[] AccuracyTotalvsDifficultyArray = new double[30];
            double[] AccuracyTotalvsDifficultyCountsArray = new double[30];
            double[] AccuracyErrorvsDifficultyArray = new double[30];
            double[] AccuracyErrorvsDifficultyCountsArray = new double[30];
            double[] AccuracyLatevsDifficultyArray = new double[30];
            double[] AccuracyLatevsDifficultyCountsArray = new double[30];

            ChartData DP = new ChartData();

            foreach (PatternMetric Metric in PatternMetrics)
            {
                DP.AccuracyTotalvsTime.Add(new Point(Metric.PatternTimePlayed.ToFileTime(), Metric.PatternAccuracyTotal));
                DP.AccuracyErrorvsTime.Add(new Point(Metric.PatternTimePlayed.ToFileTime(), Metric.PatternAccuracyError));
                DP.AccuracyLatevsTime.Add(new Point(Metric.PatternTimePlayed.ToFileTime(), Metric.PatternAccuracyLate));

                AccuracyTotalvsDifficultyArray[Metric.PatternDifficulty] += Metric.PatternAccuracyTotal;
                AccuracyTotalvsDifficultyCountsArray[Metric.PatternDifficulty]++;
                AccuracyErrorvsDifficultyArray[Metric.PatternDifficulty] += Metric.PatternAccuracyError;
                AccuracyErrorvsDifficultyCountsArray[Metric.PatternDifficulty]++;
                AccuracyLatevsDifficultyArray[Metric.PatternDifficulty] += Metric.PatternAccuracyLate;
                AccuracyLatevsDifficultyCountsArray[Metric.PatternDifficulty]++;
            }

            for (int i = 0; i < 30; i++)
            {
                if (AccuracyTotalvsDifficultyCountsArray[i] > 0)
                {
                    DP.AccuracyTotalvsDifficulty.Add(new Point(i, (AccuracyTotalvsDifficultyArray[i] / AccuracyTotalvsDifficultyCountsArray[i])));
                }
                if (AccuracyErrorvsDifficultyCountsArray[i] > 0)
                {
                    DP.AccuracyErrorvsDifficulty.Add(new Point(i, (AccuracyErrorvsDifficultyArray[i] / AccuracyErrorvsDifficultyCountsArray[i])));
                }
                if (AccuracyLatevsDifficultyCountsArray[i] > 0)
                {
                    DP.AccuracyLatevsDifficulty.Add(new Point(i, (AccuracyLatevsDifficultyArray[i] / AccuracyLatevsDifficultyCountsArray[i])));
                }
            }

            for (int i = 0; i < Pattern.Count; i++)
            {
                if (((PatternUnit)Pattern[i]).IsLate || ((PatternUnit)Pattern[i]).MadeErrors)
                {
                    DP.StatusTotalvsPatternNotes.Add(new Point(i, 4));
                }
                else if (((PatternUnit)Pattern[i]).MadeErrors)
                {
                    DP.StatusTotalvsPatternNotes.Add(new Point(i, 3));
                }
                else if (((PatternUnit)Pattern[i]).IsLate)
                {
                    DP.StatusTotalvsPatternNotes.Add(new Point(i, 2));
                }
                else
                {
                    DP.StatusTotalvsPatternNotes.Add(new Point(i, 1));
                }
            }

            return DP;
        }
Ejemplo n.º 2
0
        public ChartData CalculateAccuracyChartPoints(ArrayList PatternMetrics)
        {
            double[] AccuracyTotalvsDifficultyArray = new double[30];
            double[] AccuracyTotalvsDifficultyCountsArray = new double[30];
            double[] AccuracyErrorvsDifficultyArray = new double[30];
            double[] AccuracyErrorvsDifficultyCountsArray = new double[30];
            double[] AccuracyLatevsDifficultyArray = new double[30];
            double[] AccuracyLatevsDifficultyCountsArray = new double[30];

            ChartData DP = new ChartData();

            foreach (PatternMetric Metric in PatternMetrics)
            {
                DP.AccuracyTotalvsTime.Add(new Point(Scale(Metric.PatternTimePlayed.ToFileTime(), 10, 300, ((PatternMetric)(PatternMetrics[0])).PatternTimePlayed.ToFileTime(), ((PatternMetric)(PatternMetrics[PatternMetrics.Count - 1])).PatternTimePlayed.ToFileTime()), Metric.PatternAccuracyTotal));
                DP.AccuracyErrorvsTime.Add(new Point(Scale(Metric.PatternTimePlayed.ToFileTime(), 10, 300, ((PatternMetric)(PatternMetrics[0])).PatternTimePlayed.ToFileTime(), ((PatternMetric)(PatternMetrics[PatternMetrics.Count - 1])).PatternTimePlayed.ToFileTime()), Metric.PatternAccuracyError));
                DP.AccuracyLatevsTime.Add(new Point(Scale(Metric.PatternTimePlayed.ToFileTime(), 10, 300, ((PatternMetric)(PatternMetrics[0])).PatternTimePlayed.ToFileTime(), ((PatternMetric)(PatternMetrics[PatternMetrics.Count - 1])).PatternTimePlayed.ToFileTime()), Metric.PatternAccuracyLate));

                AccuracyTotalvsDifficultyArray[Metric.PatternDifficulty] += Metric.PatternAccuracyTotal;
                AccuracyTotalvsDifficultyCountsArray[Metric.PatternDifficulty]++;
                AccuracyErrorvsDifficultyArray[Metric.PatternDifficulty] += Metric.PatternAccuracyError;
                AccuracyErrorvsDifficultyCountsArray[Metric.PatternDifficulty]++;
                AccuracyLatevsDifficultyArray[Metric.PatternDifficulty] += Metric.PatternAccuracyLate;
                AccuracyLatevsDifficultyCountsArray[Metric.PatternDifficulty]++;
            }

            for (int i = 0; i < 30; i++)
            {
                if (AccuracyTotalvsDifficultyCountsArray[i] > 0)
                {
                    DP.AccuracyTotalvsDifficulty.Add(new Point(i, (AccuracyTotalvsDifficultyArray[i] / AccuracyTotalvsDifficultyCountsArray[i])));
                }
                if (AccuracyErrorvsDifficultyCountsArray[i] > 0)
                {
                    DP.AccuracyErrorvsDifficulty.Add(new Point(i, (AccuracyErrorvsDifficultyArray[i] / AccuracyErrorvsDifficultyCountsArray[i])));
                }
                if (AccuracyLatevsDifficultyCountsArray[i] > 0)
                {
                    DP.AccuracyLatevsDifficulty.Add(new Point(i, (AccuracyLatevsDifficultyArray[i] / AccuracyLatevsDifficultyCountsArray[i])));
                }
            }

            return DP;
        }
Ejemplo n.º 3
0
        public void ShowTestResults()
        { 
            //TODO Display Results of the Test

            WriteHistoryToFile(UserDataPath + UserFileName);

            //NECESSARY CRAP IF YOU WANT TO MODIFY ANY CONTROL THAT'S OWNED BY THE MAIN THREAD
            C.Dispatcher.Invoke(
                System.Windows.Threading.DispatcherPriority.Normal,
                new Action(
                    delegate()
                    {
                        C.Children.Remove(MenuButton);
                    }
                ));

            //NECESSARY CRAP IF YOU WANT TO MODIFY ANY CONTROL THAT'S OWNED BY THE MAIN THREAD
            ChartCanvas.Dispatcher.Invoke(
                System.Windows.Threading.DispatcherPriority.Normal,
                new Action(
                    delegate()
                    {
                        ChartCanvas.Children.Remove(LG);
                    }
                ));

            ////NECESSARY CRAP IF YOU WANT TO MODIFY ANY CONTROL THAT'S OWNED BY THE MAIN THREAD
            //LineGraph.Dispatcher.Invoke(
            //    System.Windows.Threading.DispatcherPriority.Normal,
            //    new Action<PointCollection>(
            //        delegate(PointCollection Acc)
            //        {
            //            LineGraph.SetPointLocations(DP.AccuracyTotalvsTime, 0.0);
            //        }
            //    ),
            //    DataPoints.AccuracyErrorvsDifficulty.Clone()
            //);

            //NECESSARY CRAP IF YOU WANT TO MODIFY ANY CONTROL THAT'S OWNED BY THE MAIN THREAD
            LG.Dispatcher.Invoke(
                System.Windows.Threading.DispatcherPriority.Normal,
                new Action(
                    delegate()
                    {
                        ArrayList Metrics = new ArrayList();
                        Metrics.AddRange(ReadHistoryFromFile(UserDataPath + UserFileName));
                        ChartData Points = new ChartData();
                        Points = CalculateAccuracyChartPoints(Metrics);

                        LG = new AmCharts.Windows.QuickCharts.LineGraph();
                        LG.SetPointLocations(Points.AccuracyTotalvsTime, 0.0);
                        LG.Background = new System.Windows.Media.SolidColorBrush(Color.FromArgb(0xFF, 0xFF, 0xFF, 0xFF));
                        LG.Brush = new System.Windows.Media.SolidColorBrush(Color.FromArgb(0xFF, 0x00, 0x00, 0xFF));
                        LG.BorderBrush = new System.Windows.Media.SolidColorBrush(Color.FromArgb(0xFF, 0xFF, 0xFF, 0x00));
                        Canvas.SetLeft(LG, 0.0);
                        Canvas.SetTop(LG, 0.0);
                        LG.Title = "Stuff";
                        LG.Foreground = new System.Windows.Media.SolidColorBrush(Color.FromArgb(0xFF, 0x00, 0xFF, 0xFF));
                        LG.Visibility = System.Windows.Visibility.Visible;
                        LG.Render();
                    }
                )//,                (Object) (DataPoints.AccuracyTotalvsDifficulty)
            );

            ////NECESSARY CRAP IF YOU WANT TO MODIFY ANY CONTROL THAT'S OWNED BY THE MAIN THREAD
            //ColumnGraph.Dispatcher.Invoke(
            //    System.Windows.Threading.DispatcherPriority.Normal,
            //    new Action<ChartData>(
            //        delegate(ChartData DP)
            //        {
            //            //ColumnGraph.SetPointLocations(DP.StatusTotalvsPatternNotes, 0.0);
            //        }
            //    ),
            //    DataPoints
            //);

            ////NECESSARY CRAP IF YOU WANT TO MODIFY ANY CONTROL THAT'S OWNED BY THE MAIN THREAD
            //HistoryChart.Dispatcher.Invoke(
            //    System.Windows.Threading.DispatcherPriority.Normal,
            //    new Action(
            //        delegate()
            //        {
            //            HistoryChart.DataSource = DataPoints.AccuracyTotalvsTime;
            //        }
            //    ));

            ////NECESSARY CRAP IF YOU WANT TO MODIFY ANY CONTROL THAT'S OWNED BY THE MAIN THREAD
            //GapPerformance.Dispatcher.Invoke(
            //    System.Windows.Threading.DispatcherPriority.Normal,
            //    new Action<ChartData>(
            //        delegate(ChartData DP)
            //        {
            //            GapPerformance.DataSource = DP.StatusTotalvsPatternNotes;
            //        }
            //    ),
            //    DataPoints
            //);

            //NECESSARY CRAP IF YOU WANT TO MODIFY ANY CONTROL THAT'S OWNED BY THE MAIN THREAD
            TotAccScr.Dispatcher.Invoke(
                System.Windows.Threading.DispatcherPriority.Normal,
                new Action(
                    delegate()
                    {
                        TotAccScr.Content = "" + ((PatternMetric)PatternMetrics[PatternMetrics.Count - 1]).PatternAccuracyTotal + "%";
                    }
                ));

            //NECESSARY CRAP IF YOU WANT TO MODIFY ANY CONTROL THAT'S OWNED BY THE MAIN THREAD
            ErrAccScr.Dispatcher.Invoke(
                System.Windows.Threading.DispatcherPriority.Normal,
                new Action(
                    delegate()
                    {
                        ErrAccScr.Content = "" + ((PatternMetric)PatternMetrics[PatternMetrics.Count - 1]).PatternAccuracyError + "%";
                    }
                ));

            //NECESSARY CRAP IF YOU WANT TO MODIFY ANY CONTROL THAT'S OWNED BY THE MAIN THREAD
            LatAccScr.Dispatcher.Invoke(
                System.Windows.Threading.DispatcherPriority.Normal,
                new Action(
                    delegate()
                    {
                        LatAccScr.Content = "" + ((PatternMetric)PatternMetrics[PatternMetrics.Count - 1]).PatternAccuracyLate + "%";
                    }
                ));

            //NECESSARY CRAP IF YOU WANT TO MODIFY ANY CONTROL THAT'S OWNED BY THE MAIN THREAD
            ChartCanvas.Dispatcher.Invoke(
                System.Windows.Threading.DispatcherPriority.Normal,
                new Action(
                    delegate()
                    {
                        //LG.Render();
                        ChartCanvas.Children.Add(MenuButton);
                        ChartCanvas.Children.Add(LG);
                        ChartCanvas.Visibility = System.Windows.Visibility.Visible;
                    }
                ));
        }