コード例 #1
0
        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;
                        }
                    }
                }
            }
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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();
        }
コード例 #4
0
 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);
 }