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); } }
private void RedoPairing(List <Match> matchesToUndo, List <Match> previousMatches, List <Player> players, List <Player> playersDownpaired, int indexOfPlayerToPairUp) { playersDownpaired.Clear(); foreach (var newMatch in matchesToUndo) { Matches.Remove(newMatch); } InnerPairing(previousMatches, PairingUtility.GetPlayersSortedSpecifiedFirst(players, players[indexOfPlayerToPairUp]), playersDownpaired); }