/// <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); } }
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); }
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()); }
/// <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)); }