protected override bool CheckForReduplication(Creature target) { for (int i = 0; i < target.activeTimedConditions.Count; i++) { TimedConditionContainer container = target.activeTimedConditions [i]; if (container.condition == this) { return(true); } } return(false); }
public override void UnregisterCondition(Creature target) { Debug.Log("unregister condition"); for (int i = 0; i < target.activeTimedConditions.Count; i++) { TimedConditionContainer container = target.activeTimedConditions [i]; if (container.condition == this) { target.activeTimedConditions.Remove(container); break; } } Debug.Log("target timed conditions count: " + target.activeTimedConditions.Count); }
private IEnumerator TimedConditionChecker(Creature target, TimedConditionContainer container) { TimedCondition condition = container.condition as TimedCondition; float startTime = Time.time + condition.timeToStart; float endTime = startTime + condition.duration; while (Time.time < startTime) { yield return(null); } while (Time.time <= endTime && container.isActive) { endTime = startTime + container.timeToEnd; CheckCondition(target, container); yield return(null); } condition.UnregisterCondition(target); }
public void StartCheckingConditionsForTarget(Creature target) { for (int i = 0; i < target.activeConditions.Count; i++) { ConditionContainer container = target.activeConditions [i]; if (container.isActive == false) { container.isActive = true; EffectController.instance.StartConditionChecker(target, container); } } for (int i = 0; i < target.activeTimedConditions.Count; i++) { TimedConditionContainer container = target.activeTimedConditions [i]; if (container.isActive == false) { container.isActive = true; EffectController.instance.StartTimedConditionChecker(target, container); } } }
public void StartTimedConditionChecker(Creature target, TimedConditionContainer conditionContainer) { StartCoroutine(TimedConditionChecker(target, conditionContainer)); }