Ejemplo n.º 1
0
        private void CreateMatch(Match match)
        {
            if (IsFinalMatchFull(match))
            {
                return;
            }

            if (match.BracketDepth == BracketHeight)
            {
                match.Participant1 = ParticipantsInBracketOrder.Pop();
                match.Participant2 = ParticipantsInBracketOrder.Pop();
                CreateMatch(match.NextRound);
                return;
            }

            if (match.PreviousMatches.Count > 1 && match.NextRound != null)
            {
                CreateMatch(match.NextRound);
                return;
            }

            Match previousMatch = new Match()
            {
                NextRound       = match,
                Participant1    = new Participant(),
                Participant2    = new Participant(),
                PreviousMatches = new List <Match>(),
                BracketDepth    = match.BracketDepth + 1
            };

            match.PreviousMatches.Add(previousMatch);
            CreateMatch(previousMatch);
        }
Ejemplo n.º 2
0
        private void AssignBracketOrderToParticipants(int iteration, int height, List <Participant> items)
        {
            if (iteration > Math.Pow(2, height))
            {
                return;
            }
            var index = BracketSeedOrder[iteration - 1];
            var item  = items[index];

            ParticipantsInBracketOrder.Push(item);
            iteration += 1;
            AssignBracketOrderToParticipants(iteration, height, items);
        }
Ejemplo n.º 3
0
        private void SetOrderBySeed()
        {
            var orderedList = ParticipantsInBracketOrder.OrderBy(k => k.Seed).ToList();

            SetEdgeCaseParticipants(orderedList);
            ParticipantsInBracketOrder.Clear();

            var height = BracketHeight;
            var ideal  = (int)Math.Pow(2, height);

            orderedList = orderedList.Take(ideal).ToList();
            var decrementValue = height - 1;

            SetBracketSeedOrder(1, 1, orderedList, decrementValue, height);
            AssignBracketOrderToParticipants(1, height, orderedList);
        }
Ejemplo n.º 4
0
        private void RandomizeParticipants()
        {
            Random random = new Random();
            var    list   = ParticipantsInBracketOrder.ToList();
            int    index  = 0;
            int    first  = 0;
            int    second = 0;

            while (index <= list.Count)
            {
                first  = random.Next(0, list.Count);
                second = random.Next(0, list.Count);
                var temp = list[first];
                list[first]  = list[second];
                list[second] = temp;
                index       += 1;
            }

            ParticipantsInBracketOrder = new Stack <Participant>(list);
        }