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(); }
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 FullRefresh(HostedGameFilters filters) { _lastServerResult = null; _lobbyObjects = new Dictionary <int, HostedGameData>(10); _lobbiesOnPage = new List <HostedGameData>(10); await LoadPage(0, filters); }