/// <summary> /// Adds a tournament to the collection. /// </summary> /// <param name="tournament">The tournament to add.</param> public static void Add(Models.Tournaments.ITournamentBase tournament) { int id = _tournaments.ItemCount; tournament.Id = id; _tournaments.TryAdd(tournament); }
/// <summary> /// Runs a new tournament. /// </summary> /// <param name="tournament">The tournament.</param> public static void RunNewTournament(Models.Tournaments.ITournamentBase tournament) { if (!tournament.Running) { tournament.Running = true; Task.Run(async() => await RunTournamentAsync(tournament, false)); } }
/// <summary> /// Runs a tournament asynchronously. /// </summary> /// <param name="tournament">The tournament.</param> /// <param name="queueBased">Boolean determining whether the tournament is queue based.</param> private static async Task RunTournamentAsync(Models.Tournaments.ITournamentBase tournament, bool queueBased) { try { tournament.OnSignUp(); Collections.PlayerCollection.BroadcastFormattedMessage("TOURNAMENT_SIGNUP", tournament.Name); await Task.Delay(60000); tournament.OnSend(); Collections.PlayerCollection.BroadcastFormattedMessage("TOURNAMENT_SEND", tournament.Name); if (tournament.Timeout > 0) { int timeOut = tournament.Timeout; while (timeOut > 0) { await Task.Delay(100); timeOut -= 100; tournament.OnTime(); } tournament.OnEndTimeOut(); } else { while (!tournament.Ended) { await Task.Delay(100); tournament.OnTime(); } } tournament.Running = false; if (queueBased) { await Task.Delay(Data.Constants.Time.TournamentQueueDelayTime); } } catch (Exception e) { Drivers.Global.RaiseException(e); } }
/// <summary> /// Adds a tournament to the queue. /// </summary> /// <param name="tournament">The tournament.</param> public static void Add(Models.Tournaments.ITournamentBase tournament) { _queue.TryAdd(tournament); }