/// <summary>Updates the lobbies list.</summary> private void UpdateLobbies() { Lobbies.Clear(); Lobbies = new ObservableCollection <LobbyInstance>(ClientManager.Instance.LobbiesInSession.Values); if (Lobbies.Count == 4) { CreateEnabled = "false"; } else { CreateEnabled = "true"; } NotifyOfPropertyChange(() => Lobbies); }
/// <summary> /// Refresh the List of Lobbies. If no filter is passed in, a default one is created that filters based on AppId ("appid"). /// </summary> /// <param name="filter"></param> public void Refresh(Filter filter = null) { //init out values Lobbies.Clear(); requests.Clear(); Finished = false; if (filter == null) { filter = new Filter(); filter.StringFilters.Add("appid", client.AppId.ToString()); filter.DistanceFilter = Filter.Distance.Worldwide; //client.native.matchmaking.RequestLobbyList(OnLobbyList); //return; } client.native.matchmaking.AddRequestLobbyListDistanceFilter((SteamNative.LobbyDistanceFilter)filter.DistanceFilter); if (filter.SlotsAvailable != null) { client.native.matchmaking.AddRequestLobbyListFilterSlotsAvailable((int)filter.SlotsAvailable); } if (filter.MaxResults != null) { client.native.matchmaking.AddRequestLobbyListResultCountFilter((int)filter.MaxResults); } foreach (KeyValuePair <string, string> fil in filter.StringFilters) { client.native.matchmaking.AddRequestLobbyListStringFilter(fil.Key, fil.Value, SteamNative.LobbyComparison.Equal); } foreach (KeyValuePair <string, int> fil in filter.NearFilters) { client.native.matchmaking.AddRequestLobbyListNearValueFilter(fil.Key, fil.Value); } //foreach (KeyValuePair<string, KeyValuePair<Filter.Comparison, int>> fil in filter.NumericalFilters) //{ // client.native.matchmaking.AddRequestLobbyListNumericalFilter(fil.Key, fil.Value.Value, (SteamNative.LobbyComparison)fil.Value.Key); //} // this will never return lobbies that are full (via the actual api) client.native.matchmaking.RequestLobbyList(OnLobbyList); }