/// <summary> /// Quando o torneio for começar, embaralha os times e gera a primeira rodada. /// </summary> public void StartTournamentX1() { CurrentRound = 1; Random random = new Random(); List <Player> playerGames = Players; GamesX1 = new List <GameX1>(); for (int i = 0; i < playerGames.Count; i++) { int randomNumber = random.Next(0, playerGames.Count); Player aux = playerGames[i]; playerGames[i] = playerGames[randomNumber]; playerGames[randomNumber] = aux; } for (int i = 0; i < Players.Count; i = i + 2) { string tCode = TournamentCodeGenerator.GenarateCodeX1(Title + " - partida " + i, "pass"); GameX1 aux = new GameX1(playerGames[i], playerGames[i + 1], CurrentRound, false, false, tCode); aux.Date = StartDate; aux.Obs = ""; GamesX1.Add(aux); aux = null; } }
/// <summary> /// Método para ser executado no final de cada rodada. Define os jogos da próxima rodada ou define o vencedor. /// </summary> public void EndRoundX1() { CurrentRound++; List <GameX1> gamesAux = new List <GameX1>(); if (CurrentRound == NumberOfRounds) { string tCode = TournamentCodeGenerator.GenarateCodeX1(Title + " - final", "pass"); GameX1 Champion = new GameX1(GamesX1[0].Winner, GamesX1[1].Winner, CurrentRound, true, false, tCode); Champion.Date = StartDate; Champion.Obs = ""; gamesAux.Add(Champion); string tCode1 = TournamentCodeGenerator.GenarateCodeX1(Title + " - Disputa 3", "pass"); GameX1 Third = new GameX1(GamesX1[0].Loser, GamesX1[1].Loser, CurrentRound, false, true, tCode1); Third.Date = StartDate; Third.Obs = ""; gamesAux.Add(Third); GamesX1 = gamesAux; return; } int numberOfGames = (Games.Count / 2); for (int i = 0; i < numberOfGames * 2; i = i + 2) { string tCode = TournamentCodeGenerator.GenarateCode(Title + " - partida " + i, "pass"); GameX1 aux = new GameX1(GamesX1.Where(x => x.Round == CurrentRound - 1).ElementAt(i).Winner, GamesX1.Where(x => x.Round == CurrentRound - 1).ElementAt(i + 1).Winner, CurrentRound, false, false, tCode); aux.Date = StartDate; aux.Obs = ""; gamesAux.Add(aux); } GamesX1 = gamesAux; }