//Devuelve un diccionario con el id de las opciones y texto de un nodo especifico Dictionary <int, string> GetDialogueOptions(DialogueMapSerializedObject dialogueNode) { var options = new Dictionary <int, string>(); //Por cada nodo foreach (var node in dialog.nodes) { //Si el nodo es de tipo "Option" if (node.windowTitle == "Option") { //Por cada parentId foreach (var parentId in node.parentIds) { /* Si hay coincidencia entre el parentId y el id del dialogueNode * Significa que esa opción tiene como padre al nodo de dialogo */ if (parentId == dialogueNode.id) { options.Add(node.id, node.data); } } } } return(options); }
//Convierte de DialogueMapSerializedObject a DialogueObject, que es el objeto que se le entrega al usuario final DialogueObject GetDialogueObject(DialogueMapSerializedObject dialogueNode) { /* Guardo el id y el dialogo * Las opciones se las pido a GetDialogueOptions que me entrega una Diccionario |Key: id del option| |Value: el texto del option| */ var dialogueObj = new DialogueObject { id = dialogueNode.id, dialogue = dialogueNode.data, options = GetDialogueOptions(dialogueNode) }; /* Una vez que tengo el diccionario de opciones creado pido el linkeo entre una opción y el siguiente nodo a GetOptionsLinks() * Que me devuelve |Key: id del option| |Value: id del nodo al que linkea| */ dialogueObj.optionsLinks = GetOptionsLinks(dialogueObj.options); return(dialogueObj); }