Ejemplo n.º 1
0
        private void UpdateFilterButton()
        {
            var nextLabel = new StringBuilder();

            // Current constraints list
            if (!String.IsNullOrEmpty(_searchQuery))
            {
                nextLabel.Append($"Search: \"{_searchQuery}\"");
            }
            else
            {
                nextLabel.Append("All servers");
            }

            // No MpEx?
            if (!MpSession.GetLocalPlayerHasMultiplayerExtensions())
            {
                nextLabel.Append(", no modded games");
            }

            // (X results)
            var resultCount = HostedGameBrowser.TotalResultCount;
            var resultUnit  = resultCount == 1 ? "result" : "results";

            nextLabel.Append($" ({resultCount} {resultUnit})");

            // Apply
            _filterButtonLabel.SetText(nextLabel.ToString());
        }
        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.º 3
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);
            }
        }
        private void LobbyBrowser_OnUpdate()
        {
            GameList.data.Clear();
            CancelImageLoading();

            if (!String.IsNullOrEmpty(HostedGameBrowser.ServerMessage))
            {
                ServerMessageText.text    = HostedGameBrowser.ServerMessage;
                ServerMessageText.enabled = true;
            }
            else
            {
                ServerMessageText.enabled = false;
            }

            if (!HostedGameBrowser.ConnectionOk)
            {
                StatusText.text  = "Failed to get server list";
                StatusText.color = Color.red;
            }
            else if (!HostedGameBrowser.AnyResultsOnPage)
            {
                if (HostedGameBrowser.TotalResultCount == 0)
                {
                    if (IsSearching)
                    {
                        StatusText.text = "No servers found matching your search";
                    }
                    else
                    {
                        StatusText.text = "Sorry, no servers found";
                    }
                }
                else
                {
                    StatusText.text = "This page is empty";
                    RefreshButtonClick(); // this is awkward so force a refresh
                }

                StatusText.color = Color.red;
            }
            else
            {
                StatusText.text = $"Found {HostedGameBrowser.TotalResultCount} "
                                  + (HostedGameBrowser.TotalResultCount == 1 ? "server" : "servers")
                                  + $" (Page {HostedGameBrowser.PageIndex + 1} of {HostedGameBrowser.TotalPageCount})";

                StatusText.color = Color.green;

                if (IsSearching)
                {
                    StatusText.text += " (Filtered)";
                }

                foreach (var lobby in HostedGameBrowser.LobbiesOnPage)
                {
                    GameList.data.Add(new HostedGameCellData(_imageLoadCancellation, CellUpdateCallback, lobby));
                }
            }

            if (!MpSession.GetLocalPlayerHasMultiplayerExtensions())
            {
                StatusText.text += "\r\nMultiplayerExtensions not detected, hiding modded games";
                StatusText.color = Color.yellow;
                FilterModdedButton.interactable = false;
            }

            AfterCellsCreated();

            RefreshButton.interactable = true;

            SearchButton.interactable = (IsSearching || HostedGameBrowser.AnyResultsOnPage);
            SearchButton.SetButtonText(IsSearching ? "<color=#32CD32>Search</color>" : "Search");

            PageUpButton.interactable   = HostedGameBrowser.PageIndex > 0;
            PageDownButton.interactable = HostedGameBrowser.PageIndex < HostedGameBrowser.TotalPageCount - 1;
        }