private void CreateConnectLine(EditorPersuadeData chatData) { for (int i = 0; i < chatData.m_editorItems.Count; i++) { EditorPersuadeItemData chatItemData = chatData.m_editorItems[i]; for (int j = 0; j < chatItemData.m_nextChatItemID.Count; j++) { for (int k = 0; k < m_nodes.Count; k++) { if (m_nodes[k].Id == chatItemData.m_nextChatItemID[j].m_nextItemID) { Inlet inlet = (Inlet)m_nodes[k].Lets[0]; EditorVector2[] editorVec = chatItemData.m_nextChatItemID[j].m_connectPoint; List <Vector2> linePoints = new List <Vector2>(); for (int m = editorVec.Length - 1; m >= 0; m--) { linePoints.Add(new Vector2(editorVec[m].x, editorVec[m].y)); } Outlet outlet = (Outlet)m_nodes[i].Lets[1]; if ((m_nodes[k] as PersuadeBaseNode).m_type == PersuadeType.正向反馈) { outlet = (Outlet)m_nodes[i].Lets[2]; } Connection connection = new Connection(inlet, outlet, linePoints); inlet.Connections.Add(connection); outlet.Connections.Add(connection); break; } } } } }
private EditorPersuadeItemData GetEditorItemDataByBaseNode(BaseNode node) { EditorPersuadeItemData itemData = new EditorPersuadeItemData(); itemData.itemId = node.Id; itemData.m_Position = new EditorVector2(node.Position); for (int i = 0; i < node.Lets.Count; i++) { if (node.Lets[i].Type == LetTypes.OUTLET) { for (int j = 0; j < node.Lets[i].Connections.Count; j++) { Connection con = node.Lets[i].Connections[j]; EditorConnectionData connectPoint = new EditorConnectionData(); connectPoint.m_connectPoint = new EditorVector2[con.Points.Length]; for (int k = 0; k < con.Points.Length; k++) { connectPoint.m_connectPoint[k] = new EditorVector2(con.Points[k]); } connectPoint.m_nextItemID = con.Inlet.Owner.Id; itemData.m_nextChatItemID.Add(connectPoint); } } } if (node is PersuadeBaseNode) { PersuadeBaseNode persuadeNode = node as PersuadeBaseNode; itemData.talkType = (int)persuadeNode.m_talkType; itemData.persuadeType = (int)persuadeNode.m_type; itemData.content = persuadeNode.content; itemData.evidenceID = persuadeNode.evidenceID; //itemData.feedbackID = persuadeNode.feedbackID; } return(itemData); }
public void CreateChatNodeByEditorData(EditorPersuadeData chatData) { OnDestroy(); Clear(); m_describeLab = chatData.m_describe; npcId = chatData.npcId; persuadeName = chatData.name; introduce = chatData.introduce; evidenceIds = string.Empty; for (int i = 0; i < chatData.evidenceIds.Length; i++) { evidenceIds += chatData.evidenceIds[i]; if (i != chatData.evidenceIds.Length - 1) { evidenceIds += ","; } } //evidenceIds = chat chatID = chatData.id; for (int i = 0; i < chatData.m_editorItems.Count; i++) { EditorPersuadeItemData chatItemData = chatData.m_editorItems[i]; System.Type type = typeof(PersuadeBaseNode); PersuadeBaseNode contentNode = CreateNode(new Vector2(chatItemData.m_Position.x, chatItemData.m_Position.y), type, chatItemData.itemId) as PersuadeBaseNode; contentNode.m_talkType = (PersuadeTalkType)chatItemData.talkType; contentNode.m_type = (PersuadeType)chatItemData.persuadeType; contentNode.content = chatItemData.content; contentNode.evidenceID = chatItemData.evidenceID; } CreateConnectLine(chatData); Repaint(); }
private EditorPersuadeData GetEditorDataByNodes(List <BaseNode> nodes, int ID, EditorPersuadeData persuadeData) { //EditorPersuadeData persuadeData = new EditorPersuadeData(); persuadeData.id = ID; for (int i = 0; i < nodes.Count; i++) { EditorPersuadeItemData itemData = GetEditorItemDataByBaseNode(nodes[i]); persuadeData.m_editorItems.Add(itemData); } return(persuadeData); }