public static async Task LoadPage(int offset, HostedGameFilters filters)
        {
            // Send API request
            var result = await BSSBMasterAPI.Browse(offset, filters);

            // Update state
            _offset           = offset;
            _lastServerResult = result;

            // If we got results, process and index the lobby info
            var nextLobbiesOnPage = new List <HostedGameData>();

            if (_lastServerResult != null)
            {
                foreach (var lobby in _lastServerResult.Lobbies)
                {
                    _lobbyObjects[lobby.Id.Value] = lobby;
                    nextLobbiesOnPage.Add(lobby);
                }
            }

            _lobbiesOnPage = nextLobbiesOnPage;

            // Fire update event for the UI
            OnUpdate.Invoke();
        }
Ejemplo n.º 2
0
        public static async Task LoadPage(int offset, string searchQuery, bool filterFull = false, bool filterInProgress = false, bool filterModded = false)
        {
            // Send API request
            var result = await BSSBMasterAPI.Browse(offset, searchQuery, filterFull, filterInProgress, filterModded);

            // Update state
            _offset           = offset;
            _lastServerResult = result;

            // If we got results, process and index the lobby info
            var nextLobbiesOnPage = new List <HostedGameData>();

            if (_lastServerResult != null)
            {
                foreach (var lobby in _lastServerResult.Lobbies)
                {
                    _lobbyObjects[lobby.Id.Value] = lobby;
                    nextLobbiesOnPage.Add(lobby);
                }

                // Server message
                if (!String.IsNullOrEmpty(_lastServerResult.Message))
                {
                    FloatingNotification.Instance.ShowMessage("Server Browser Message", _lastServerResult.Message,
                                                              FloatingNotification.NotificationStyle.Cerise, Sprites.Portal);
                }
            }

            _lobbiesOnPage = nextLobbiesOnPage;

            // Fire update event for the UI
            OnUpdate.Invoke();
        }
        public static async Task <ServerBrowseResult> Browse(int offset, HostedGameFilters filters)
        {
            var queryString = HttpUtility.ParseQueryString("");

            if (MpLocalPlayer.Platform.HasValue)
            {
                queryString.Add("platform", MpLocalPlayer.PlatformId);
            }

            if (offset > 0)
            {
                queryString.Add("offset", offset.ToString());
            }

            if (!MpSession.GetLocalPlayerHasMultiplayerExtensions())
            {
                queryString.Add("vanilla", "1");
            }

            if (!String.IsNullOrEmpty(filters.TextSearch))
            {
                queryString.Add("query", filters.TextSearch);
            }

            if (filters.HideFullGames)
            {
                queryString.Add("filterFull", "1");
            }

            if (filters.HideInProgressGames)
            {
                queryString.Add("filterInProgress", "1");
            }

            if (filters.HideModdedGames)
            {
                queryString.Add("filterModded", "1");
            }

            var response = await PerformWebRequest("GET", $"/browse?{queryString}");

            if (response == null)
            {
                Plugin.Log?.Warn($"Browse failed, did not get a valid response");
                return(null);
            }

            try
            {
                var contentStr = await response.Content.ReadAsStringAsync();

                return(ServerBrowseResult.FromJson(contentStr));
            }
            catch (Exception ex)
            {
                Plugin.Log?.Warn($"Error parsing browser response: {ex}");
                return(null);
            }
        }
Ejemplo n.º 4
0
        public static async Task <ServerBrowseResult> Browse(int offset, string searchQuery, bool filterFull = false, bool filterInProgress = false, bool filterModded = false)
        {
            var queryString = HttpUtility.ParseQueryString("");

            if (Plugin.PlatformId != Plugin.PLATFORM_UNKNOWN)
            {
                queryString.Add("platform", Plugin.PlatformId);
            }

            if (offset > 0)
            {
                queryString.Add("offset", offset.ToString());
            }

            if (!MpSession.GetLocalPlayerHasMultiplayerExtensions())
            {
                queryString.Add("vanilla", "1");
            }

            if (!String.IsNullOrEmpty(searchQuery))
            {
                queryString.Add("query", searchQuery);
            }

            if (filterFull)
            {
                queryString.Add("filterFull", "1");
            }

            if (filterInProgress)
            {
                queryString.Add("filterInProgress", "1");
            }

            if (filterModded)
            {
                queryString.Add("filterModded", "1");
            }

            var response = await PerformWebRequest("GET", $"/browse?{queryString}");

            if (response == null)
            {
                Plugin.Log?.Warn($"Browse failed, did not get a valid response");
                return(null);
            }

            try
            {
                var contentStr = await response.Content.ReadAsStringAsync();

                return(ServerBrowseResult.FromJson(contentStr));
            }
            catch (Exception ex)
            {
                Plugin.Log?.Warn($"Error parsing browser response: {ex}");
                return(null);
            }
        }
        public static async Task FullRefresh(HostedGameFilters filters)
        {
            _lastServerResult = null;
            _lobbyObjects     = new Dictionary <int, HostedGameData>(10);
            _lobbiesOnPage    = new List <HostedGameData>(10);

            await LoadPage(0, filters);
        }
Ejemplo n.º 6
0
        public static async Task FullRefresh(string searchQuery, bool filterFull = false, bool filterInProgress = false, bool filterModded = false)
        {
            _lastServerResult = null;
            _lobbyObjects     = new Dictionary <int, HostedGameData>(10);
            _lobbiesOnPage    = new List <HostedGameData>(10);

            await LoadPage(0, searchQuery, filterFull, filterInProgress, filterModded);
        }