コード例 #1
0
        private void CalculatePositionRating(PlayerListData data)
        {
            PlayerRecord rec      = m_ProgressData.PlayerRecords[data.ID];
            string       position = rec.Entries[0].Position;

            if (position == "LS")
            {
                return;
            }
            CalculateCombineRating(data, position);

            DataReader.DraftWeights.GlobalWeightData globalData = m_Weights.GlobalWeights;
            DataReader.DraftWeights.PositionWeights  posWeights = null;
            if (rec.Solecismic != 0 && rec.Dash != 0.0 && rec.Strength != 0 && rec.Agility != 0.0 && rec.Jump != 0)
            {
                posWeights = m_Weights.GetPositionWeight(position);
            }
            else
            {
                posWeights = m_Weights.GetNoCombinePositionWeight(position);
            }

            double attributesFactor = 0.0;

            int[] attributeIndices = m_FOFData.PositionGroupAttributes[rec.Entries[0].Position_Group];
            for (int attNum = 0; attNum < attributeIndices.Length; ++attNum)
            {
                int attIndex = attributeIndices[attNum];
                if (rec.DraftLowBars[attIndex] == 255 || rec.DraftHighBars[attIndex] == 255)
                {
                    continue;
                }
                switch (globalData.WhichAttributesToUse)
                {
                case DataReader.DraftWeights.AttributeUsage.UseMin:
                {
                    attributesFactor += ((double)(rec.DraftLowBars[attIndex] * posWeights.Attributes[attNum])) * 0.01;
                }
                break;

                case DataReader.DraftWeights.AttributeUsage.UseAverage:
                {
                    attributesFactor += ((double)((rec.DraftLowBars[attIndex] + rec.DraftHighBars[attIndex]) *
                                                  posWeights.Attributes[attNum])) * 0.005;
                }
                break;

                case DataReader.DraftWeights.AttributeUsage.UseMax:
                {
                    attributesFactor += ((double)(rec.DraftHighBars[attIndex] * posWeights.Attributes[attNum])) * 0.01;
                }
                break;
                }
            }
            data.AttributeScore = attributesFactor;

            data.PositionWeight = posWeights.Weight;
            data.OverallScore   = data.CombineScore + data.AttributeScore;
        }
コード例 #2
0
        private void CalculateCombineRating(PlayerListData data, string position)
        {
            PlayerRecord rec = m_ProgressData.PlayerRecords[data.ID];

            data.SolecismicRating    = 0.0;
            data.FortyRating         = 0.0;
            data.AgilityRating       = 0.0;
            data.BenchRating         = 0.0;
            data.BroadJumpRating     = 0.0;
            data.PositionDrillRating = 0.0;

            SolidColorBrush foreground;
            string          positionGroup = m_FOFData.PositionToPositionGroupMap[position];

            int positionIndex = m_FOFData.PositionGroupOrderMap[positionGroup];

            ColorCombine(data.CombineSolecismic, (int)DataReader.FOFData.CombineOrder.Solecismic, positionIndex, out foreground);
            data.SolecismicForeground = foreground;
            ColorCombine(data.CombineAgility, (int)DataReader.FOFData.CombineOrder.Agility, positionIndex, out foreground);
            data.AgilityForeground = foreground;
            ColorCombine(data.CombineBench, (int)DataReader.FOFData.CombineOrder.Bench, positionIndex, out foreground);
            data.BenchForeground = foreground;
            ColorCombine(data.CombineBroadJump, (int)DataReader.FOFData.CombineOrder.BroadJump, positionIndex, out foreground);
            data.BroadJumpForeground = foreground;
            ColorCombine(data.CombineForty, (int)DataReader.FOFData.CombineOrder.Dash, positionIndex, out foreground);
            data.FortyForeground = foreground;
            ColorCombine(data.CombinePositionDrill, (int)DataReader.FOFData.CombineOrder.PositionDrill, positionIndex, out foreground);
            data.PositionDrillForeground = foreground;

            if (rec.Solecismic == Byte.MaxValue)
            {
                // Do nothing, no combines, leave at 0
            }
            else if (rec.Solecismic != 0 && rec.Dash != 0.0 && rec.Strength != 0 && rec.Agility != 0.0 && rec.Jump != 0)
            {
                DataReader.DraftWeights.PositionWeights posWeights = m_Weights.GetPositionWeight(position);
                int    combineIndex = (int)DataReader.FOFData.CombineOrder.Solecismic;
                ushort threshold    = m_FOFData.CombineThresholds[positionIndex, combineIndex];
                double average      = m_FOFData.CombineAverages[positionIndex, combineIndex];
                double stdDev       = m_FOFData.CombineStandardDeviations[positionIndex, combineIndex];
                if (threshold > 0 && rec.Solecismic < threshold)
                {
                    data.SolecismicRating = m_Weights.GlobalWeights.CombineThresholdPenalty;
                }
                else
                {
                    data.SolecismicRating = ((((double)rec.Solecismic) - average) / stdDev) * posWeights.Solecismic;
                }

                combineIndex = (int)DataReader.FOFData.CombineOrder.Dash;
                threshold    = m_FOFData.CombineThresholds[positionIndex, combineIndex];
                average      = m_FOFData.CombineAverages[positionIndex, combineIndex];
                stdDev       = -m_FOFData.CombineStandardDeviations[positionIndex, combineIndex];
                if (threshold > 0 && rec.Dash > threshold)
                {
                    data.FortyRating = m_Weights.GlobalWeights.CombineThresholdPenalty;
                }
                else
                {
                    data.FortyRating = ((((double)rec.Dash / 100.0) - average) / stdDev) * posWeights.Dash;
                }

                combineIndex = (int)DataReader.FOFData.CombineOrder.Bench;
                threshold    = m_FOFData.CombineThresholds[positionIndex, combineIndex];
                average      = m_FOFData.CombineAverages[positionIndex, combineIndex];
                stdDev       = m_FOFData.CombineStandardDeviations[positionIndex, combineIndex];
                if (threshold > 0 && rec.Strength < threshold)
                {
                    data.BenchRating = m_Weights.GlobalWeights.CombineThresholdPenalty;
                }
                else
                {
                    data.BenchRating = ((((double)rec.Strength) - average) / stdDev) * posWeights.Bench;
                }

                combineIndex = (int)DataReader.FOFData.CombineOrder.Agility;
                threshold    = m_FOFData.CombineThresholds[positionIndex, combineIndex];
                average      = m_FOFData.CombineAverages[positionIndex, combineIndex];
                stdDev       = -m_FOFData.CombineStandardDeviations[positionIndex, combineIndex];
                if (threshold > 0 && rec.Agility > threshold)
                {
                    data.AgilityRating = m_Weights.GlobalWeights.CombineThresholdPenalty;
                }
                else
                {
                    data.AgilityRating = ((((double)rec.Agility / 100.0) - average) / stdDev) * posWeights.Agility;
                }

                combineIndex = (int)DataReader.FOFData.CombineOrder.BroadJump;
                threshold    = m_FOFData.CombineThresholds[positionIndex, combineIndex];
                average      = m_FOFData.CombineAverages[positionIndex, combineIndex];
                stdDev       = m_FOFData.CombineStandardDeviations[positionIndex, combineIndex];
                if (threshold > 0 && rec.Jump < threshold)
                {
                    data.BenchRating = m_Weights.GlobalWeights.CombineThresholdPenalty;
                }
                else
                {
                    data.BroadJumpRating = ((((double)rec.Jump) - average) / stdDev) * posWeights.BroadJump;
                }

                combineIndex = (int)DataReader.FOFData.CombineOrder.PositionDrill;
                threshold    = m_FOFData.CombineThresholds[positionIndex, combineIndex];
                average      = m_FOFData.CombineAverages[positionIndex, combineIndex];
                stdDev       = m_FOFData.CombineStandardDeviations[positionIndex, combineIndex];
                if (stdDev != 0.0)
                {
                    if (threshold > 0 && rec.Position_Specific < threshold)
                    {
                        data.PositionDrillRating = m_Weights.GlobalWeights.CombineThresholdPenalty;
                    }
                    else
                    {
                        data.PositionDrillRating = ((((double)rec.Position_Specific) - average) / stdDev) * posWeights.PositionDrill;
                    }
                }
            }
            else
            {
                int    combineIndex = (int)DataReader.FOFData.CombineOrder.Solecismic;
                ushort threshold    = m_FOFData.CombineThresholds[positionIndex, combineIndex];
                double average      = m_FOFData.CombineAverages[positionIndex, combineIndex];
                double stdDev       = m_FOFData.CombineStandardDeviations[positionIndex, combineIndex];
                DataReader.DraftWeights.PositionWeights posWeights = m_Weights.GetNoCombinePositionWeight(position);
                if (stdDev != 0.0 && rec.Solecismic != 0)
                {
                    if (threshold > 0 && rec.Solecismic < threshold)
                    {
                        data.SolecismicRating = m_Weights.GlobalWeights.CombineThresholdPenalty;
                    }
                    else
                    {
                        data.SolecismicRating = ((((double)rec.Solecismic) - average) / stdDev) * posWeights.Solecismic;
                    }
                }

                combineIndex = (int)DataReader.FOFData.CombineOrder.PositionDrill;
                threshold    = m_FOFData.CombineThresholds[positionIndex, combineIndex];
                average      = m_FOFData.CombineAverages[positionIndex, combineIndex];
                stdDev       = m_FOFData.CombineStandardDeviations[positionIndex, combineIndex];
                if (stdDev != 0.0 && rec.Position_Specific != 0)
                {
                    if (threshold > 0 && rec.Position_Specific < threshold)
                    {
                        data.PositionDrillRating = m_Weights.GlobalWeights.CombineThresholdPenalty;
                    }
                    else
                    {
                        data.PositionDrillRating = ((((double)rec.Position_Specific) - average) / stdDev) * posWeights.PositionDrill;
                    }
                }
            }
            data.CombineScore = data.SolecismicRating + data.FortyRating + data.AgilityRating + data.BenchRating + data.BroadJumpRating + data.PositionDrillRating;
        }