Ejemplo n.º 1
0
    private static bool ValidateOnStatChanged(EventData data, AbilityActivationInfo activator, Ability ability)
    {
        //bool result = false;

        BaseStat.StatType stat   = (BaseStat.StatType)data.GetInt("Stat");
        GameObject        target = data.GetGameObject("Target");
        //GameObject cause = data.GetGameObject("Cause");
        float value = data.GetFloat("Value");

        if (activator.targetstat != stat)
        {
            return(false);
        }

        switch (activator.gainedOrLost)
        {
        case EffectConstraint.GainedOrLost.Gained:
            if (value <= 0)
            {
                return(false);
            }
            break;

        case EffectConstraint.GainedOrLost.Lost:
            if (value >= 0)
            {
                return(false);
            }
            break;
        }

        switch (activator.statChangeTarget)
        {
        case EffectConstraint.TargetConstraintType.Ally:
            if (target.IsSelfOrAlly(ability.Source) == false)
            {
                return(false);
            }
            break;

        case EffectConstraint.TargetConstraintType.Enemy:
            if (target.IsSelfOrAlly(ability.Source) == true)
            {
                return(false);
            }
            break;

        case EffectConstraint.TargetConstraintType.SelfOnly:
            if (target != ability.Source)
            {
                return(false);
            }
            break;
        }



        return(true);
    }
Ejemplo n.º 2
0
    private void UnregisterListeners()
    {
        int count = activations.Count;

        for (int i = 0; i < count; i++)
        {
            AbilityActivationInfo currentMethod = activations[i];
            TearDownActivators(currentMethod);
        }
    }
Ejemplo n.º 3
0
    private void TearDownActivators(AbilityActivationInfo currentMethod)
    {
        switch (currentMethod.activationMethod)
        {
        case AbilityActivationMethod.Timed:
            //currentMethod.activaionTimer = null;
            break;

        case AbilityActivationMethod.StatChanged:
            EventGrid.EventManager.RemoveListener(Constants.GameEvent.StatChanged, OnStatChanged);
            break;
        }
    }
Ejemplo n.º 4
0
    public static bool Validate(Ability ability, AbilityActivationInfo activation, EventData eventData = null)
    {
        bool result = false;

        switch (activation.activationMethod)
        {
        case Constants.AbilityActivationMethod.StatChanged:
            result = ValidateOnStatChanged(eventData, activation, ability);
            break;
        }


        return(result);
    }
Ejemplo n.º 5
0
    private void UpdateTimers()
    {
        int count = activations.Count;

        for (int i = 0; i < count; i++)
        {
            AbilityActivationInfo currentMethod = activations[i];
            currentMethod.ManagedUpdate();
        }

        if (useTimer != null && InUse)
        {
            useTimer.UpdateClock();
        }
    }
Ejemplo n.º 6
0
    private bool GetActivator(AbilityActivationMethod method, out AbilityActivationInfo info)
    {
        info = new AbilityActivationInfo();

        int count = activations.Count;

        for (int i = 0; i < count; i++)
        {
            if (activations[i].activationMethod == method)
            {
                info = activations[i];
                return(true);
            }
        }
        return(false);
    }
Ejemplo n.º 7
0
    private void SetUpActivators(AbilityActivationInfo currentMethod)
    {
        switch (currentMethod.activationMethod)
        {
        case AbilityActivationMethod.Timed:
            currentMethod.activaionTimer = new Timer("Timed Activation", currentMethod.activationTime, true, TimedActivate);
            break;

        case AbilityActivationMethod.StatChanged:
            EventGrid.EventManager.RegisterListener(Constants.GameEvent.StatChanged, OnStatChanged);
            break;

        case AbilityActivationMethod.Passive:
            ActivateViaSpecificConditionSet(AbilityActivationMethod.Passive);
            break;
        }
    }
Ejemplo n.º 8
0
    private void SetUpActivators(AbilityActivationInfo activationInfo)
    {
        switch (activationInfo.activationMethod)
        {
        case AbilityActivationMethod.Timed:
            //Debug.Log(" a timed ability is seting up its timer: " + activationInfo.activationTime);
            activationInfo.activaionTimer = new Timer(activationInfo.activationTime, TimedActivate, true);
            break;

        case AbilityActivationMethod.StatChanged:
            EventGrid.EventManager.RegisterListener(Constants.GameEvent.StatChanged, OnStatChanged);
            break;

        case AbilityActivationMethod.Passive:
            ActivateViaSpecificConditionSet(AbilityActivationMethod.Passive);
            break;
        }
    }
Ejemplo n.º 9
0
    private AbilityActivationInfo DrawActivator(AbilityActivationInfo entry)
    {
        entry.activationConditions = EditorHelper.DrawList("Activation Options", "Option", entry.activationConditions, true, Constants.AbilityActivationCondition.Normal, true, DrawListOfEnums);
        entry.activationMethod     = EditorHelper.EnumPopup("Activation Method", entry.activationMethod);

        switch (entry.activationMethod)
        {
        case Constants.AbilityActivationMethod.Timed:
            entry.activationTime = EditorGUILayout.FloatField("Time", entry.activationTime);
            break;

        case Constants.AbilityActivationMethod.StatChanged:
            entry.targetstat       = EditorHelper.EnumPopup("What Stat Changed?", entry.targetstat);
            entry.gainedOrLost     = EditorHelper.EnumPopup("Gained or Lost?", entry.gainedOrLost);
            entry.statChangeTarget = EditorHelper.EnumPopup("Target of Stat Change", entry.statChangeTarget);
            break;
        }

        return(entry);
    }