/// <summary> /// Converts dialogue fragments, adding them a conversation. /// </summary> /// <param name='conversation'> /// Conversation. /// </param> /// <param name='dialogueNode'> /// Dialogue node. /// </param> private void ConvertDialogueFragments(Conversation conversation, ArticyData.Node dialogueNode) { entryID = 0; foreach (ArticyData.Node childNode in dialogueNode.nodes) { if (childNode.type == ArticyData.NodeType.DialogueFragment) { ConvertDialogueFragment(conversation, LookupDialogueFragment(childNode.id)); } else if (childNode.type == ArticyData.NodeType.Hub) { ConvertHub(conversation, LookupHub(childNode.id)); } else if (childNode.type == ArticyData.NodeType.Jump) { ConvertJump(conversation, LookupJump(childNode.id)); } else if (childNode.type == ArticyData.NodeType.Condition) { ConvertCondition(conversation, LookupCondition(childNode.id)); } else if (childNode.type == ArticyData.NodeType.Instruction) { ConvertInstruction(conversation, LookupInstruction(childNode.id)); } } }
/// <summary> /// Converts connections into a conversation's link tree. /// </summary> /// <param name='conversation'> /// Conversation. /// </param> /// <param name='dialogueNode'> /// Dialogue node. /// </param> private void ConvertConnections(Conversation conversation, ArticyData.Node dialogueNode) { foreach (ArticyData.Node childNode in dialogueNode.nodes) { if (childNode.type == ArticyData.NodeType.Connection) { ConvertConnection(conversation, LookupConnection(childNode.id)); } } }
/// <summary> /// Processes a node in the hierarchy. If it's a dialogue, convert it (and its child nodes) /// into a Dialogue System conversation. Otherwise keep processing the children. /// </summary> /// <param name='node'> /// Node to process. /// </param> private void ProcessNode(ArticyData.Node node) { foreach (ArticyData.Node childNode in node.nodes) { if (childNode.type == ArticyData.NodeType.Dialogue) { ConvertDialogue(childNode); } else { ProcessNode(childNode); } } }
/// <summary> /// Converts a dialogue hierarchy node into a conversation. /// </summary> /// <param name='dialogueNode'> /// Dialogue node. /// </param> private void ConvertDialogue(ArticyData.Node dialogueNode) { if (prefs.ConversionSettings.GetConversionSetting(dialogueNode.id).Include) { if (articyData.dialogues.ContainsKey(dialogueNode.id)) { Conversation conversation = CreateNewConversation(articyData.dialogues[dialogueNode.id]); if (conversation != null) { ConvertDialogueNodes(conversation, dialogueNode); } } else { Debug.LogWarning(string.Format("{0}: Can't find dialogue ID {1}", DialogueDebug.Prefix, dialogueNode.id)); } } }
/// <summary> /// Converts dialogue fragment and connection (hub, jump) nodes, and adds them to a /// Dialogue System conversation. First converts all dialogue fragments so the conversation /// has a master list of dialogue entries. Then converts all connections to hook up those /// entries. /// </summary> /// <param name='conversation'> /// Conversation. /// </param> /// <param name='dialogueNode'> /// Dialogue node. /// </param> private void ConvertDialogueNodes(Conversation conversation, ArticyData.Node dialogueNode) { ConvertDialogueFragments(conversation, dialogueNode); ConvertConnections(conversation, dialogueNode); }