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); }
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); }