private NodeConnection DeserializeConnection(string s, ref List <NodeConnection> connections, ref Dictionary <int, Node> nodeIdReverseDict) { string[] splitData = s.Split('|'); if (splitData.Length != 4) { return(null); } int fromID = int.Parse(splitData[0]); int toID = int.Parse(splitData[2]); Node fromNode = nodeIdReverseDict[fromID]; Node toNode = nodeIdReverseDict[toID]; NodeItem fromItem = null, toItem = null; foreach (NodeItem item in fromNode.Items) { if (item.Tag != null && item.Tag.ToString().Equals(splitData[1])) { fromItem = item; } } foreach (NodeItem item in toNode.Items) { if (item.Tag.ToString().Equals(splitData[3])) { toItem = item; } } NodeConnector fromConnector = new NodeOutputConnector(fromItem, true); NodeConnector toConnector = new NodeInputConnector(toItem, true); NodeConnection NC = new NodeConnection() { From = fromConnector, To = toConnector }; connections.Add(NC); return(NC); }
public void InvalidateConnectors() { NodeInputConnector.Invalidate(); NodeOutputConnector.Invalidate(); }
private String getConvoNodeScript(String convName, Node node) { String script = ""; List<NodeItem> items = (List<NodeItem>)node.Items; NodeTextBoxItem nameItem = (NodeTextBoxItem)items[0]; script += "\tnew ScriptObject(" + convName + "_" + nameItem.Text + ") {" + Environment.NewLine; script += "\t\tclass = \"ConversationNode\";" + Environment.NewLine; script += "\t\tcanSave = \"1\";" + Environment.NewLine; script += "\t\tcanSaveDynamicFields = \"1\";" + Environment.NewLine; int outNodeCount = items.Count - int.Parse(m_settings.Attributes["[Default]"]["CONVOOUTNODESTART"]); int start = int.Parse(m_settings.Attributes["[Default]"]["CONVOOUTNODESTART"]); NodeTextBoxItem nodeText = (NodeTextBoxItem)items[1]; script += "\t\t\tdisplayText = \"" + conditionText(nodeText.Text) + "\";" + Environment.NewLine; script += "\t\t\tnumOutLinks = " + outNodeCount + ";" + Environment.NewLine; String target = ""; List<String> foundNodes = new List<String>(); for (int i = start; i < items.Count; i++) { NodeCompositeItem textItem = (NodeCompositeItem)items[i]; String Text = ""; String Method = ""; foreach(ItemTextBoxPart part in textItem.Parts) { if (part.Name == "ConvText") Text = part.Text; if (part.Name == "ConvMethod") Method = part.Text; } NodeOutputConnector conn = (NodeOutputConnector)textItem.Output; foreach (NodeConnection con in conn.Connectors) { bool found = false; if (con.To.Node == textItem.Node) continue; foreach (NodeConnection targetCon in con.To.Node.Connections) { if (targetCon.From.Item != textItem) continue; foreach (NodeItem item in con.To.Node.Items) { if (item.Name == "NodeName" && item.GetType().ToString() == "Graph.Items.NodeTextBoxItem") { NodeTextBoxItem targetItem = (NodeTextBoxItem)item; if (foundNodes.Contains(targetItem.Text)) continue; target = targetItem.Text; foundNodes.Add(target); found = true; } if (item.Name == "NodeName" && item.GetType().ToString() == "Graph.Items.NodeLabelItem") { NodeLabelItem targetItem = (NodeLabelItem)item; if (foundNodes.Contains(targetItem.Text)) continue; target = targetItem.Text; foundNodes.Add(target); found = true; } if (found) continue; } } } script += "\t\t\tbutton" + (i - start).ToString() + "next = " + convName + "_" + target + ";" + Environment.NewLine; script += "\t\t\tbutton" + (i - start).ToString() + " = \"" + conditionText(Text) + "\";" + Environment.NewLine; if (Method != "Enter script method") script += "\t\t\tbutton" + (i - start).ToString() + "cmd = \"" + conditionText(Method) + ";\";" + Environment.NewLine; } script += "\t};" + Environment.NewLine; m_log.WriteLine("Generated Conversation Node " + nameItem.Text); return script; }