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