private void Fight(Footballer player) { if (player.Skill >= Attacker.Skill) { Attacker = player; } }
public void ClosestPlayer(List <Footballer> footballers) { var min = footballers.First().Position.Distance(Position); var resultFootballer = new Footballer(); foreach (var footballer in footballers) { var footballerDistance = footballer.Position.Distance(Position); if (!(footballerDistance < min || footballer.Equals(Attacker) || footballerDistance > Constants.MaxDistanceToCatchBall)) { continue; } if (min < footballerDistance) { Fight(resultFootballer); } min = footballerDistance; resultFootballer = footballer; } }
public void AddFootballerToTeam(Footballer footballer) { if (Players.Count < 11) { Players.Add(footballer); } else { throw new CustomException("The team is full"); } }
private void DisqualifyFootballer(Footballer footballer) { if (FirstTeam.Title.Equals(footballer.TeamTitle)) { FirstTeam.Players.Remove(footballer); } else { SecondTeam.Players.Remove(footballer); } Ball.Position = Constants.DefaultBallPosition; }
public static bool AddToBreakList(Footballer footballer) { var result = BreakList.FindAll(f => f.Item1.Equals(footballer)).Count; if (result > 2) { BreakList.RemoveAll(p => p.Item1.Equals(footballer)); BreakList.Add(new Tuple <Footballer, BreakingCard>(footballer, BreakingCard.Red)); return(true); } BreakList.Add(new Tuple <Footballer, BreakingCard>(footballer, BreakingCard.Yellow)); return(false); }
public static void AddToGoalList(Footballer footballer) { var result = GoalList.Find(f => f.Item1.Equals(footballer)); if (result != null) { var newGoal = result.Item2 + 1; GoalList.Remove(result); GoalList.Add(new Tuple <Footballer, int>(footballer, newGoal)); } else { GoalList.Add(new Tuple <Footballer, int>(footballer, 1)); } }
public void MakeGoal(Footballer footballer) { if (FirstTeam.Title.Equals(footballer.TeamTitle) && Ball.BallOnGoalForSecondTeam()) { Count[0]++; Ball.Attacker = SecondTeam.Players.Find(f => f.Role == FootballerRole.Goolkeeper); OnGoal?.Invoke(footballer); } if (SecondTeam.Title.Equals(footballer.TeamTitle) && Ball.BallOnGoalForFirstTeam()) { Count[1]++; Ball.Attacker = FirstTeam.Players.Find(f => f.Role == FootballerRole.Goolkeeper); OnGoal?.Invoke(footballer); } Ball.Fly(); }
public void BreakingRules(Footballer footballer) { if (footballer.Role == FootballerRole.Goolkeeper) { return; } var firstGuardZone = Constants.Default1GoolkeeperPosition; var secondGuardZone = Constants.Default2GoolkeeperPosition; if (!(firstGuardZone.Distance(footballer.Position) <= 2 || secondGuardZone.Distance(footballer.Position) <= 2)) { return; } OnBreakRules(footballer); DisqualifyFootballer(footballer); }
public Ball() { Attacker = new Footballer(); Position = Constants.DefaultBallPosition; }