コード例 #1
0
        /// <summary>
        ///     Calculates the league PerGame.
        /// </summary>
        /// <param name="playerStats">The player stats.</param>
        /// <param name="teamStats">The team stats.</param>
        /// <returns></returns>
        public static PlayerStats CalculateLeagueAverages(Dictionary<int, PlayerStats> playerStats,
                                                          Dictionary<int, TeamStats> teamStats)
        {
            var lps = new PlayerStats(new Player(-1, -1, "League", "Averages", Position.None, Position.None));
            foreach (int key in playerStats.Keys)
            {
                lps.AddPlayerStats(playerStats[key]);
            }

            var ls = new TeamStats(-2, "League");
            for (int i = 0; i < teamStats.Count; i++)
            {
                ls.AddTeamStats(teamStats[i], Span.Season);
                ls.AddTeamStats(teamStats[i], Span.Playoffs);
            }
            ls.CalcMetrics(ls);
            ls.CalcMetrics(ls, true);
            lps.CalcMetrics(ls, ls, ls, true);
            lps.CalcMetrics(ls, ls, ls, true, playoffs: true);

            var playerCount = (uint) playerStats.Count;
            for (int i = 0; i < lps.Totals.Length; i++)
            {
                lps.Totals[i] /= playerCount;
                lps.PlTotals[i] /= playerCount;
            }
            //ps.CalcAvg();
            return lps;
        }
コード例 #2
0
        /// <summary>Calculates the league PerGame.</summary>
        /// <param name="playerStats">The player stats.</param>
        /// <param name="teamStats">The team stats.</param>
        /// <returns></returns>
        public static PlayerStats CalculateLeagueAverages(
            Dictionary<int, PlayerStats> playerStats, Dictionary<int, TeamStats> teamStats)
        {
            var lps = new PlayerStats(new Player(-1, -1, "League", "Averages", Position.None, Position.None));
            foreach (var key in playerStats.Keys)
            {
                lps.AddPlayerStats(playerStats[key]);
            }

            var ls = new TeamStats(-2, "League");
            for (var i = 0; i < teamStats.Count; i++)
            {
                ls.AddTeamStats(teamStats[i], Span.Season);
                ls.AddTeamStats(teamStats[i], Span.Playoffs);
            }
            ls.CalcMetrics(ls);
            ls.CalcMetrics(ls, true);
            foreach (var name in PlayerStatsHelper.MetricsNames)
            {
                try
                {
                    lps.Metrics[name] =
                        playerStats.Where(ps => !Double.IsNaN(ps.Value.Metrics[name]) && !Double.IsInfinity(ps.Value.Metrics[name]))
                                   .Average(ps => ps.Value.Metrics[name]);
                }
                catch (InvalidOperationException)
                {
                    lps.Metrics[name] = Double.NaN;
                }
                try
                {
                    lps.PlMetrics[name] =
                        playerStats.Where(ps => !Double.IsNaN(ps.Value.PlMetrics[name]) && !Double.IsInfinity(ps.Value.Metrics[name]))
                                   .Average(ps => ps.Value.PlMetrics[name]);
                }
                catch (InvalidOperationException)
                {
                    lps.Metrics[name] = Double.NaN;
                }
            }

            var playerCount = (uint) playerStats.Count;
            for (var i = 0; i < lps.Totals.Length; i++)
            {
                lps.Totals[i] /= playerCount;
                lps.PlTotals[i] /= playerCount;
            }
            //ps.CalcAvg();
            return lps;
        }
コード例 #3
0
        /// <summary>
        ///     Updates the tab viewing the year-by-year overview of the player's stats.
        /// </summary>
        private void updateYearlyReport()
        {
            var psrList = new List<PlayerStatsRow>();
            var psCareer =
                new PlayerStats(new Player(_psr.ID, _psr.TeamF, _psr.LastName, _psr.FirstName, _psr.Position1, _psr.Position2));

            string qr = "SELECT * FROM PastPlayerStats WHERE PlayerID = " + _psr.ID + " ORDER BY CAST(\"SOrder\" AS INTEGER)";
            DataTable dt = _db.GetDataTable(qr);
            foreach (DataRow dr in dt.Rows)
            {
                var ps = new PlayerStats();
                bool isPlayoff = ParseCell.GetBoolean(dr, "isPlayoff");
                ps.GetStatsFromDataRow(dr, isPlayoff);
                Dictionary<string, double> tempMetrics = isPlayoff ? ps.PlMetrics : ps.Metrics;
                PlayerStats.CalculateRates(isPlayoff ? ps.PlTotals : ps.Totals, ref tempMetrics);
                string type = isPlayoff
                                  ? "Playoffs " + ParseCell.GetString(dr, "SeasonName")
                                  : "Season " + ParseCell.GetString(dr, "SeasonName");
                var curPSR = new PlayerStatsRow(ps, type, isPlayoff)
                    {
                        TeamFDisplay = ParseCell.GetString(dr, "TeamFin"),
                        TeamSDisplay = ParseCell.GetString(dr, "TeamSta")
                    };

                psrList.Add(curPSR);

                psCareer.AddPlayerStats(ps);
            }

            for (int i = 1; i <= _maxSeason; i++)
            {
                var displayNames = new Dictionary<int, string>();
                SQLiteIO.GetSeasonDisplayNames(MainWindow.CurrentDB, i, ref displayNames);
                string pT = "Players";
                if (i != _maxSeason)
                {
                    pT += "S" + i;
                }

                string q = "select * from " + pT + " where ID = " + _selectedPlayerID;
                DataTable res = _db.GetDataTable(q);
                if (res.Rows.Count == 1)
                {
                    var ps = new PlayerStats(res.Rows[0], MainWindow.TST);
                    PlayerStats.CalculateRates(ps.Totals, ref ps.Metrics);
                    var psr2 = new PlayerStatsRow(ps, "Season " + MainWindow.GetSeasonName(i));
                    psr2.TeamFDisplay = Misc.GetDisplayName(displayNames, psr2.TeamF);
                    psr2.TeamSDisplay = Misc.GetDisplayName(displayNames, psr2.TeamS);
                    psrList.Add(psr2);
                    psCareer.AddPlayerStats(ps);
                }

                pT = "PlayoffPlayers";
                if (i != _maxSeason)
                {
                    pT += "S" + i;
                }

                q = "select * from " + pT + " where ID = " + _selectedPlayerID;
                res = _db.GetDataTable(q);
                if (res.Rows.Count == 1)
                {
                    var ps = new PlayerStats(res.Rows[0], MainWindow.TST, true);
                    if (ps.PlTotals[PAbbr.GP] > 0)
                    {
                        PlayerStats.CalculateRates(ps.PlTotals, ref ps.PlMetrics);
                        var psr2 = new PlayerStatsRow(ps, "Playoffs " + MainWindow.GetSeasonName(i), true);
                        psr2.TeamFDisplay = Misc.GetDisplayName(displayNames, psr2.TeamF);
                        psr2.TeamSDisplay = Misc.GetDisplayName(displayNames, psr2.TeamS);
                        psrList.Add(psr2);
                        psCareer.AddPlayerStats(ps, true);
                    }
                }
            }

            PlayerStats.CalculateRates(psCareer.Totals, ref psCareer.Metrics);
            psrList.Add(new PlayerStatsRow(psCareer, "Career", "Career"));

            var psrListCollection = new ListCollectionView(psrList);
            Debug.Assert(psrListCollection.GroupDescriptions != null, "psrListCollection.GroupDescriptions != null");
            psrListCollection.GroupDescriptions.Add(new PropertyGroupDescription("Group"));
            dgvYearly.ItemsSource = psrListCollection;
        }