Exemple #1
0
        private int UpdateIdealPosition(PositionSizeRanges ranges, string position, IdealPosition idealPosition, int weight, int curScore)
        {
            int newScore = curScore;

            if (ranges.IdealWeightOffense != 0)
            {
                int score = Math.Abs(weight - ranges.IdealWeightOffense);
                if (score < newScore)
                {
                    newScore = score;
                    idealPosition.Position  = position;
                    idealPosition.Formation = DefensiveFront.Count;
                }
            }
            for (int i = 0; i < (int)DefensiveFront.Count; ++i)
            {
                if (ranges.IdealWeightDefense[i] != 0)
                {
                    int score = Math.Abs(weight - ranges.IdealWeightDefense[i]);
                    if (score < newScore)
                    {
                        newScore = score;
                        idealPosition.Position  = position;
                        idealPosition.Formation = (DefensiveFront)i;
                    }
                }
            }

            return(newScore);
        }
Exemple #2
0
        public IdealPosition GetIdealPosition(string position, int weight)
        {
            var ideal = new IdealPosition();

            ideal.Position  = position;
            ideal.Formation = DefensiveFront.Count;

            var ranges   = PositionSizeRangesMap[position];
            var curScore = UpdateIdealPosition(ranges, position, ideal, weight, int.MaxValue);

            foreach (var checkPos in ranges.AlternatePositions)
            {
                var checkRange = PositionSizeRangesMap[checkPos];
                curScore = UpdateIdealPosition(checkRange, checkPos, ideal, weight, curScore);
            }
            return(ideal);
        }