public virtual void Initialize(Entity source, SpecialAbilityData abilitydata, List <SpecialAbilityData> sequencedAbilities = null) { this.source = source; this.abilitydata = abilitydata; SetUpAbility(); if (sequencedAbilities != null && sequencedAbilities.Count > 0) { for (int i = 0; i < sequencedAbilities.Count; i++) { SpecialAbility sAbility = new SpecialAbility(); this.sequencedAbilities.Add(sAbility); sAbility.ParentAbility = this; sAbility.Initialize(source, sequencedAbilities[i]); } sequenceTimer = new Timer("SequenceTimer", sequenceWindow, false, ResetSequenceIndex); } if (activationMethod == Constants.SpecialAbilityActivationMethod.Passive) { Activate(); } }
public virtual void Initialize(Entity source, SpecialAbilityData abilitydata, List <SpecialAbilityData> sequencedAbilities = null) { this.source = source; this.abilitydata = abilitydata; SessionID = IDFactory.GenerateAbilityID(); SetUpAbility(); if (sequencedAbilities != null && sequencedAbilities.Count > 0) { for (int i = 0; i < sequencedAbilities.Count; i++) { SpecialAbility sAbility = new SpecialAbility(); this.sequencedAbilities.Add(sAbility); sAbility.ParentAbility = this; sAbility.Initialize(source, sequencedAbilities[i]); //Debug.Log(sequencedAbilities[i].abilityName + " is a sequence of " + abilitydata.abilityName); } sequenceTimer = new Timer(sequenceWindow, false, ResetSequenceIndex); } animationHash = Animator.StringToHash(animationTrigger); if (activationMethod == Constants.SpecialAbilityActivationMethod.Passive) { Activate(); } }
public void AddAbility(SpecialAbilityData abilityData, List <SpecialAbilityData> sequencedAbilities = null) { SpecialAbility newAbility = new SpecialAbility(); newAbility.Initialize(source, abilityData, sequencedAbilities); abilities.AddUnique(newAbility); }
public override void OnInspectorGUI() { //base.OnInspectorGUI(); _abilityData = (SpecialAbilityData)target; //DrawPresets(); _abilityData.abilityName = EditorGUILayout.TextField("Ability Name", _abilityData.abilityName); _abilityData.abilityType = EditorHelper.EnumPopup("Ability Type", _abilityData.abilityType); _abilityData.abilityLimitations = EditorHelper.EnumPopup("Ability Limtiations", _abilityData.abilityLimitations); _abilityData.activationMethod = EditorHelper.EnumPopup("Activation Method", _abilityData.activationMethod); _abilityData.procChance = EditorHelper.PercentFloatField("Proc Chance", _abilityData.procChance); _abilityData.animationTrigger = EditorGUILayout.TextField("Animation Trigger", _abilityData.animationTrigger); _abilityData.abilityIcon = EditorHelper.ObjectField <Sprite>("Icon", _abilityData.abilityIcon); EditorGUILayout.Separator(); _abilityData.recoveryType = EditorHelper.EnumPopup("Recvery Type", _abilityData.recoveryType); DrawRecoveryMethod(_abilityData.recoveryManager, _abilityData.recoveryType); EditorGUILayout.Separator(); _abilityData.useDuration = EditorGUILayout.FloatField("Use Duration", _abilityData.useDuration); _abilityData.overrideOtherAbilities = EditorGUILayout.Toggle("Override Other Abilities?", _abilityData.overrideOtherAbilities); EditorGUILayout.Separator(); _abilityData.sequencedAbilities = EditorHelper.DrawList("Sequenced Abilities", _abilityData.sequencedAbilities, true, null, true, DrawSpecialAbilityData); if (_abilityData.sequencedAbilities.Count > 0) { _abilityData.sequenceWindow = EditorGUILayout.FloatField("Sequence Window", _abilityData.sequenceWindow); } EditorGUILayout.Separator(); _abilityData.effectTypes = EditorHelper.DrawList("Effects", _abilityData.effectTypes, true, Constants.SpecialAbilityEffectType.None, true, DrawSpecialAbilityTypes); EditorGUILayout.Separator(); for (int i = 0; i < _abilityData.effectTypes.Count; i++) { ShowEffectOfType(_abilityData.effectTypes[i], _abilityData.effectHolder); } if (GUI.changed) { EditorUtility.SetDirty(target); } }
private SpecialAbilityData DrawSpecialAbilityData(List <SpecialAbilityData> abilityData, int index) { SpecialAbilityData result = EditorHelper.ObjectField <SpecialAbilityData>("Ability", abilityData[index]); return(result); }