示例#1
0
        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();
        }
示例#2
0
        private void AddQuestTrack(string quest)
        {
            if (container == null || questTrackTemplate == null)
            {
                return;
            }

            var questDescription = (questDescriptionSource == QuestDescriptionSource.Title)
                ? QuestLog.GetQuestTitle(quest)
                    : QuestLog.GetQuestDescription(quest);
            var heading = FormattedText.Parse(questDescription, DialogueManager.MasterDatabase.emphasisSettings).text;

            GameObject go;

            if (unusedInstances.Count > 0)
            {
                // Try to use an unused instance:
                go = unusedInstances[0].gameObject;
                unusedInstances.RemoveAt(0);
            }
            else
            {
                // Otherwise instantiate one:
                go = Instantiate(questTrackTemplate.gameObject) as GameObject;
                if (go == null)
                {
                    Debug.LogError(string.Format("{0}: {1} couldn't instantiate quest track template", new object[] { DialogueDebug.Prefix, name }));
                    return;
                }
            }

            go.name = heading;
            go.transform.SetParent(container.transform, false);
            go.SetActive(true);
            var questTrack = go.GetComponent <UnityUIQuestTrackTemplate>();

            instantiatedItems.Add(questTrack);
            if (questTrack != null)
            {
                questTrack.Initialize();
                var questState = QuestLog.GetQuestState(quest);
                questTrack.SetDescription(heading, questState);
                int entryCount = QuestLog.GetQuestEntryCount(quest);
                for (int i = 1; i <= entryCount; i++)
                {
                    var entryState = QuestLog.GetQuestEntryState(quest, i);
                    var entryText  = FormattedText.Parse(GetQuestEntryText(quest, i, entryState), DialogueManager.MasterDatabase.emphasisSettings).text;
                    if (!string.IsNullOrEmpty(entryText))
                    {
                        questTrack.AddEntryDescription(entryText, entryState);
                    }
                }

                questTrack.transform.SetSiblingIndex(siblingIndexCounter++);
            }
        }
示例#3
0
        private string GetQuestEntryDescription(string quest)
        {
            StringBuilder sb         = new StringBuilder();
            int           entryCount = QuestLog.GetQuestEntryCount(quest);

            for (int i = 1; i <= entryCount; i++)
            {
                var entryText = GetQuestEntryText(quest, i, QuestLog.GetQuestEntryState(quest, i));
                entryText = FormattedText.Parse(entryText, DialogueManager.MasterDatabase.emphasisSettings).text;
                sb.Append(entryText);
                if (i < entryCount)
                {
                    sb.Append("\n");
                }
            }
            return(sb.ToString());
        }
        private void AddQuestEntries(string quest)
        {
            int entryCount = QuestLog.GetQuestEntryCount(quest);

            for (int i = 1; i <= entryCount; i++)
            {
                QuestState entryState = QuestLog.GetQuestEntryState(quest, i);
                if (entryState != QuestState.Unassigned)
                {
                    QuestTrackerLine line = new QuestTrackerLine();
                    line.text         = FormattedText.Parse(QuestLog.GetQuestEntry(quest, i), DialogueManager.MasterDatabase.emphasisSettings).text;
                    line.guiStyleName = GetEntryStyleName(entryState);
                    line.guiStyle     = null;
                    lines.Add(line);
                }
            }
        }
        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));
        }
示例#6
0
        /// <summary>
        /// Update the current quest state indicator based on the specified quest state indicator
        /// levels and quest entry state indicator levels.
        /// </summary>
        public void UpdateIndicator()
        {
            // Check quest state:
            var questState = QuestLog.GetQuestState(questName);

            for (int i = 0; i < questStateIndicatorLevels.Length; i++)
            {
                var questStateIndicatorLevel = questStateIndicatorLevels[i];
                if (questState == questStateIndicatorLevel.questState && questStateIndicatorLevel.condition.IsTrue(null))
                {
                    if (DialogueDebug.logInfo)
                    {
                        Debug.Log("Dialogue System: " + name + ": Quest '" + questName + "' changed to state " + questState + ".", this);
                    }
                    if (questStateIndicator != null)
                    {
                        questStateIndicator.SetIndicatorLevel(this, questStateIndicatorLevel.indicatorLevel);
                    }
                    questStateIndicatorLevel.onEnterState.Invoke();
                }
            }

            // Check quest entry states:
            for (int i = 0; i < questEntryStateIndicatorLevels.Length; i++)
            {
                var questEntryStateIndicatorLevel = questEntryStateIndicatorLevels[i];
                var questEntryState = QuestLog.GetQuestEntryState(questName, questEntryStateIndicatorLevel.entryNumber);
                if (questEntryState == questEntryStateIndicatorLevel.questState && questEntryStateIndicatorLevel.condition.IsTrue(null))
                {
                    if (DialogueDebug.logInfo)
                    {
                        Debug.Log("Dialogue System: " + name + ": Quest '" + questName + "' entry " + questEntryStateIndicatorLevel.entryNumber + " changed to state " + questEntryState + ".", this);
                    }
                    if (questStateIndicator != null)
                    {
                        questStateIndicator.SetIndicatorLevel(this, questEntryStateIndicatorLevel.indicatorLevel);
                    }
                    questEntryStateIndicatorLevel.onEnterState.Invoke();
                }
            }
        }
示例#7
0
        private void InstantiateQuestTrack(string quest)
        {
            if (container == null || questTrackTemplate == null)
            {
                return;
            }
            var go = Instantiate(questTrackTemplate.gameObject) as GameObject;

            if (go == null)
            {
                Debug.LogError(string.Format("{0}: {1} couldn't instantiate quest track template", new object[] { DialogueDebug.Prefix, name }));
                return;
            }
            instantiatedItems.Add(go);

            var questDescription = (questDescriptionSource == QuestDescriptionSource.Title)
                                ? QuestLog.GetQuestTitle(quest)
                                        : QuestLog.GetQuestDescription(quest);
            var heading = FormattedText.Parse(questDescription, DialogueManager.MasterDatabase.emphasisSettings).text;

            go.name = heading;
            go.transform.SetParent(container.transform, false);
            go.SetActive(true);
            var questTrack = go.GetComponent <UnityUIQuestTrackTemplate>();

            if (questTrack != null)
            {
                questTrack.Initialize();
                var questState = QuestLog.GetQuestState(quest);
                questTrack.SetDescription(heading, questState);
                int entryCount = QuestLog.GetQuestEntryCount(quest);
                for (int i = 1; i <= entryCount; i++)
                {
                    var entryState = QuestLog.GetQuestEntryState(quest, i);
                    var entryText  = FormattedText.Parse(GetQuestEntryText(quest, i, entryState), DialogueManager.MasterDatabase.emphasisSettings).text;
                    questTrack.AddEntryDescription(entryText, entryState);
                }
            }
        }
示例#8
0
        protected virtual void SetupQuestTrackInstance(StandardUIQuestTrackTemplate questTrack, string quest, string heading)
        {
            if (questTrack == null)
            {
                return;
            }
            questTrack.Initialize();
            var questState = QuestLog.GetQuestState(quest);

            questTrack.SetDescription(heading, questState);
            int entryCount = QuestLog.GetQuestEntryCount(quest);

            for (int i = 1; i <= entryCount; i++)
            {
                var entryState = QuestLog.GetQuestEntryState(quest, i);
                var entryText  = FormattedText.Parse(GetQuestEntryText(quest, i, entryState), DialogueManager.masterDatabase.emphasisSettings).text;
                if (!string.IsNullOrEmpty(entryText))
                {
                    questTrack.AddEntryDescription(entryText, entryState);
                }
            }
        }
示例#9
0
        private void AddQuestEntries(string quest)
        {
            int entryCount = QuestLog.GetQuestEntryCount(quest);

            for (int i = 1; i <= entryCount; i++)
            {
                QuestState entryState = QuestLog.GetQuestEntryState(quest, i);
                if (entryState == QuestState.Unassigned)
                {
                    continue;
                }
                if ((entryState == QuestState.Success || entryState == QuestState.Failure) && !showCompletedEntryText)
                {
                    continue;
                }
                QuestTrackerLine line = new QuestTrackerLine();
                var entryText         = GetQuestEntryText(quest, i, entryState);
                line.text         = FormattedText.Parse(entryText, DialogueManager.MasterDatabase.emphasisSettings).text;
                line.guiStyleName = GetEntryStyleName(entryState);
                line.guiStyle     = null;
                lines.Add(line);
            }
        }