Пример #1
0
        private IEnumerator ConditionChecker(Creature target, ConditionContainer container)
        {
            while (container.isActive)
            {
                CheckCondition(target, container);
                yield return(null);
            }

            yield break;
        }
Пример #2
0
 public void EndConditions(Creature target)
 {
     foreach (Condition condition in conditions)
     {
         ConditionContainer container = GetConditionContinerInTarget(target, condition);
         if (container != null)
         {
             container.isActive = false;
         }
     }
 }
Пример #3
0
 protected virtual bool CheckForReduplication(Creature target)
 {
     for (int i = 0; i < target.activeConditions.Count; i++)
     {
         ConditionContainer container = target.activeConditions [i];
         if (container.condition == this)
         {
             return(true);
         }
     }
     return(false);
 }
Пример #4
0
 public virtual void UnregisterCondition(Creature target)
 {
     for (int i = 0; i < target.activeConditions.Count; i++)
     {
         ConditionContainer container = target.activeConditions [i];
         if (container.condition == this)
         {
             target.activeConditions.Remove(container);
             break;
         }
     }
 }
Пример #5
0
 private void RemoveCondition(Creature target)
 {
     for (int i = 0; i < target.activeConditions.Count; i++)
     {
         ConditionContainer container = target.activeConditions [i];
         if (container.condition == conditionToRemove)
         {
             container.isActive = false;
             container.condition.UnregisterCondition(target);
         }
     }
 }
Пример #6
0
        private void CheckCondition(Creature target, ConditionContainer conditionContainer)
        {
            Condition condition          = conditionContainer.condition;
            bool      conditionFulfilled = condition.conditionAction.isConditionFulfilled(target);

            if (conditionFulfilled && condition.trueEffect != null)
            {
                condition.trueEffect.Perform(target);
                conditionContainer.isActive = false;
                condition.UnregisterCondition(target);
            }
            else if (!conditionFulfilled && condition.falseEffect != null)
            {
                condition.falseEffect.Perform(target);
                conditionContainer.isActive = false;
                condition.UnregisterCondition(target);
            }
        }
Пример #7
0
        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);
                }
            }
        }
Пример #8
0
 public void StartConditionChecker(Creature target, ConditionContainer conditionContainer)
 {
     StartCoroutine(ConditionChecker(target, conditionContainer));
 }