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]); }
/// <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]); }
/// <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()); } }
/// <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); }
/// <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); }
/// <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); }
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); } }
/// <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); }
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); }
/// <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); }