示例#1
0
    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();
        }
    }
示例#2
0
    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();
        }
    }
示例#3
0
    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);
    }