/* Trigger By: ConditionComplete * Triggers: QuestCompleted * Set quest to satsified if quest condition is true in as the condition tracker */ private void CheckQuestCompletion() { //Cycle through quest that are in progress and change their status to satsified var cloneQuestLog = m_QuestDictionary.ToDictionary(entry => entry.Key, entry => entry.Value); foreach (KeyValuePair <Quest, E_QuestStatus> questLog in cloneQuestLog) { Quest questKey = questLog.Key; E_QuestStatus questValue = questLog.Value; if (questValue == E_QuestStatus.InProgress) { bool thisBool = true; if (ConditionManager.Instance.ConditionTrackerDictionary.TryGetValue(questKey.QuestCompleteCondition, out thisBool)) { if (questKey.CompletedThrough == E_CompletedThrough.Itself) { EventManager.TriggerEvent("QuestCompleted"); } else { m_QuestDictionary[questKey] = E_QuestStatus.Satsified; } } else { Debug.LogError("No Quest has been found to be completed"); } } } }
public bool CheckQuestCompletion(Quest quest) { E_QuestStatus thisQuestStatus = E_QuestStatus.Satsified; if (m_QuestDictionary.TryGetValue(quest, out thisQuestStatus)) { return(true); } else { Debug.LogError("No Quest has been found to be satsified"); } return(false); }
//Check if condition is satsified public bool CheckCondition(Condition condition) { //If there is already a true condition in the condition tracker that matches then return true bool thisBool = true; if (m_ConditionTrackerDictionary.TryGetValue(condition, out thisBool)) { return(true); } else { //Check each catagories and see if those categories has been satsified int conditionPassed = 0; int conditionPassedNeed = condition.QuestDictionary.Count + condition.ItemDictionary.Count + condition.DialoguePerformedList.Count; if (condition.NeedQuest) { //Cross reference Quest Log in Quest Manager with condition foreach (KeyValuePair <Quest, E_QuestStatus> keyValue in condition.QuestDictionary) { Quest questRequirement = keyValue.Key; E_QuestStatus questStatusRequirement = keyValue.Value; QuestE_QuestStatusDictionary questList = QuestManager.Instance.QuestDictionary; E_QuestStatus actual; E_QuestStatus stored; switch (questStatusRequirement) { case E_QuestStatus.Completed: actual = E_QuestStatus.Completed; if (questList.TryGetValue(questRequirement, out stored) && stored == actual) { conditionPassed++; } break; case E_QuestStatus.Satsified: actual = E_QuestStatus.Satsified; if (questList.TryGetValue(questRequirement, out stored) && stored == actual) { conditionPassed++; } break; case E_QuestStatus.InProgress: actual = E_QuestStatus.InProgress; if (questList.TryGetValue(questRequirement, out stored) && stored == actual) { conditionPassed++; } break; case E_QuestStatus.NotBeenAdded: actual = E_QuestStatus.NotBeenAdded; if (!questList.TryGetValue(questRequirement, out stored) && stored == actual) { conditionPassed++; } break; } } } if (condition.NeedItem) { throw new NotImplementedException(); } if (condition.NeedDialoguePerformed) { throw new NotImplementedException(); } if (conditionPassed == conditionPassedNeed) { //If existing condition that matches with the Tracker exist and is false, then set to true bool thisBool2 = false; if (m_ConditionTrackerDictionary.TryGetValue(condition, out thisBool2)) { m_ConditionTrackerDictionary[condition] = true; } return(true); } else { return(false); } } }