private void ShowQuests(QuestState questStateMask) { currentQuestStateMask = questStateMask; NoQuestsMessage = GetNoQuestsMessage(questStateMask); List <QuestInfo> questList = new List <QuestInfo>(); string[] titles = QuestLog.GetAllQuests(questStateMask); foreach (var title in titles) { FormattedText description = FormattedText.Parse(QuestLog.GetQuestDescription(title), DialogueManager.MasterDatabase.emphasisSettings); FormattedText localizedTitle = FormattedText.Parse(QuestLog.GetQuestTitle(title), DialogueManager.MasterDatabase.emphasisSettings); FormattedText heading = (questHeadingSource == QuestHeadingSource.Description) ? description : localizedTitle; bool abandonable = QuestLog.IsQuestAbandonable(title) && IsShowingActiveQuests; bool trackable = QuestLog.IsQuestTrackingAvailable(title) && IsShowingActiveQuests; bool track = QuestLog.IsQuestTrackingEnabled(title); int entryCount = QuestLog.GetQuestEntryCount(title); FormattedText[] entries = new FormattedText[entryCount]; QuestState[] entryStates = new QuestState[entryCount]; for (int i = 0; i < entryCount; i++) { entries[i] = FormattedText.Parse(QuestLog.GetQuestEntry(title, i + 1), DialogueManager.MasterDatabase.emphasisSettings); entryStates[i] = QuestLog.GetQuestEntryState(title, i + 1); } questList.Add(new QuestInfo(title, heading, description, entries, entryStates, trackable, track, abandonable)); } Quests = questList.ToArray(); OnQuestListUpdated(); }
protected virtual QuestInfo GetQuestInfo(string group, string title) { FormattedText description = FormattedText.Parse(QuestLog.GetQuestDescription(title), DialogueManager.masterDatabase.emphasisSettings); FormattedText localizedTitle = FormattedText.Parse(QuestLog.GetQuestTitle(title), DialogueManager.masterDatabase.emphasisSettings); FormattedText heading = (questHeadingSource == QuestHeadingSource.Description) ? description : localizedTitle; bool abandonable = QuestLog.IsQuestAbandonable(title) && isShowingActiveQuests; bool trackable = QuestLog.IsQuestTrackingAvailable(title) && isShowingActiveQuests; bool track = QuestLog.IsQuestTrackingEnabled(title); int entryCount = QuestLog.GetQuestEntryCount(title); FormattedText[] entries = new FormattedText[entryCount]; QuestState[] entryStates = new QuestState[entryCount]; for (int i = 0; i < entryCount; i++) { entries[i] = FormattedText.Parse(QuestLog.GetQuestEntry(title, i + 1), DialogueManager.masterDatabase.emphasisSettings); entryStates[i] = QuestLog.GetQuestEntryState(title, i + 1); } return(new QuestInfo(group, title, heading, description, entries, entryStates, trackable, track, abandonable)); }
protected virtual void RepaintSelectedQuest(QuestInfo quest) { detailsPanelContentManager.Clear(); if (quest != null) { // Title: var titleInstance = detailsPanelContentManager.Instantiate <StandardUITextTemplate>(questHeadingTextTemplate); titleInstance.Assign(quest.Heading.text); detailsPanelContentManager.Add(titleInstance, questDetailsContentContainer); // Description: var descriptionInstance = detailsPanelContentManager.Instantiate <StandardUITextTemplate>(questDescriptionTextTemplate); descriptionInstance.Assign(quest.Description.text); detailsPanelContentManager.Add(descriptionInstance, questDetailsContentContainer); // Entries: for (int i = 0; i < quest.Entries.Length; i++) { var entryTemplate = GetEntryTemplate(quest.EntryStates[i]); if (entryTemplate != null) { var entryInstance = detailsPanelContentManager.Instantiate <StandardUITextTemplate>(entryTemplate); entryInstance.Assign(quest.Entries[i].text); detailsPanelContentManager.Add(entryInstance, questDetailsContentContainer); } } // Abandon button: if (currentQuestStateMask == QuestState.Active && QuestLog.IsQuestAbandonable(quest.Title)) { var abandonButtonInstance = detailsPanelContentManager.Instantiate <StandardUIButtonTemplate>(abandonButtonTemplate); detailsPanelContentManager.Add(abandonButtonInstance, questDetailsContentContainer); abandonButtonInstance.button.onClick.AddListener(ClickAbandonQuestButton); } } }