Exemplo n.º 1
0
        internal Dictionary <string, List <HitFreqChartData> > GetHitFreqValues(PlayerStats selected, CombinedStats damageStats)
        {
            Dictionary <string, List <HitFreqChartData> > results = new Dictionary <string, List <HitFreqChartData> >();

            if (damageStats != null)
            {
                // get chart data for player and pets if available
                List <PlayerStats> list = new List <PlayerStats>();
                if (damageStats.Children.ContainsKey(selected.Name))
                {
                    list.AddRange(damageStats.Children[selected.Name]);
                }
                else
                {
                    list.Add(selected);
                }

                list.ForEach(stat =>
                {
                    results[stat.Name] = new List <HitFreqChartData>();
                    foreach (string type in stat.SubStats.Keys)
                    {
                        HitFreqChartData chartData = new HitFreqChartData()
                        {
                            HitType = stat.SubStats[type].Name
                        };

                        // add crits
                        chartData.CritXValues.AddRange(stat.SubStats[type].CritFreqValues.Keys.OrderBy(key => key));
                        chartData.CritXValues.ForEach(damage => chartData.CritYValues.Add(stat.SubStats[type].CritFreqValues[damage]));

                        // add non crits
                        chartData.NonCritXValues.AddRange(stat.SubStats[type].NonCritFreqValues.Keys.OrderBy(key => key));
                        chartData.NonCritXValues.ForEach(damage => chartData.NonCritYValues.Add(stat.SubStats[type].NonCritFreqValues[damage]));
                        results[stat.Name].Add(chartData);
                    }
                });
            }

            return(results);
        }
Exemplo n.º 2
0
        internal static Dictionary <string, List <HitFreqChartData> > GetHitFreqValues(PlayerStats selected, CombinedStats damageStats)
        {
            Dictionary <string, List <HitFreqChartData> > results = new Dictionary <string, List <HitFreqChartData> >();

            // get chart data for player and pets if available
            if (damageStats?.Children.ContainsKey(selected.Name) == true)
            {
                damageStats?.Children[selected.Name].ForEach(stats => AddStats(stats));
            }
            else
            {
                AddStats(selected);
            }

            return(results);

            void AddStats(PlayerStats stats)
            {
                results[stats.Name] = new List <HitFreqChartData>();
                foreach (string type in stats.SubStats.Keys)
                {
                    HitFreqChartData chartData = new HitFreqChartData()
                    {
                        HitType = stats.SubStats[type].Name
                    };

                    // add crits
                    chartData.CritXValues.AddRange(stats.SubStats[type].CritFreqValues.Keys.OrderBy(key => key));
                    chartData.CritXValues.ForEach(damage => chartData.CritYValues.Add(stats.SubStats[type].CritFreqValues[damage]));

                    // add non crits
                    chartData.NonCritXValues.AddRange(stats.SubStats[type].NonCritFreqValues.Keys.OrderBy(key => key));
                    chartData.NonCritXValues.ForEach(damage => chartData.NonCritYValues.Add(stats.SubStats[type].NonCritFreqValues[damage]));
                    results[stats.Name].Add(chartData);
                }
            }
        }
Exemplo n.º 3
0
        private void UserSelectionChanged()
        {
            if (!Updating)
            {
                Updating = true;

                Task.Delay(20).ContinueWith(task =>
                {
                    Dispatcher.InvokeAsync(() =>
                    {
                        try
                        {
                            if (playerList.SelectedItem is string player && hitTypeList.SelectedItem is string type && critTypeList.SelectedItem is string critType && player.Length > 0 && type.Length > 0 && critType.Length > 0)
                            {
                                DIMap                  = null;
                                var data               = ChartData[player];
                                int minFreq            = GetMinFreq();
                                HitFreqChartData first = data.Find(d => d.HitType == type);

                                YValues     = new List <int>();
                                XValues     = new List <long>();
                                XValuesDiff = new List <long>();

                                if (critType == CRIT_HITTYPE)
                                {
                                    for (int i = 0; i < first.CritYValues.Count; i++)
                                    {
                                        if (first.CritYValues[i] > minFreq)
                                        {
                                            YValues.Add(first.CritYValues[i]);
                                            XValues.Add(first.CritXValues[i]);
                                            XValuesDiff.Add(i > 0 ? Math.Abs(first.CritXValues[i] - first.CritXValues[i - 1]) : 0);
                                        }
                                    }
                                }
                                else
                                {
                                    for (int i = 0; i < first.NonCritYValues.Count; i++)
                                    {
                                        if (first.NonCritYValues[i] > minFreq)
                                        {
                                            YValues.Add(first.NonCritYValues[i]);
                                            XValues.Add(first.NonCritXValues[i]);
                                            XValuesDiff.Add(i > 0 ? Math.Abs(first.NonCritXValues[i] - first.NonCritXValues[i - 1]) : 0);
                                        }
                                    }
                                }

                                pageSlider.Value = 0;
                                UpdatePageSize();
                                DisplayPage();
                            }

                            Updating = false;
                        }
                        catch (ArgumentNullException ex)
                        {
                            Updating = false;
                            LOG.Error(ex);
                        }
                        catch (InvalidOperationException ioe)
                        {
                            Updating = false;
                            LOG.Error(ioe);
                        }
                    });
                }, TaskScheduler.Default);
            }
        }