public void GenerateProjections(double Average) { List <FootballPlayer> teamPlayers = new List <FootballPlayer>(); teamPlayers.AddRange(Quarterbacks); teamPlayers.AddRange(RunningBacks); teamPlayers.AddRange(WideReceivers); teamPlayers.AddRange(TightEnds); double multiplier = (ImpliedScore - Average) / 60; double qbScore = Quarterbacks.Sum(s => s.PreProjected); double rbScore = RunningBacks.Sum(s => s.PreProjected); double wrScore = WideReceivers.Sum(s => s.PreProjected); double teScore = TightEnds.Sum(s => s.PreProjected); TeamTotalPoints = qbScore + rbScore + wrScore + teScore; double homeMultiplier = isHome ? 0.02 : 0; foreach (var player in teamPlayers) { double projectedAverage = player.PreProjected; double percentOfTeam = projectedAverage / TeamTotalPoints + .25; double playerMultiplier = homeMultiplier + (multiplier * percentOfTeam) + (percentOfTeam * player.DVPMultiplier) + 1; player.Projected = playerMultiplier * projectedAverage; player.PricePerPoint = player.Salary / player.Projected; } }