public async Task <IList <Lobby> > SearchLobbies(Action <ILobbySearchBuilder> builder = null)
        {
            LobbySearchBuilder queryBuilder;

            if (_nameFilter.Item2 != "")
            {
                queryBuilder = new LobbySearchBuilder(SteamMatchmaking.LobbyList.WithKeyValue(_nameFilter.Item1, _nameFilter.Item2));
            }
            else
            {
                queryBuilder = new LobbySearchBuilder(SteamMatchmaking.LobbyList);
            }

            builder?.Invoke(queryBuilder);
            var result = await queryBuilder.RunAsync();

            if (result == null)
            {
                return(new Lobby[0]);
            }

            var lobbies = new SteamLobby[result.Length];

            for (var i = 0; i < lobbies.Length; i++)
            {
                lobbies[i] = new SteamLobby(result[i], this);
            }

            return(lobbies);
        }
Пример #2
0
        public async Task <IList <Lobby> > SearchLobbies(Action <ILobbySearchBuilder> builder = null)
        {
            var queryBuilder = new LobbySearchBuilder(SteamMatchmaking.LobbyList);

            builder?.Invoke(queryBuilder);
            var result = await queryBuilder.RunAsync();

            if (result == null)
            {
                return(new Lobby[0]);
            }
            var lobbies = new Lobby[result.Length];

            for (var i = 0; i < lobbies.Length; i++)
            {
                lobbies[i] = new SteamLobby(result[i], this);
            }
            return(lobbies);
        }
        public async Task <IList <Lobby> > SearchLobbies(Action <ILobbySearchBuilder> builder = null)
        {
            var queryBuilder = new LobbySearchBuilder();

            builder?.Invoke(queryBuilder);
            var list = await SteamMatchmaking.RequestLobbyList().ToTask <LobbyMatchList_t>();

            var results = new Lobby[list.m_nLobbiesMatching];

            for (var i = 0; i < list.m_nLobbiesMatching; i++)
            {
                var lobbyId = SteamMatchmaking.GetLobbyByIndex(i);
                if (!lobbyId.IsValid())
                {
                    continue;
                }
                results[i] = new SteamLobby(lobbyId, this);
            }
            return(results);
        }
        public Task <IList <Lobby> > SearchLobbies(Action <ILobbySearchBuilder> builder)
        {
            var queryBuilder = new LobbySearchBuilder(_lobbyManager);

            builder?.Invoke(queryBuilder);
            var future = new TaskCompletionSource <IList <Lobby> >();

            _lobbyManager.Search(queryBuilder.Build(), (result) => {
                if (result != DiscordApp.Result.Ok)
                {
                    future.SetException(DiscordUtility.ToError(result));
                    return;
                }
                var count   = _lobbyManager.LobbyCount();
                var results = new Lobby[count];
                for (var i = 0; i < count; i++)
                {
                    var lobby  = _lobbyManager.GetLobby(_lobbyManager.GetLobbyId(i));
                    results[i] = new DiscordLobby(this, lobby);
                }
                future.SetResult(results);
            });
            return(future.Task);
        }