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); }
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); }
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); }
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); }