/// <summary> /// Adds the item ability with the specified type. /// </summary> /// <param name="characterLocomotion">The character to add the ability to.</param> /// <param name="abilityType">The type of ability to add.</param> /// <returns>The added ability.</returns> public static ItemAbility AddItemAbility(UltimateCharacterLocomotion characterLocomotion, Type abilityType, int index) { var itemAbilities = characterLocomotion.GetSerializedItemAbilities(); if (itemAbilities == null) { itemAbilities = new ItemAbility[1]; } else { Array.Resize(ref itemAbilities, itemAbilities.Length + 1); } var itemAbility = Activator.CreateInstance(abilityType) as ItemAbility; // Assign the default values specified by any added attribtes. SetAbilityDefaultValues(itemAbility); for (int i = itemAbilities.Length - 1; i > index; --i) { itemAbilities[i] = itemAbilities[i - 1]; } itemAbilities[itemAbilities.Length - 1] = itemAbility; characterLocomotion.ItemAbilities = itemAbilities; SerializeItemAbilities(characterLocomotion); return(itemAbility); }
/// <summary> /// Adds the item ability with the specified type. /// </summary> /// <param name="characterLocomotion">The character to add the ability to.</param> /// <param name="abilityType">The type of ability to add.</param> /// <returns>The added ability.</returns> public static ItemAbility AddItemAbility(UltimateCharacterLocomotion characterLocomotion, Type abilityType) { var itemAbilities = characterLocomotion.GetSerializedItemAbilities(); var index = itemAbilities == null ? 0 : itemAbilities.Length; return(AddItemAbility(characterLocomotion, abilityType, index)); }