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); }
private void UnregisterListeners() { int count = activations.Count; for (int i = 0; i < count; i++) { AbilityActivationInfo currentMethod = activations[i]; TearDownActivators(currentMethod); } }
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; } }
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); }
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(); } }
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); }
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; } }
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; } }
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); }