/// <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);
        }
示例#2
0
        /// <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));
            }
        }
示例#3
0
        /// <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);
            }
        }
示例#4
0
 /// <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);
 }