Ejemplo n.º 1
0
 public Pokemon(PokedexEntry species, string name = "New Pokemon")
 {
     this.Name                = name;
     this.Species             = species;
     this.AttackIVExpression  = "0";
     this.DefenseIVExpression = "0";
     this.StaminaIVExpression = "0";
     this.LevelExpression     = "1";
     this.DustToPower         = Constants.DustCutoffs[0];
     this.IVSets              = new MyObservableCollection <IVSet>();
 }
Ejemplo n.º 2
0
        public bool EvaluateFilter(PokedexEntry pokemon)
        {
            bool test = false;

            switch (this.FilterType)
            {
            case PokedexFilterType.Name:
                switch (this.ComparisonType)
                {
                case FilterComparisonType.Equal:
                    return(pokemon.Species.Equals(this.FilterValue, StringComparison.InvariantCultureIgnoreCase));

                case FilterComparisonType.GreaterThan:
                    return(string.Compare(pokemon.Species, this.FilterValue, true) >= 1);

                case FilterComparisonType.LessThan:
                    return(string.Compare(pokemon.Species, this.FilterValue, true) <= -1);

                case FilterComparisonType.GreaterThanOrEqual:
                    return(string.Compare(pokemon.Species, this.FilterValue, true) >= 0);

                case FilterComparisonType.LessThanOrEqual:
                    return(string.Compare(pokemon.Species, this.FilterValue, true) <= 0);

                case FilterComparisonType.NotEqual:
                    return(!pokemon.Species.Equals(this.FilterValue, StringComparison.InvariantCultureIgnoreCase));

                default:
                    return(false);
                }

            case PokedexFilterType.PokedexNum:
                int pokedexNum;
                test = int.TryParse(this.FilterValue, out pokedexNum);
                if (!test)
                {
                    return(false);
                }
                switch (this.ComparisonType)
                {
                case FilterComparisonType.Equal:
                    return(pokemon.Number == pokedexNum);

                case FilterComparisonType.GreaterThan:
                    return(pokemon.Number > pokedexNum);

                case FilterComparisonType.LessThan:
                    return(pokemon.Number < pokedexNum);

                case FilterComparisonType.GreaterThanOrEqual:
                    return(pokemon.Number >= pokedexNum);

                case FilterComparisonType.LessThanOrEqual:
                    return(pokemon.Number <= pokedexNum);

                case FilterComparisonType.NotEqual:
                    return(pokemon.Number != pokedexNum);

                default:
                    return(false);
                }

            case PokedexFilterType.Type:
                switch (this.ComparisonType)
                {
                case FilterComparisonType.Equal:
                    return(pokemon.Type1.ToString().Equals(this.FilterValue, StringComparison.InvariantCultureIgnoreCase) || pokemon.Type2.ToString().Equals(this.FilterValue, StringComparison.InvariantCultureIgnoreCase));

                case FilterComparisonType.GreaterThan:
                    return(string.Compare(pokemon.Type1.ToString(), this.FilterValue, true) >= 1 || string.Compare(pokemon.Type2.ToString(), this.FilterValue, true) >= 1);

                case FilterComparisonType.LessThan:
                    return(string.Compare(pokemon.Type1.ToString(), this.FilterValue, true) <= -1 || string.Compare(pokemon.Type2.ToString(), this.FilterValue, true) <= -1);

                case FilterComparisonType.GreaterThanOrEqual:
                    return(string.Compare(pokemon.Type1.ToString(), this.FilterValue, true) >= 0 || string.Compare(pokemon.Type2.ToString(), this.FilterValue, true) >= 0);

                case FilterComparisonType.LessThanOrEqual:
                    return(string.Compare(pokemon.Type1.ToString(), this.FilterValue, true) <= 0 || string.Compare(pokemon.Type2.ToString(), this.FilterValue, true) <= 0);

                case FilterComparisonType.NotEqual:
                    return(!(pokemon.Type1.ToString().Equals(this.FilterValue, StringComparison.InvariantCultureIgnoreCase) || pokemon.Type2.ToString().Equals(this.FilterValue, StringComparison.InvariantCultureIgnoreCase)));

                default:
                    return(false);
                }

            case PokedexFilterType.Move:
                switch (this.ComparisonType)
                {
                case FilterComparisonType.Equal:
                    return(pokemon.FastMoves.Select(x => x.FastMove.Name).Contains(this.FilterValue, StringComparer.InvariantCultureIgnoreCase) || pokemon.ChargeMoves.Select(x => x.ChargeMove.Name).Contains(this.FilterValue, StringComparer.InvariantCultureIgnoreCase));

                case FilterComparisonType.GreaterThan:
                    this.ComparisonType = FilterComparisonType.Equal;
                    return(false);

                case FilterComparisonType.LessThan:
                    this.ComparisonType = FilterComparisonType.Equal;
                    return(false);

                case FilterComparisonType.GreaterThanOrEqual:
                    this.ComparisonType = FilterComparisonType.Equal;
                    return(false);

                case FilterComparisonType.LessThanOrEqual:
                    this.ComparisonType = FilterComparisonType.Equal;
                    return(false);

                case FilterComparisonType.NotEqual:
                    return(!(pokemon.FastMoves.Select(x => x.FastMove.Name).Contains(this.FilterValue, StringComparer.InvariantCultureIgnoreCase) || pokemon.ChargeMoves.Select(x => x.ChargeMove.Name).Contains(this.FilterValue, StringComparer.InvariantCultureIgnoreCase)));

                default:
                    return(false);
                }

            case PokedexFilterType.BaseAttack:
                int attack;
                test = int.TryParse(this.FilterValue, out attack);
                if (!test)
                {
                    return(false);
                }
                switch (this.ComparisonType)
                {
                case FilterComparisonType.Equal:
                    return(pokemon.Attack == attack);

                case FilterComparisonType.GreaterThan:
                    return(pokemon.Attack > attack);

                case FilterComparisonType.LessThan:
                    return(pokemon.Attack < attack);

                case FilterComparisonType.GreaterThanOrEqual:
                    return(pokemon.Attack >= attack);

                case FilterComparisonType.LessThanOrEqual:
                    return(pokemon.Attack <= attack);

                case FilterComparisonType.NotEqual:
                    return(pokemon.Attack != attack);

                default:
                    return(false);
                }

            case PokedexFilterType.BaseDefense:
                int defense;
                test = int.TryParse(this.FilterValue, out defense);
                if (!test)
                {
                    return(false);
                }
                switch (this.ComparisonType)
                {
                case FilterComparisonType.Equal:
                    return(pokemon.Defense == defense);

                case FilterComparisonType.GreaterThan:
                    return(pokemon.Defense > defense);

                case FilterComparisonType.LessThan:
                    return(pokemon.Defense < defense);

                case FilterComparisonType.GreaterThanOrEqual:
                    return(pokemon.Defense >= defense);

                case FilterComparisonType.LessThanOrEqual:
                    return(pokemon.Defense <= defense);

                case FilterComparisonType.NotEqual:
                    return(pokemon.Defense != defense);

                default:
                    return(false);
                }

            case PokedexFilterType.BaseStamina:
                int stamina;
                test = int.TryParse(this.FilterValue, out stamina);
                if (!test)
                {
                    return(false);
                }
                switch (this.ComparisonType)
                {
                case FilterComparisonType.Equal:
                    return(pokemon.Stamina == stamina);

                case FilterComparisonType.GreaterThan:
                    return(pokemon.Stamina > stamina);

                case FilterComparisonType.LessThan:
                    return(pokemon.Stamina < stamina);

                case FilterComparisonType.GreaterThanOrEqual:
                    return(pokemon.Stamina >= stamina);

                case FilterComparisonType.LessThanOrEqual:
                    return(pokemon.Stamina <= stamina);

                case FilterComparisonType.NotEqual:
                    return(pokemon.Stamina != stamina);

                default:
                    return(false);
                }

            case PokedexFilterType.MaxCP:
                int cp;
                test = int.TryParse(this.FilterValue, out cp);
                if (!test)
                {
                    return(false);
                }
                switch (this.ComparisonType)
                {
                case FilterComparisonType.Equal:
                    return(pokemon.MaxCP == cp);

                case FilterComparisonType.GreaterThan:
                    return(pokemon.MaxCP > cp);

                case FilterComparisonType.LessThan:
                    return(pokemon.MaxCP < cp);

                case FilterComparisonType.GreaterThanOrEqual:
                    return(pokemon.MaxCP >= cp);

                case FilterComparisonType.LessThanOrEqual:
                    return(pokemon.MaxCP <= cp);

                case FilterComparisonType.NotEqual:
                    return(pokemon.MaxCP != cp);

                default:
                    return(false);
                }

            case PokedexFilterType.BaseStatTotal:
                int total;
                test = int.TryParse(this.FilterValue, out total);
                if (!test)
                {
                    return(false);
                }
                switch (this.ComparisonType)
                {
                case FilterComparisonType.Equal:
                    return(pokemon.TotalStats == total);

                case FilterComparisonType.GreaterThan:
                    return(pokemon.TotalStats > total);

                case FilterComparisonType.LessThan:
                    return(pokemon.TotalStats < total);

                case FilterComparisonType.GreaterThanOrEqual:
                    return(pokemon.TotalStats >= total);

                case FilterComparisonType.LessThanOrEqual:
                    return(pokemon.TotalStats <= total);

                case FilterComparisonType.NotEqual:
                    return(pokemon.TotalStats != total);

                default:
                    return(false);
                }

            default:
                return(false);
            }
        }