Пример #1
0
        /// <summary>
        /// Adds the <see cref="Unit"/>'s ability data.
        /// </summary>
        /// <param name="unit">The data to be set from <paramref name="tierElement"/>.</param>
        /// <param name="tierElement">The <see cref="JsonElement"/> to read from.</param>
        /// <param name="abilityTier">The tier of the ability.</param>
        /// <param name="parentLink">Indicates if the ability is a sub-ability.</param>
        /// <exception cref="ArgumentNullException"><paramref name="unit"/> is <see langword="null"/>.</exception>
        protected virtual void AddTierAbilities(Unit unit, JsonElement tierElement, AbilityTiers abilityTier, string?parentLink)
        {
            if (unit is null)
            {
                throw new ArgumentNullException(nameof(unit));
            }

            foreach (JsonElement element in tierElement.EnumerateArray())
            {
                Ability ability = new Ability
                {
                    Tier = abilityTier,
                };

                if (parentLink != null)
                {
                    string[] ids = parentLink.Split('|', StringSplitOptions.RemoveEmptyEntries);

                    if (ids.Length >= 2)
                    {
                        ability.ParentLink = new AbilityTalentId(ids[0], ids[1]);

                        if (ids.Length >= 3 && Enum.TryParse(ids[2], true, out AbilityTypes abilityTypes))
                        {
                            ability.ParentLink.AbilityType = abilityTypes;
                        }

                        if (ids.Length == 4 && bool.TryParse(ids[3], out bool isPassive))
                        {
                            ability.ParentLink.IsPassive = isPassive;
                        }
                    }
                }

                SetAbilityTalentBase(ability, element);

                unit.AddAbility(ability);
            }
        }
Пример #2
0
        public void EqualsTest(string referenceId, string buttonId, AbilityTypes abilityTypes, bool isPassive, AbilityTiers tier)
        {
            Ability ability = new Ability()
            {
                AbilityTalentId = new AbilityTalentId(referenceId, buttonId)
                {
                    AbilityType = abilityTypes,
                    IsPassive   = isPassive,
                },
                Tier = tier,
            };

            Assert.AreEqual(ability, ability);
        }
Пример #3
0
        public void OperatorNotEqualTest(string referenceId, string buttonId, AbilityTypes abilityTypes, bool isPassive, AbilityTiers tier, string referenceId2, string buttonId2, AbilityTypes abilityTypes2, bool isPassive2, AbilityTiers tier2)
        {
            Ability ability2 = new Ability()
            {
                AbilityTalentId = new AbilityTalentId(referenceId2, buttonId2)
                {
                    AbilityType = abilityTypes2,
                    IsPassive   = isPassive2,
                },
                Tier = tier2,
            };

            Ability ability = new Ability()
            {
                AbilityTalentId = new AbilityTalentId(referenceId, buttonId)
                {
                    AbilityType = abilityTypes,
                    IsPassive   = isPassive,
                },
                Tier = tier,
            };

            Talent talent = new Talent()
            {
                AbilityTalentId = new AbilityTalentId(referenceId, buttonId)
                {
                    AbilityType = abilityTypes,
                    IsPassive   = isPassive,
                },
                Tier = TalentTiers.Level1,
            };

#pragma warning disable SA1131 // Use readable conditions
            Assert.IsTrue(null ! != ability2);
#pragma warning restore SA1131 // Use readable conditions
            Assert.IsTrue(ability2 != null !);

            Assert.IsFalse(null ! != (AbilityTalentId)null !);
            Assert.IsTrue(ability != ability2);

            Assert.AreNotEqual(ability.GetHashCode(), ability2 !.GetHashCode());
            Assert.AreNotEqual(talent.GetHashCode(), ability2 !.GetHashCode());
        }
Пример #4
0
 /// <summary>
 /// Returns a collection of all the sub abilities in the selected tier.
 /// </summary>
 /// <param name="tier">The ability tier.</param>
 /// <returns>A collection of abilities.</returns>
 public IEnumerable <Ability> SubAbilities(AbilityTiers tier)
 {
     return(Abilities.Where(x => x.Tier == tier && x.ParentLink != null));
 }