// Loading KSF map list -------------------------------------------------------------------------------------------------------------------- #region ksf private async Task <List <string> > LoadMaps(EFilter_Game game, EFilter_Sort sort, int minTier, int maxTier, EFilter_MapType mapType) { // minTier options: 1-8 // maxTier options: 1-8 maps_list = new List <string>(); try { if (game != currentGame || sort != currentSort) { DetailedMapsRootObject dmro = await mapsViewModel.GetDetailedMapsList(game, sort); if (dmro == null) { Console.WriteLine("KSF Server Request returned NULL (MapsPage)"); MapsCollectionEmptyViewLabel.Text = "Could not reach KSF servers :("; return(maps_list); } MapsCollectionEmptyViewLabel.Text = "No maps matched your filter"; MapsTab.Title = "Maps [" + EFilter_ToString.toString2(game) + "]"; detailed_mapData = new List <DetailedMapDatum>(dmro.data); currentGame = game; currentSort = sort; } currentMinTier = minTier; currentMaxTier = maxTier; currentMapType = mapType; foreach (DetailedMapDatum datum in detailed_mapData) { int tier = int.Parse(datum.tier); int type = int.Parse(datum.maptype); if (mapType != EFilter_MapType.any && type != (int)mapType) { continue; } else if (tier < minTier) { continue; } else if (tier > maxTier) { continue; } maps_list.Add(datum.name); } } catch (FormatException) { Console.WriteLine("Problem parsing KSFDetailedMapDatum.data field (MapsPage)"); } return(maps_list); }
internal async void ApplyFilters(EFilter_Game game, EFilter_Sort sort, int minTier, int maxTier, EFilter_MapType mapType) { if (BaseViewModel.hasConnection()) { MapsSearchBar.Text = ""; LoadingAnimation.IsRunning = true; ChangeDisplayList(await LoadMaps(game, sort, minTier, maxTier, mapType)); LoadingAnimation.IsRunning = false; MapsCollectionView.ScrollTo(0); } else { await DisplayAlert("Could not connect to KSF servers :(", "Please connect to the Internet.", "OK"); } }
public static string toString(EFilter_Sort sort) { string sortString = ""; switch (sort) { case EFilter_Sort.name: sortString = "name"; break; case EFilter_Sort.created: sortString = "created"; break; case EFilter_Sort.lastplayed: sortString = "lastplayed"; break; case EFilter_Sort.playtime: sortString = "playtime"; break; case EFilter_Sort.popularity: sortString = "popularity"; break; default: break; } return(sortString); }
public MapsFilterPage(Action <EFilter_Game, EFilter_Sort, int, int, EFilter_MapType> FilterApplier, EFilter_Game currentGame, EFilter_Sort currentSort, int currentMinTier, int currentMaxTier, EFilter_MapType currentMapType, EFilter_Game defaultGame) { this.FilterApplier = FilterApplier; this.defaultGame = defaultGame; InitializeComponent(); ChangeGameFilter(currentGame); ChangeSortFilter(currentSort); ChangeMapTypeFilter(currentMapType); allowVibrate = true; minTier = currentMinTier; maxTier = currentMaxTier; MaxTierSlider.Value = maxTier; MinTierSlider.Value = minTier; }
private void ChangeSortFilter(EFilter_Sort newSort) { if (sort == newSort) { return; } switch (sort) { case EFilter_Sort.name: SortNameLabel.TextColor = untappedTextColor; break; case EFilter_Sort.created: SortCreateLabel.TextColor = untappedTextColor; break; case EFilter_Sort.lastplayed: SortLastLabel.TextColor = untappedTextColor; break; case EFilter_Sort.playtime: SortPlayLabel.TextColor = untappedTextColor; break; case EFilter_Sort.popularity: SortPopLabel.TextColor = untappedTextColor; break; default: break; } switch (newSort) { case EFilter_Sort.name: SortNameLabel.TextColor = tappedTextColor; break; case EFilter_Sort.created: SortCreateLabel.TextColor = tappedTextColor; break; case EFilter_Sort.lastplayed: SortLastLabel.TextColor = tappedTextColor; break; case EFilter_Sort.playtime: SortPlayLabel.TextColor = tappedTextColor; break; case EFilter_Sort.popularity: SortPopLabel.TextColor = tappedTextColor; break; } resetSort = newSort != (EFilter_Sort.name); checkReset(); BaseViewModel.vibrate(allowVibrate); sort = newSort; }
// KSF API calls ----------------------------------------------------------------------------------------------------------- #region ksf internal async Task <DetailedMapsRootObject> GetDetailedMapsList(EFilter_Game game, EFilter_Sort sort) { if (!BaseViewModel.hasConnection()) { return(null); } string gameString = EFilter_ToString.toString(game); string sortString = EFilter_ToString.toString(sort); if (gameString == "" || sortString == "") { return(null); } client.BaseUrl = new Uri("http://surf.ksfclan.com/api2/" + gameString + "/maplist/detailedlist/" + sortString + "/1,999"); await Task.Run(() => response = client.Execute(request)); if (response.StatusCode == System.Net.HttpStatusCode.OK) { return(JsonConvert.DeserializeObject <DetailedMapsRootObject>(response.Content)); } else { return(null); } }