private AvailablePlayer FindBestPlayerForPosition(Point2 GridPos, List <AvailablePlayer> avail) { PlayerAdapter pa = new PlayerAdapter(); FormationAdapter fa = new FormationAdapter(); SuitablePlayerInfo suit = fa.SuitablePlayerPositions(GridPos); AvailablePlayer best = null; foreach (PlayerPosition pos in suit.Positions) { foreach (PlayerPositionSide side in suit.Sides) { best = (from ap in avail where ap.Side == side && ap.Pos == pos select ap).FirstOrDefault(); if (best != null) { break; } } if (best != null) { break; } } if (best == null) { best = (from ap in avail orderby ap.Rating descending select ap).FirstOrDefault(); } return(best); }
public SuitablePlayerInfo SuitablePlayerPositions(int x, int y) { List <PlayerPosition> BestPos = new List <PlayerPosition>(); List <PlayerPositionSide> BestSide = new List <PlayerPositionSide>(); switch (y) { case 0: BestPos.Add(PlayerPosition.Goalkeeper); break; case 1: BestPos.Add(PlayerPosition.Defender); break; case 2: BestPos.Add(PlayerPosition.Defender); BestPos.Add(PlayerPosition.Midfielder); break; case 3: BestPos.Add(PlayerPosition.Midfielder); BestPos.Add(PlayerPosition.Midfielder); break; case 4: BestPos.Add(PlayerPosition.Midfielder); BestPos.Add(PlayerPosition.Attacker); break; case 5: BestPos.Add(PlayerPosition.Attacker); break; case 6: BestPos.Add(PlayerPosition.Striker); break; default: BestPos.Add(PlayerPosition.None); break; } switch (x) { case 0: BestSide.Add(PlayerPositionSide.Left); break; case 1: BestSide.Add(PlayerPositionSide.Centre); BestSide.Add(PlayerPositionSide.Left); break; case 2: BestSide.Add(PlayerPositionSide.Centre); break; case 3: BestSide.Add(PlayerPositionSide.Centre); BestSide.Add(PlayerPositionSide.Right); break; case 4: BestSide.Add(PlayerPositionSide.Right); break; } SuitablePlayerInfo retVal = new SuitablePlayerInfo(); retVal.Positions = BestPos; retVal.Sides = BestSide; return(retVal); }