Ejemplo n.º 1
0
        private IEnumerator ReversePreparations()
        {
            for (int i = QuestPreparations.Count - 1; i >= 0; i--)
            {
                QuestObjectivePreparer p = QuestPreparations[i];

                bool prepReversed = false;
                if (p != null)
                {
                    QuestPreparationEvent prepDecrement = () => prepReversed = true;
                    p.OnPreparationReversed += prepDecrement;
                    p.ReversePreparations();
                    yield return(new WaitUntil(() => prepReversed));

                    p.OnPreparationDone -= prepDecrement;
                }
            }

            QuestObject.OnCollect -= QuestObjectUpdate;

            if (OnReset != null)
            {
                OnReset(this);
            }
        }
Ejemplo n.º 2
0
        private IEnumerator PrepareObjective()
        {
            state = QuestObjectiveState.InProgress;

            if (PrerequisiteObjectives.Count > 0)
            {
                //Subscribe to prerequisite completion
                for (int i = 0; i < PrerequisiteObjectives.Count; i++)
                {
                    QuestObjective prereq = PrerequisiteObjectives[i];
                    yield return(new WaitUntil(() => prereq.state == QuestObjectiveState.Completed));
                    //prereq.OnComplete += prereqIncrement;
                }
            }

            for (int i = 0; i < QuestPreparations.Count; i++)
            {
                QuestObjectivePreparer p = QuestPreparations[i];

                bool prepFinished = false;

                if (p != null)
                {
                    QuestPreparationEvent prepIncrement = () => prepFinished = true;
                    p.OnPreparationDone += prepIncrement;
                    p.PrepareObjective();
                    yield return(new WaitUntil(() => prepFinished));

                    p.OnPreparationDone -= prepIncrement;
                }
            }

            QuestObject.OnCollect += QuestObjectUpdate;

            if (OnObjectiveReady != null)
            {
                OnObjectiveReady(this);
            }
        }