Пример #1
0
        /// <summary>
        /// 将panel的数据设置到TreeNode中
        /// </summary>
        /// <param name="treeNode">树节点</param>
        /// <param name="panel">对应的panel</param>
        private void SetPanelToTreeNode(TreeNode treeNode, Panel panel)
        {
            treeNode.Tag = panel;
            DialogueConditionControl dialogueConditionControl = panel.Controls.OfType <DialogueConditionControl>().FirstOrDefault();
            DialogueCondition        dialogueCondition        = dialogueConditionControl.GetDialogueCondition();

            treeNode.Text = "Text:[" + dialogueCondition.text + "];Type:[" + dialogueCondition.enumDialogueType + "]";
            if (dialogueConditionControl.Tag != null && (dialogueConditionControl.Tag as List <Control>) != null && (dialogueConditionControl.Tag as List <Control>).Count > 0)
            {
                SetControlToTreeNode(treeNode, (dialogueConditionControl.Tag as List <Control>).ToArray());
            }
        }
        /// <summary>
        /// 保存方案
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void 保存方案ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //重建对话关系数据集合以及对话数据字典
            List <DialogueCondition>        dialogueConditionList = new List <DialogueCondition>();
            Dictionary <int, DialogueValue> dialogueValueDic      = new Dictionary <int, DialogueValue>();

            foreach (Panel panel in FlowLayoutPanel_Main.Controls.OfType <Panel>())
            {
                DialogueConditionControl dialogueConditionContorl = panel.Controls.OfType <DialogueConditionControl>().FirstOrDefault();
                if (dialogueConditionContorl == null)
                {
                    continue;
                }
                //对话条件
                DialogueCondition dialogueCondition = dialogueConditionContorl.GetDialogueCondition();
                //对话关系
                if (dialogueConditionContorl.Tag != null &&
                    dialogueConditionContorl.Tag.GetType().Equals(typeof(List <Control>)) &&
                    (dialogueConditionContorl.Tag as List <Control>).Count > 0)
                {
                    List <Control>       childControlList = dialogueConditionContorl.Tag as List <Control>;
                    DialoguePointControl topPointControl  = childControlList[0] as DialoguePointControl;
                    if (topPointControl != null)
                    {
                        DialoguePoint topPoint = new DialoguePoint();
                        topPoint.dialogueID = topPointControl.GetDialogueValue().dialogueID;
                        if (childControlList[0].Tag != null &&
                            childControlList[0].Tag.GetType().Equals(typeof(List <Control>)) &&
                            (childControlList[0].Tag as List <Control>).Count > 0)
                        {
                            SetDialoguePointData_Child(topPoint, (childControlList[0].Tag as List <Control>).ToArray());
                        }
                        dialogueCondition.topPoint = topPoint;
                    }
                }
                else
                {
                    dialogueCondition.topPoint = null;
                }
                dialogueConditionList.Add(dialogueCondition);
                //对话数据
                foreach (DialoguePointControl dialoguePointControl in panel.Controls.OfType <DialoguePointControl>())
                {
                    DialoguePointControl topPointControl = dialoguePointControl as DialoguePointControl;
                    if (topPointControl != null)
                    {
                        if (!dialogueValueDic.ContainsKey(topPointControl.GetDialogueValue().dialogueID))
                        {
                            dialogueValueDic.Add(topPointControl.GetDialogueValue().dialogueID, topPointControl.GetDialogueValue());
                        }
                    }
                }
            }
            dialogueAnalysisData.ResetData(dialogueConditionList, dialogueValueDic);
            string dialogueConditionStr, dialogueValueStr;

            dialogueAnalysisData.GetData(out dialogueConditionStr, out dialogueValueStr);
            //保存
            string folderPath = Path.GetDirectoryName(projectPath);

            File.WriteAllText(folderPath + "\\" + dialogueConditionFileName + ".txt", dialogueConditionStr, Encoding.UTF8);
            File.WriteAllText(folderPath + "\\" + dialogueValueFileName + ".txt", dialogueValueStr, Encoding.UTF8);
        }