private IEnumerator ApplyConditionEffect(ICharacterClass characterClass, IConditionConstant condition, Action <ICharacterClass, ICondition> conditionActionStart, Action <ICharacterClass, ICondition> conditionActionEnd) { characterClass.ApplyConditionEffect(condition); conditionActionStart.Invoke(characterClass, condition); yield return(new WaitForSeconds(condition.DurationTime)); conditionActionEnd.Invoke(characterClass, condition); characterClass.RemoveConditionEffect(condition); }
private IEnumerator ApplyConditionEffectOverTime(ICharacterClass characterClass, IConditionEffectOverTime condition, Action <ICharacterClass, ICondition> conditionAction) { characterClass.ApplyConditionEffect(condition); yield return(new WaitForSeconds(condition.InitializationTime)); for (float i = default(float); i < condition.ConditionIterations; i++) { conditionAction.Invoke(characterClass, condition); yield return(new WaitForSeconds(condition.ConditionIntervalTime)); } characterClass.RemoveConditionEffect(condition); }