Exemplo n.º 1
0
        public static bool TryParse(this string s, out PremiumSelection premiumSelection)
        {
            if (string.IsNullOrWhiteSpace(s))
            {
                premiumSelection = PremiumSelection.OnlyRegular;
                return(true);
            }

            if (Enum.TryParse(s, true, out premiumSelection))
            {
                return(true);
            }

            if (bool.TryParse(s.ToLowerInvariant(), out var b))
            {
                premiumSelection = b ? PremiumSelection.RegularAndPremium : PremiumSelection.OnlyRegular;
                return(true);
            }

            switch (s.ToLowerInvariant())
            {
            case "f":
            case "0":
            case "r":
            case "regular":
            case "tree":
                premiumSelection = PremiumSelection.OnlyRegular;
                break;

            case "p":
            case "premium":
            case "gold":
                premiumSelection = PremiumSelection.OnlyPremium;
                break;

            case "t":
            case "1":
            case "a":
            case "all":
            case "b":
            case "both":
            case "rp":
            case "regular,premium":
            // ReSharper disable once StringLiteralTypo
            case "regularpremium":
            case "any":
                premiumSelection = PremiumSelection.RegularAndPremium;
                break;

            default:
                return(false);
            }

            return(true);
        }
Exemplo n.º 2
0
        public static bool Filter(this PremiumSelection premiumSelection, bool isPremium)
        {
            switch (premiumSelection)
            {
            case PremiumSelection.OnlyRegular:
                return(!isPremium);

            case PremiumSelection.OnlyPremium:
                return(isPremium);

            case PremiumSelection.RegularAndPremium:
                return(true);

            default:
                throw new ArgumentOutOfRangeException(nameof(premiumSelection), premiumSelection, @"Not supported");
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// Top tanks by WN8
        /// </summary>
        public IEnumerable <TankPlayerStatistics> GetTopTanks(ReferencePeriod period = ReferencePeriod.All, int minNumberOfTanks = 5, int minTier = 1,
                                                              int maxTier            = 10, PremiumSelection includePremiums = PremiumSelection.OnlyRegular, int minBattles = 1, HashSet <Nation> nationsFilters = null, HashSet <TankType> typesFilter = null)
        {
            var all = GetTanks(period, minTier, maxTier, minBattles: minBattles).ToArray();

            if (nationsFilters != null && nationsFilters.Count > 0)
            {
                all = all.Where(t => nationsFilters.Contains(t.Nation)).ToArray();
            }

            if (typesFilter != null && typesFilter.Count > 0)
            {
                all = all.Where(t => typesFilter.Contains(t.Type)).ToArray();
            }

            all = all.Where(t => includePremiums.Filter(t.IsPremium)).ToArray();

            var top = FilterTopTanks(all, minNumberOfTanks, t => t.Wn8);

            return(top.Any() ? top : Array.Empty <TankPlayerStatistics>());
        }