public void LoadEnumValues <T>() where T : struct, IConvertible
        {
            var type = typeof(T);

            if (!type.IsEnum)
            {
                throw new ArgumentException("T must be an enumerated type.", nameof(T));
            }
            ItemsType    = type;
            ItemsSource  = new ReadOnlyObservableCollection <NamedEnum>(new ObservableCollection <NamedEnum>(NamedEnum.FromType <T>()));
            SelectedItem = new NamedEnum(Settings.Current.Dimensions, "Selected Value", true);
        }
Exemple #2
0
        public string ValidateQuery()
        {
            NamedEnum NE = this.cmbTest.SelectedItem as NamedEnum;

            if (NE == null)
            {
                return(I18N.GetText("Query:NoQueryType"));
            }
            Test T = (Test)NE.Value;

            switch (T)
            {
            case Test.StartsWith:
            case Test.EndsWith:
            case Test.Contains:
            case Test.DoesntContain:
                if (this.txtTestParameter.Text == String.Empty)
                {
                    return(I18N.GetText("Query:NoEmptyString"));
                }
                return(null);

            case Test.Equals:
                return(null);

            case Test.MatchesRegexp:
            case Test.DoesntMatchRegexp:
                if (this.txtTestParameter.Text == String.Empty)
                {
                    return(I18N.GetText("Query:NoEmptyString"));
                }
                try
                {
                    // Try to parse the regex
                    Regex RE = new Regex(this.txtTestParameter.Text, RegexOptions.Multiline | RegexOptions.ExplicitCapture);
                }
                catch
                {
                    return(I18N.GetText("Query:BadRegexp"));
                }
                return(null);
            }
            return(I18N.GetText("Query:BadQueryType"));
        }
Exemple #3
0
 public ItemPredicate()
 {
     this.InitializeComponent();
     { // Add all item fields
         List <ItemField> ItemFields = new List <ItemField>();
         ItemFields.Add(new ItemField(null, I18N.GetText("ItemField:Any")));
         {
             Item I = new Item();
             foreach (string Field in I.GetAllFields())
             {
                 ItemFields.Add(new ItemField(Field, I.GetFieldName(Field)));
             }
         }
         this.cmbField.DataSource = ItemFields;
     }
     this.cmbField.SelectedIndex = 0; // Any Field
     this.cmbTest.Items.AddRange(NamedEnum.GetAll(typeof(Test)));
     this.cmbTest.SelectedIndex = 0;  // Contains
 }
Exemple #4
0
        private bool MatchString(string S)
        {
            if (S == null)
            {
                return(false);
            }
            NamedEnum NE = this.cmbTest.SelectedItem as NamedEnum;

            if (NE == null)
            {
                return(false);
            }
            Test T = (Test)NE.Value;

            switch (T)
            {
            case Test.StartsWith:
                return(S.StartsWith(this.txtTestParameter.Text));

            case Test.EndsWith:
                return(S.EndsWith(this.txtTestParameter.Text));

            case Test.Equals:
                return(S == this.txtTestParameter.Text);

            case Test.Contains:
            case Test.DoesntContain:
            {
                int Pos = S.IndexOf(this.txtTestParameter.Text);
                return((T == Test.Contains) ? (Pos >= 0) : (Pos < 0));
            }

            case Test.MatchesRegexp:
            case Test.DoesntMatchRegexp:
            {
                Regex RE = new Regex(this.txtTestParameter.Text, RegexOptions.Multiline | RegexOptions.ExplicitCapture);
                return((T == Test.MatchesRegexp) ? RE.IsMatch(S) : !RE.IsMatch(S));
            }
            }
            return(false);
        }
Exemple #5
0
        private void cmbViewMode_SelectedIndexChanged(object sender, EventArgs e)
        {
            NamedEnum NE = this.cmbViewMode.SelectedItem as NamedEnum;

            this.picImage.SizeMode = (PictureBoxSizeMode)NE.Value;
        }
Exemple #6
0
        public void AddModifiers(string condition, ClientEffect importObject, int valuePos, int deltaPos)
        {
            string[] condParts = condition.Split(new string[] { ",", " " }, StringSplitOptions.RemoveEmptyEntries);
            this.modifiers = new ActionModifiers();

            foreach (string cond in condParts)
            {
                if (cond.StartsWith("_race_"))
                {
                    string          race       = cond.Remove(0, 6);
                    SkillTargetRace targetRace = SkillTargetRace.PC_ALL;
                    if (race == "pc_light")
                    {
                        targetRace = SkillTargetRace.ELYOS;
                    }
                    else if (race == "pc_dark")
                    {
                        targetRace = SkillTargetRace.ASMODIANS;
                    }
                    else
                    {
                        targetRace = (SkillTargetRace)Enum.Parse(typeof(SkillTargetRace), race, true);
                    }
                    if (targetRace != SkillTargetRace.PC_ALL)
                    {
                        if (this.modifiers.targetrace == null)
                        {
                            this.modifiers.targetrace = new List <TargetRaceDamageModifier>();
                        }
                        var mod = new TargetRaceDamageModifier();
                        mod.race = targetRace;
                        if (importObject.reserved[valuePos] != null)
                        {
                            mod.value = Int32.Parse(importObject.reserved[valuePos].Trim());
                        }
                        if (importObject.reserved[deltaPos] != null)
                        {
                            mod.delta = Int32.Parse(importObject.reserved[deltaPos].Trim());
                        }
                        this.modifiers.targetrace.Add(mod);
                    }
                }
                else
                {
                    try {
                        TargetState targetState = new NamedEnum <TargetState>(cond);
                        if (targetState == TargetState.BACK)
                        {
                            this.modifiers.backdamage       = new BackDamageModifier();
                            this.modifiers.backdamage.value = Int32.Parse(importObject.reserved[valuePos].Trim());
                            this.modifiers.backdamage.delta = Int32.Parse(importObject.reserved[deltaPos].Trim());
                        }
                        else if (targetState == TargetState.FRONT)
                        {
                            this.modifiers.frontdamage       = new FrontDamageModifier();
                            this.modifiers.frontdamage.value = Int32.Parse(importObject.reserved[valuePos].Trim());
                            this.modifiers.frontdamage.delta = Int32.Parse(importObject.reserved[deltaPos].Trim());
                        }
                        else if (targetState == TargetState.FLYING)
                        {
                            this.modifiers.flyingdamage = new FlyingDamageModifier();
                            if (importObject.reserved[valuePos] != null)
                            {
                                this.modifiers.flyingdamage.value = Int32.Parse(importObject.reserved[valuePos].Trim());
                            }
                            if (importObject.reserved[deltaPos] != null)
                            {
                                this.modifiers.flyingdamage.delta = Int32.Parse(importObject.reserved[deltaPos].Trim());
                            }
                        }
                        else if (targetState == TargetState.NON_FLYING)
                        {
                            this.modifiers.nonflyingdamage = new NonFlyingDamageModifier();
                            if (importObject.reserved[valuePos] != null)
                            {
                                this.modifiers.nonflyingdamage.value = Int32.Parse(importObject.reserved[valuePos].Trim());
                            }
                            if (importObject.reserved[deltaPos] != null)
                            {
                                this.modifiers.nonflyingdamage.delta = Int32.Parse(importObject.reserved[deltaPos].Trim());
                            }
                        }
                        else
                        {
                            if (this.modifiers.abnormaldamage == null)
                            {
                                this.modifiers.abnormaldamage = new List <AbnormalDamageModifier>();
                            }
                            var abnormaldamage = new AbnormalDamageModifier();
                            abnormaldamage.type = targetState;
                            if (importObject.reserved[valuePos] != null)
                            {
                                abnormaldamage.value = Int32.Parse(importObject.reserved[valuePos].Trim());
                            }
                            if (importObject.reserved[deltaPos] != null)
                            {
                                abnormaldamage.delta = Int32.Parse(importObject.reserved[deltaPos].Trim());
                            }
                            this.modifiers.abnormaldamage.Add(abnormaldamage);
                        }
                        if (condParts.Length > 1)
                        {
                            Debug.Print("WARN: More than 1 modifier for skill: {0}", importObject.Skill.id);
                        }
                    } catch {
                        Debug.Print("Modifier '{0}' not handled", cond);
                    }
                }
            }

            if (!this.modifiers.Present)
            {
                this.modifiers = null;
            }
        }
Exemple #7
0
        public void AddModifiers(string condition, ClientEffect importObject, int valuePos, int deltaPos)
        {
            string[] condParts = condition.Split(new string[] { ",", " " }, StringSplitOptions.RemoveEmptyEntries);
            this.modifiers = new ActionModifiers();

            foreach (string cond in condParts) {
                if (cond.StartsWith("_race_")) {
                    string race = cond.Remove(0, 6);
                    SkillTargetRace targetRace = SkillTargetRace.PC_ALL;
                    if (race == "pc_light") {
                        targetRace = SkillTargetRace.ELYOS;
                    } else if (race == "pc_dark") {
                        targetRace = SkillTargetRace.ASMODIANS;
                    } else {
                        targetRace = (SkillTargetRace)Enum.Parse(typeof(SkillTargetRace), race, true);
                    }
                    if (targetRace != SkillTargetRace.PC_ALL) {
                        if (this.modifiers.targetrace == null)
                            this.modifiers.targetrace = new List<TargetRaceDamageModifier>();
                        var mod = new TargetRaceDamageModifier();
                        mod.race = targetRace;
                        if (importObject.reserved[valuePos] != null)
                            mod.value = Int32.Parse(importObject.reserved[valuePos].Trim());
                        if (importObject.reserved[deltaPos] != null)
                            mod.delta = Int32.Parse(importObject.reserved[deltaPos].Trim());
                        this.modifiers.targetrace.Add(mod);
                    }
                } else {
                    try {
                        TargetState targetState = new NamedEnum<TargetState>(cond);
                        if (targetState == TargetState.BACK) {
                            this.modifiers.backdamage = new BackDamageModifier();
                            this.modifiers.backdamage.value = Int32.Parse(importObject.reserved[valuePos].Trim());
                            this.modifiers.backdamage.delta = Int32.Parse(importObject.reserved[deltaPos].Trim());
                        } else if (targetState == TargetState.FRONT) {
                            this.modifiers.frontdamage = new FrontDamageModifier();
                            this.modifiers.frontdamage.value = Int32.Parse(importObject.reserved[valuePos].Trim());
                            this.modifiers.frontdamage.delta = Int32.Parse(importObject.reserved[deltaPos].Trim());
                        } else if (targetState == TargetState.FLYING) {
                            this.modifiers.flyingdamage = new FlyingDamageModifier();
                            if (importObject.reserved[valuePos] != null)
                                this.modifiers.flyingdamage.value = Int32.Parse(importObject.reserved[valuePos].Trim());
                            if (importObject.reserved[deltaPos] != null)
                                this.modifiers.flyingdamage.delta = Int32.Parse(importObject.reserved[deltaPos].Trim());
                        } else if (targetState == TargetState.NON_FLYING) {
                            this.modifiers.nonflyingdamage = new NonFlyingDamageModifier();
                            if (importObject.reserved[valuePos] != null)
                                this.modifiers.nonflyingdamage.value = Int32.Parse(importObject.reserved[valuePos].Trim());
                            if (importObject.reserved[deltaPos] != null)
                                this.modifiers.nonflyingdamage.delta = Int32.Parse(importObject.reserved[deltaPos].Trim());
                        } else {
                            if (this.modifiers.abnormaldamage == null)
                                this.modifiers.abnormaldamage = new List<AbnormalDamageModifier>();
                            var abnormaldamage = new AbnormalDamageModifier();
                            abnormaldamage.type = targetState;
                            if (importObject.reserved[valuePos] != null)
                                abnormaldamage.value = Int32.Parse(importObject.reserved[valuePos].Trim());
                            if (importObject.reserved[deltaPos] != null)
                                abnormaldamage.delta = Int32.Parse(importObject.reserved[deltaPos].Trim());
                            this.modifiers.abnormaldamage.Add(abnormaldamage);
                        }
                        if (condParts.Length > 1) {
                            Debug.Print("WARN: More than 1 modifier for skill: {0}", importObject.Skill.id);
                        }
                    } catch {
                        Debug.Print("Modifier '{0}' not handled", cond);
                    }
                }
            }

            if (!this.modifiers.Present)
                this.modifiers = null;
        }
Exemple #8
0
        public virtual void Import(ClientEffect importObject, IEnumerable <FieldInfo> getters)
        {
            effectid = importObject.effectid;
            e        = importObject.e;
            basiclvl = importObject.basiclv;
            hoptype  = importObject.hop_type;
            hopa     = importObject.hop_a;
            hopb     = importObject.hop_b;
            if (importObject.remain[1].HasValue && importObject.remain[1].Value != 0)
            {
                duration = importObject.remain[1].Value;
            }
            if (importObject.remain[0].HasValue)
            {
                duration += importObject.remain[0].Value;
            }
            randomtime = importObject.randomtime;
            noresist   = importObject.noresist;

            if (importObject.accuracy_modifiers != null && importObject.accuracy_modifiers[1] != null)
            {
                acc_mod = importObject.accuracy_modifiers[1].Value;
            }

            if (this is OverTimeEffect || this is SpellAtkDrainEffect || this is DiseaseEffect)
            {
                checktime = importObject.checktime;
            }
            if (importObject.reserved[8] != null)
            {
                onfly = importObject.reserved[8].Trim() == "1";
            }
            if (importObject.reserved[9] != null)
            {
                try {
                    element = (SkillElement)(Enum.Parse(typeof(SkillElement), importObject.reserved[9].Trim(), true));
                    if (!Enum.IsDefined(typeof(SkillElement), element))
                    {
                        element = SkillElement.NONE;
                    }
                } catch {
                    Debug.Print("R9: {0}", importObject.reserved[9]);
                }
            }

            if (importObject.cond_preeffect != PreeffectNumber.NONE)
            {
                this.preeffects_mask = (int)importObject.cond_preeffect;
                if (importObject.cond_preeffect_prob[1] != null)
                {
                    this.preeffect_prob = importObject.cond_preeffect_prob[1].Value / 100m;
                }
                else
                {
                    this.preeffect_prob = 1;
                }
            }

            if (this.preeffect_prob != 1 && e > 1)
            {
                this.preeffect_probSpecified = true;
            }

            if (importObject.critical_prob_modifiers[1] != null)
            {
                this.critical_prob = importObject.critical_prob_modifiers[1].Value / 100m;
            }
            else
            {
                this.critical_prob = 1;
            }

            if (!String.IsNullOrEmpty(importObject.cond_status))
            {
                NamedEnum <TargetState> v     = new NamedEnum <TargetState>(importObject.cond_status);
                TargetState             state = v;
                this.cond_effect = state;
            }
        }