/// <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); }