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); }
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); }