예제 #1
0
        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);
            }
        }
예제 #2
0
        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);
        }