public void GenerateTournamentTree() { SingleEliminationGames = new List <MatchNode>(); SingleEliminationFinal = GenerateMatchNode(); ConnectLeafNodesToMatch(SingleEliminationFinal); while (DoMerge()) { } if (SingleEliminationTeamEntryPoints.Count >= 2) { EndNode firstPlace = new EndNode(); EndNode SecondPlace = new EndNode(); firstPlace.AddFinalist(SingleEliminationFinal, MatchOutcome.OneVsOneWinner); SecondPlace.AddFinalist(SingleEliminationFinal, MatchOutcome.OneVsOneLooser); SingleEliminationPlacements.Add(firstPlace); SingleEliminationPlacements.Add(SecondPlace); } if (SingleEliminationTeamEntryPoints.Count >= 4) { EndNode ThirdPlace = new EndNode(); EndNode FourthPlace = new EndNode(); List <FinalistData> finalistData = SingleEliminationFinal.GetFinalists(); if (finalistData.Count > 1) { MatchNode thirdPlaceFianl = GenerateMatchNode(); thirdPlaceFianl.AddFinalist( finalistData[0].GetNode(), MatchOutcome.OneVsOneLooser); thirdPlaceFianl.AddFinalist( finalistData[1].GetNode(), MatchOutcome.OneVsOneLooser); thirdPlaceFianl.SetName("Third place final"); SingleEliminationThirdPlaceFinal = thirdPlaceFianl; ThirdPlace.AddFinalist(thirdPlaceFianl, MatchOutcome.OneVsOneWinner); FourthPlace.AddFinalist(thirdPlaceFianl, MatchOutcome.OneVsOneLooser); SingleEliminationPlacements.Add(ThirdPlace); SingleEliminationPlacements.Add(FourthPlace); SingleEliminationGames.Add(thirdPlaceFianl); } } foreach (var v in SingleEliminationGames) { v.SetName("Third place Final"); } SingleEliminationFinal.SetName("Final"); SingleEliminationGames.Add(SingleEliminationFinal); RenameNodes(); }
private FinalistData GetShallowNode() { FinalistData node = null; int shallowest = int.MaxValue; foreach (FinalistData fn in SingleEliminationFinal.GetFinalists()) { INode n = fn.GetNode(); int depth = n.GetNodeDepth(); if (shallowest > depth) { shallowest = depth; node = fn; } } return(node); }