Exemple #1
0
        // 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);
        }
Exemple #2
0
        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");
            }
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        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;
        }
Exemple #5
0
        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;
        }
Exemple #6
0
        // 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);
            }
        }