private static List <bool> GetQuestContentFoldoutList(QuestContentCategory category)
        {
            switch (category)
            {
            case QuestContentCategory.Dialogue:
                return(data.dialogueContentFoldouts);

            case QuestContentCategory.Journal:
                return(data.journalContentFoldouts);

            case QuestContentCategory.HUD:
                return(data.hudContentFoldouts);

            case QuestContentCategory.Alert:
                return(data.alertContentFoldouts);

            case QuestContentCategory.Offer:
                return(data.offerContentFoldouts);

            case QuestContentCategory.OfferConditionsUnmet:
                return(data.offerConditionsUnmetContentFoldouts);

            default:
                return(null);
            }
        }
        public static bool GetQuestContentFoldout(QuestContentCategory category, QuestState questState)
        {
            var list = GetQuestContentFoldoutList(category);

            VerifyListSize(list, (int)questState, false);
            return(list[(int)questState]);
        }
Beispiel #3
0
        /// <summary>
        /// Gets the UI content for a specific category.
        /// </summary>
        /// <param name="category">The content category (Dialogue, Journal, etc.).</param>
        /// <param name="speaker">The speaker whose content to get, or blank for the quest giver.</param>
        /// <returns>A list of content items based on the current state of the quest and all of its nodes.</returns>
        public List <QuestContent> GetContentList(QuestContentCategory category, QuestParticipantTextInfo speaker = null)
        {
            var contentList = new List <QuestContent>();

            currentSpeaker = IsSpeakerQuestGiver(speaker) ? null : speaker;
            var stateInfo = GetStateInfo(GetState());

            if (stateInfo != null)
            {
                contentList.AddRange(stateInfo.GetContentList(category));
            }
            if (nodeList != null)
            {
                for (int i = 0; i < nodeList.Count; i++)
                {
                    var node            = nodeList[i];
                    var nodeContentList = (node != null) ? node.GetContentList(category) : null;
                    if (nodeContentList != null)
                    {
                        contentList.AddRange(nodeContentList);
                    }
                }
            }
            return(contentList);
        }
        private QuestContentProxy[] GetNewArrayForCategory(QuestStateInfo stateInfo, QuestContentCategory category)
        {
            var index = (int)category;

            return((0 <= index && index < stateInfo.categorizedContentList.Count)
                ? QuestContentProxy.NewArray(stateInfo.categorizedContentList[index].contentList)
                : new QuestContentProxy[0]);
        }
Beispiel #5
0
 /// <summary>
 /// Adds quest heading text to a specific UI category's active state (and possibly
 /// also its successful state).
 /// </summary>
 /// <param name="questBuilder">QuestBuilder.</param>
 /// <param name="category">Category for which to add text.</param>
 /// <param name="addToSuccessfulList">If true, add content to the successful state.</param>
 protected virtual void AddQuestHeading(QuestBuilder questBuilder, QuestContentCategory category, bool addToSuccessfulList)
 {
     // Add to Active state and, if not HUD, to Successful state.
     questBuilder.AddContents(questBuilder.quest.stateInfoList[(int)QuestState.Active].categorizedContentList[(int)category], questBuilder.CreateTitleContent());
     if (addToSuccessfulList && category != QuestContentCategory.HUD)
     {
         questBuilder.AddContents(questBuilder.quest.stateInfoList[(int)QuestState.Successful].categorizedContentList[(int)category], questBuilder.CreateTitleContent());
     }
 }
Beispiel #6
0
        /// <summary>
        /// Gets the UI content for a specific category.
        /// </summary>
        /// <param name="category">The content category (Dialogue, Journal, etc.).</param>
        /// <returns>A list of UI content items based on the current state of the quest and all of its nodes.</returns>
        public List <QuestContent> GetContentList(QuestContentCategory category)
        {
            if (!IsContentValidForCurrentSpeaker(category))
            {
                return(null);
            }
            var stateInfo = QuestStateInfo.GetStateInfo(stateInfoList, m_state);

            return((stateInfo != null) ? stateInfo.GetContentList(category) : null);
        }
Beispiel #7
0
        /// <summary>
        /// Gets the UI content for a specified category.
        /// </summary>
        /// <param name="category">The content category for which to get content.</param>
        /// <returns>The UI content.</returns>
        public List <QuestContent> GetContentList(QuestContentCategory category)
        {
            var i = (int)category;

            if (categorizedContentList == null || i >= categorizedContentList.Count)
            {
                return(null);
            }
            return(m_categorizedContentList[i].contentList);
        }
Beispiel #8
0
        /// <summary>
        /// Checks if there is any UI content for a specific category.
        /// </summary>
        /// <param name="category">The content category (Dialogue, Journal, etc.).</param>
        /// <returns>True if GetContentList would return anything.</returns>
        public bool HasContent(QuestContentCategory category)
        {
            if (!IsContentValidForCurrentSpeaker(category))
            {
                return(false);
            }
            var stateInfo = QuestStateInfo.GetStateInfo(stateInfoList, m_state);

            if (stateInfo == null)
            {
                return(false);
            }
            var contentList = stateInfo.GetContentList(category);

            return(contentList != null && contentList.Count > 0);
        }
Beispiel #9
0
        private bool IsContentValidForCurrentSpeaker(QuestContentCategory category)
        {
            // Non-dialogue content is always valid:
            if (category != QuestContentCategory.Dialogue)
            {
                return(true);
            }
            if (quest == null)
            {
                return(true);
            }

            // Are quest's current speaker and this node's speaker both the quest giver?
            if (quest.currentSpeaker == null)
            {
                return(StringField.IsNullOrEmpty(speaker) || StringField.Equals(speaker, quest.questGiverID));
            }

            // Otherwise is quest's current speaker same as this node's speaker?
            return(StringField.Equals(speaker, quest.currentSpeaker.id));
        }
        private QuestContentProxy[] GetContentListProxy(QuestContentCategory category)
        {
            switch (category)
            {
            case QuestContentCategory.Dialogue:
                return(dlg);

            case QuestContentCategory.Journal:
                return(jrl);

            case QuestContentCategory.HUD:
                return(hud);

            default:
                if (Debug.isDebugBuild)
                {
                    Debug.LogWarning("Quest Machine: Unsupported content category '" + category + "' when deserializing quest. Please contact the developer.");
                }
                return(null);
            }
        }
Beispiel #11
0
        /// <summary>
        /// Checks if there is any UI content for a specific category.
        /// </summary>
        /// <param name="category">The content category (Dialogue, Journal, etc.).</param>
        /// <param name="speaker">The speaker whose content to check, or blank for the quest giver.</param>
        /// <returns>True if GetContentList would return anything.</returns>
        public bool HasContent(QuestContentCategory category, QuestParticipantTextInfo speaker = null)
        {
            currentSpeaker = IsSpeakerQuestGiver(speaker) ? null : speaker;
            var stateInfo = GetStateInfo(GetState());

            if (stateInfo.HasContent(category))
            {
                return(true);
            }
            if (nodeList == null)
            {
                return(false);
            }
            for (int i = 0; i < nodeList.Count; i++)
            {
                var node = nodeList[i];
                if (node != null && node.HasContent(category))
                {
                    return(true);
                }
            }
            return(false);
        }
Beispiel #12
0
 public QuestContentListInspectorGUI(GUIContent guiContent, QuestContentCategory category)
 {
     m_guiContent = guiContent;
 }
        public static void ToggleQuestContentFoldout(QuestContentCategory category, QuestState questState)
        {
            var list = GetQuestContentFoldoutList(category);

            list[(int)questState] = !GetQuestContentFoldout(category, questState);
        }
Beispiel #14
0
        /// <summary>
        /// Checks if the quest state has any UI content for a specified category.
        /// </summary>
        /// <param name="category">The content category to check.</param>
        /// <returns>true if there is content.</returns>
        public bool HasContent(QuestContentCategory category)
        {
            var contentList = GetContentList(category);

            return(contentList != null && contentList.Count > 0);
        }