private void OnObjectiveProgressUpdated(QuestObjectiveState objectiveState)
 {
     _objectiveDescription.text = objectiveState.ObjectiveDescription;
     if (objectiveState.Status == QuestObjectiveStatus.Invalid)
     {
         Debug.LogError($"[{nameof(ObjectiveUI)}]: Invalid objective state!");
     }
     _incompleteImage.enabled = objectiveState.Status == QuestObjectiveStatus.Ongoing;
     _completedImage.enabled  = objectiveState.Status == QuestObjectiveStatus.Completed;
     _failedImage.enabled     = objectiveState.Status == QuestObjectiveStatus.Failed;
 }
    public void SetObjectiveInfo(QuestObjectiveState objectiveState)
    {
        if (_questObjectiveState != null)
        {
            CleanUpObjectiveState();
        }
        _questObjectiveState = objectiveState;
        _questObjectiveState.OnProgressUpdated += OnObjectiveProgressUpdated;

        // update visuals to reflect objective state
        _objectiveDescription.text = objectiveState.ObjectiveDescription;
        OnObjectiveProgressUpdated(objectiveState);
    }
Exemple #3
0
        private IEnumerator ObjectiveReset()
        {
            state    = QuestObjectiveState.Inactive;
            progress = 0;

            for (int i = 0; i < QuestCompletionActions.Count; i++)
            {
                QuestCompletionActions[i].Reverse();
            }

            yield return(StartCoroutine(ReversePreparations()));

            if (OnUpdate != null)
            {
                OnUpdate(this);
            }
        }
Exemple #4
0
 private void LoadObjectives()
 {
     for (int i = 0; i < _questData.Objectives.Count; i++)
     {
         QuestObjectiveData  objectiveData  = _questData.Objectives[i];
         QuestObjectiveState objectiveState = objectiveData.CreateState();
         if (objectiveState == null)
         {
             Debug.LogError($"[{QuestName}]: Failed to create quest objective state for objective data {objectiveData.name}!");
             return;
         }
         objectiveState.OnCompleted       += OnObjectiveCompleted;
         objectiveState.OnFailed          += OnObjectiveFailed;
         objectiveState.OnProgressUpdated += OnObjectiveProgressUpdated;
         _objectiveStates.Add(objectiveState);
     }
 }
Exemple #5
0
        private IEnumerator ObjectiveCompletion()
        {
            state = QuestObjectiveState.Completed;

            for (int i = 0; i < QuestCompletionActions.Count; i++)
            {
                QuestCompletionActions[i].Execute();
            }
            yield return(StartCoroutine(ReversePreparations()));

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

            if (OnComplete != null)
            {
                OnComplete(this);
            }
        }
Exemple #6
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);
            }
        }
 private void CleanUpObjectiveState()
 {
     _questObjectiveState.OnProgressUpdated -= OnObjectiveProgressUpdated;
     _questObjectiveState = null;
 }
Exemple #8
0
 private void OnObjectiveProgressUpdated(QuestObjectiveState objectiveState)
 {
     OnStateUpdated?.Invoke();
 }
Exemple #9
0
 private void OnObjectiveFailed(QuestObjectiveState objectiveState)
 {
     RemoveObjectiveState(objectiveState);
     FireOnFailed();
 }
Exemple #10
0
 private void OnObjectiveCompleted(QuestObjectiveState objectiveState)
 {
     RemoveObjectiveState(objectiveState);
     TryCompleteQuest();
 }
Exemple #11
0
 private void RemoveObjectiveState(QuestObjectiveState objectiveState)
 {
     objectiveState.OnCompleted       -= OnObjectiveCompleted;
     objectiveState.OnFailed          -= OnObjectiveFailed;
     objectiveState.OnProgressUpdated -= OnObjectiveProgressUpdated;
 }