コード例 #1
0
        private VeterancyModification?SetVeterancyLevelArrayModificationData(XElement?modificationElement)
        {
            if (modificationElement == null)
            {
                return(null);
            }

            VeterancyModification veterancyModification = new VeterancyModification();

            if (double.TryParse(modificationElement.Attribute("KillXPBonus")?.Value, out double killXpBonusResult))
            {
                veterancyModification.KillXpBonus = killXpBonusResult;
            }

            foreach (XElement element in modificationElement.Elements())
            {
                string elementName = element.Name.LocalName.ToUpperInvariant();

                if (elementName == "DAMAGEDEALTSCALED")
                {
                    string?index = element.Attribute("index")?.Value;
                    string?value = GameData.GetValueFromAttribute(element.Attribute("value")?.Value ?? string.Empty);

                    if (!string.IsNullOrEmpty(index) && double.TryParse(value, out double valueResult))
                    {
                        veterancyModification.DamageDealtScaledCollection.Add(new VeterancyDamageDealtScaled()
                        {
                            Type  = index,
                            Value = valueResult,
                        });
                    }
                }
                else if (elementName == "DAMAGEDEALTFRACTION")
                {
                    string?index = element.Attribute("index")?.Value;
                    string?value = GameData.GetValueFromAttribute(element.Attribute("value")?.Value ?? string.Empty);

                    if (!string.IsNullOrEmpty(index) && double.TryParse(value, out double valueResult))
                    {
                        veterancyModification.DamageDealtFractionCollection.Add(new VeterancyDamageDealtFraction()
                        {
                            Type  = index,
                            Value = valueResult,
                        });
                    }
                }
                else if (elementName == "VITALMAXARRAY")
                {
                    string?index = element.Attribute("index")?.Value;
                    string?value = GameData.GetValueFromAttribute(element.Attribute("value")?.Value ?? string.Empty);

                    if (!string.IsNullOrEmpty(index) && double.TryParse(value, out double valueResult))
                    {
                        veterancyModification.VitalMaxCollection.Add(new VeterancyVitalMax()
                        {
                            Type  = index,
                            Value = valueResult,
                        });
                    }
                }
                else if (elementName == "VITALMAXFRACTIONARRAY")
                {
                    string?index = element.Attribute("index")?.Value;
                    string?value = GameData.GetValueFromAttribute(element.Attribute("value")?.Value ?? string.Empty);

                    if (!string.IsNullOrEmpty(index) && double.TryParse(value, out double valueResult))
                    {
                        veterancyModification.VitalMaxFractionCollection.Add(new VeterancyVitalMaxFraction()
                        {
                            Type  = index,
                            Value = valueResult,
                        });
                    }
                }
                else if (elementName == "VITALREGENARRAY")
                {
                    string?index = element.Attribute("index")?.Value;
                    string?value = GameData.GetValueFromAttribute(element.Attribute("value")?.Value ?? string.Empty);

                    if (!string.IsNullOrEmpty(index) && double.TryParse(value, out double valueResult))
                    {
                        veterancyModification.VitalRegenCollection.Add(new VeterancyVitalRegen()
                        {
                            Type  = index,
                            Value = valueResult,
                        });
                    }
                }
                else if (elementName == "VITALREGENFRACTIONARRAY")
                {
                    string?index = element.Attribute("index")?.Value;
                    string?value = GameData.GetValueFromAttribute(element.Attribute("value")?.Value ?? string.Empty);

                    if (!string.IsNullOrEmpty(index) && double.TryParse(value, out double valueResult))
                    {
                        veterancyModification.VitalRegenFractionCollection.Add(new VeterancyVitalRegenFraction()
                        {
                            Type  = index,
                            Value = valueResult,
                        });
                    }
                }
            }

            return(veterancyModification);
        }
コード例 #2
0
        protected override void SetTestData()
        {
            BehaviorVeterancy behaviorVeterancy = new BehaviorVeterancy()
            {
                CombineModifications = true,
                CombineXP            = true,
                Id = "Vet1",
            };

            var veterancyModification = new VeterancyModification
            {
                KillXpBonus = 10,
            };

            veterancyModification.DamageDealtScaledCollection.Add(
                new VeterancyDamageDealtScaled()
            {
                Type  = "basic",
                Value = 0.2,
            });
            veterancyModification.DamageDealtScaledCollection.Add(
                new VeterancyDamageDealtScaled()
            {
                Type  = "ability",
                Value = 0.6,
            });
            veterancyModification.VitalRegenFractionCollection.Add(
                new VeterancyVitalRegenFraction()
            {
                Type  = "life",
                Value = 0.02,
            });

            behaviorVeterancy.VeterancyLevels.Add(new VeterancyLevel()
            {
                MinimumVeterancyXP    = 5,
                VeterancyModification = veterancyModification,
            });

            var veterancyModification2 = new VeterancyModification()
            {
                KillXpBonus = 0,
            };

            veterancyModification2.DamageDealtScaledCollection.Add(
                new VeterancyDamageDealtScaled()
            {
                Type  = "basic",
                Value = 0.4,
            });

            veterancyModification2.DamageDealtScaledCollection.Add(
                new VeterancyDamageDealtScaled()
            {
                Type  = "ability",
                Value = 0.5,
            });

            veterancyModification2.VitalRegenFractionCollection.Add(
                new VeterancyVitalRegenFraction()
            {
                Type  = "life",
                Value = 0.03,
            });

            behaviorVeterancy.VeterancyLevels.Add(new VeterancyLevel()
            {
                MinimumVeterancyXP    = 9,
                VeterancyModification = veterancyModification2,
            });

            TestData.Add(behaviorVeterancy);
        }