private IEnumerator DoTimedEffect(Creature target, TimedEffectContainer container, float value) { TimedEffect timedEffect = container.timedEffect; float startTime = Time.time + timedEffect.timeToStart; float endTime = Time.time + timedEffect.timeToStart + timedEffect.duration; Debug.Log("start time: " + startTime + ", name: " + timedEffect.name); Debug.Log("czas: " + Time.time); while (Time.time < startTime) { yield return(null); } timedEffect.ApplyEffectAction(target, value); while (Time.time <= endTime) { endTime = startTime + container.timeToEnd; yield return(null); } Debug.Log("end time: " + endTime + "| effect final duration: " + container.timeToEnd + ", name: " + timedEffect.name); timedEffect.EndEffect(target); }
public override void EndEffectAction(Creature target) { Debug.Log("end effect: " + this.name); TimedEffectContainer container = GetEffectContainer(target) as TimedEffectContainer; effectAction.EndEffect(target, container.ChangeinTargetValue); }
public override bool CheckForReduplication(Creature target) { TimedEffectContainer container = GetEffectContainer(target) as TimedEffectContainer; if (container != null) { container.ResolveReduplication(target, this); return(true); } return(false); }
private IEnumerator EffectRepeater(Creature target, TimedEffectContainer container, float value) { TimedEffect timedEffect = container.timedEffect; float startTime = Time.time + timedEffect.timeToStart; float endTime = Time.time + timedEffect.timeToStart + timedEffect.duration; while (Time.time < startTime) { yield return(null); } while (Time.time <= endTime) { endTime = startTime + container.timeToEnd; StartCoroutine(DoTimedEffect(target, container, value)); yield return(new WaitForSeconds(timedEffect.repeatTime)); } }
private void RemoveEffectAction(Creature target) { for (int i = 0; i < target.activeBasicEffects.Count; i++) { BasicEffectContainer container = target.activeBasicEffects [i]; if (container.basicEffect.effectAction == actionToRemove) { container.basicEffect.EndEffect(target); } } for (int j = 0; j < target.activeTimedEffects.Count; j++) { TimedEffectContainer container = target.activeTimedEffects [j]; if (container.timedEffect.effectAction == actionToRemove) { container.timedEffect.EndEffect(target); } } }
public void StartDoTimedEffect(Creature target, TimedEffectContainer container, float value) { StartCoroutine(DoTimedEffect(target, container, value)); }
public void StartEffectRepeater(Creature target, TimedEffectContainer container, float value) { StartCoroutine(EffectRepeater(target, container, value)); }
public override void LogChangeInTargetValue(Creature target, float value) { TimedEffectContainer container = GetEffectContainer(target) as TimedEffectContainer; container.ChangeinTargetValue = value; }