public void RoundPair(List <Match> piPreviousMatches, List <Player> piPlayers, int piOffset = 0) { List <Player> players; if (piOffset == 0) { players = PairingUtility.GetPlayersOrdered(piPreviousMatches, piPlayers); } else { players = PairingUtility.GetPlayersSortedSpecifiedFirst(piPlayers, piPlayers[piOffset]); } Dictionary <int, List <Player> > playersByPoints = GetPlayersGroupedByPoints(players); PairUpLowPlayers(playersByPoints); List <Player> playersDownpaired = new List <Player>(); foreach (var point in playersByPoints.Keys) { foreach (var player in playersDownpaired) { playersByPoints[point].Add(player); } playersDownpaired.Clear(); players = PairingUtility.GetPlayersOrdered(piPreviousMatches, playersByPoints[point]); InnerPairing(piPreviousMatches, players, playersDownpaired); } }
public IEnumerable <Player> GetFinalStandings() { var players = PairingUtility.GetPlayersOrdered(ivAllMatches, ivPlayers.ToList()); for (int i = 0; i < players.Count; i++) { players[i].Rank = i + 1; } return(players); }
public IEnumerable <Player> GetTemporaryStandings() { var matches = new List <Match>(); matches.AddRange(ivAllMatches); matches.AddRange(ivRounds.Last().Matches); var players = PairingUtility.GetPlayersOrdered(matches, ivPlayers.ToList()); for (int i = 0; i < players.Count; i++) { players[i].Rank = i + 1; } return(players); }