public QuestNode AddNode(QuestNode parent, StringField id, StringField internalName, QuestNodeType nodeType, bool isOptional = false) { if (parent == null) { if (Debug.isDebugBuild) { Debug.LogWarning("Quest Machine: QuestBuilder.AddNode must be provided a valid parent node."); } return(null); } if (parent.childIndexList == null) { return(null); } parent.childIndexList.Add(quest.nodeList.Count); var node = new QuestNode(id, internalName, nodeType, isOptional); node.canvasRect = new Rect(parent.canvasRect.x, parent.canvasRect.y + 20 + QuestNode.DefaultNodeHeight, QuestNode.DefaultNodeWidth, QuestNode.DefaultNodeHeight); quest.nodeList.Add(node); QuestStateInfo.ValidateStateInfoListCount(node.stateInfoList); QuestStateInfo.ValidateCategorizedContentListCount(node.stateInfoList[(int)QuestNodeState.Active].categorizedContentList); QuestStateInfo.ValidateCategorizedContentListCount(node.stateInfoList[(int)QuestNodeState.Inactive].categorizedContentList); QuestStateInfo.ValidateCategorizedContentListCount(node.stateInfoList[(int)QuestNodeState.True].categorizedContentList); return(node); }
private void ValidateListSizes() { var numStates = Enum.GetNames(typeof(QuestState)).Length; QuestStateInfo.ValidateStateInfoListCount(quest.stateInfoList, numStates); for (int i = 0; i < numStates; i++) { QuestStateInfo.ValidateCategorizedContentListCount(quest.stateInfoList[i].categorizedContentList); } }
/// <summary> /// Adds a final "return to quest giver" step. /// </summary> /// <returns>The return node.</returns> protected virtual QuestNode AddReturnNode(QuestBuilder questBuilder, QuestNode previousNode, QuestEntity entity, string mainTargetEntity, string mainTargetDescriptor, string domainName, PlanStep goal, int rewardsContentIndex = 9999) // Default to 9999 to not break any customer code using old signature. { var questGiver = entity.GetComponent <QuestGiver>(); var giverID = (questGiver != null) ? questGiver.id : ((entity != null) ? entity.displayName : null); var returnNode = questBuilder.AddDiscussQuestNode(previousNode, QuestMessageParticipant.QuestGiver, giverID); returnNode.id = new StringField("Return"); previousNode = returnNode; QuestStateInfo.ValidateStateInfoListCount(returnNode.stateInfoList); var hudText = "{Return to} " + questGiver.displayName; // Text when active: AddReturnNodeText(questBuilder, returnNode, questGiver, mainTargetEntity, mainTargetDescriptor, domainName, goal, hudText); // Add rewards content: var dialogueList = returnNode.stateInfoList[(int)QuestNodeState.Active].categorizedContentList[(int)QuestContentCategory.Dialogue]; var offerContentList = questBuilder.quest.offerContentList; for (int i = rewardsContentIndex; i < offerContentList.Count; i++) { var original = offerContentList[i]; var copy = QuestContent.Instantiate(original) as QuestContent; original.CloneSubassetsInto(copy); dialogueList.contentList.Add(copy); } var actionList = returnNode.GetStateInfo(QuestNodeState.Active).actionList; // Alert when active: AddReturnNodeAlert(questBuilder, returnNode, actionList, hudText); // Indicators: AddReturnNodeIndicators(questBuilder, returnNode, actionList, entity); return(previousNode); }