/// <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);
        }
Пример #2
0
        /// <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);
        }