Ejemplo n.º 1
0
        private async Task run_impl()
        {
            for (;;)
            {
                if (disposedValue)
                {
                    break;
                }

                try
                {
                    if (queue.Count >= min_players_in_arena)
                    {
                        var buffer = new List <Player>(min_players_in_arena);
                        for (var i = 0; i < min_players_in_arena; ++i)
                        {
                            var player = queue.Dequeue();
                            if (!player.online)
                            {
                                continue;
                            }
                            buffer.Add(player);
                        }

                        if (buffer.Count > 0)
                        {
                            all_arenas.TryCreateArenaForPlayersAsync(this, buffer);
                        }
                    }
                } catch (Exception e)
                {
                    Log.Exception(e);
                }
                await Task.Delay(delta_sec_between_pop_tries * 1000);
            }
        }