private void CopyClass() { if (treeView1.SelectedNode == null) { return; } if (treeView1.SelectedNode.Tag == null) { return; } if (!(treeView1.SelectedNode.Tag is NodeItem)) { return; } NodeItem nodeItem = treeView1.SelectedNode.Tag as NodeItem; NodeDefine nodeDefine = nodeItem.NodeDefine; NodeDefineListContent content = new NodeDefineListContent(); content.DataList.Add(nodeDefine); if (content.DataList.Count > 0) { Clipboard.SetText(XmlUtility.ObjectToString(content)); } MainForm.Instance.ShowInfo("您复制了" + content.DataList.Count.ToString() + "个节点类!!!"); }
public GlobalVariableForm(VariableDesigner globalVariable) { m_GlobalVariable = globalVariable; m_OldContent = XmlUtility.ObjectToString(globalVariable); m_EditGlobalVariable = XmlUtility.StringToObject <VariableDesigner>(m_OldContent); InitializeComponent(); }
private void editGroupBTN_Click(object sender, EventArgs e) { string groupName = textBox1.Text.Trim(); if (string.IsNullOrEmpty(groupName)) { MainForm.Instance.ShowMessage("组名不能为空"); return; } if (MainForm.Instance.TreeViewManager.ExistGroup(groupName)) { MainForm.Instance.ShowMessage(string.Format("{0},已存在", groupName)); return; } string oldName = m_Group.GroupName; m_EditGroup.GroupName = groupName; string content = XmlUtility.ObjectToString(m_EditGroup); if (m_OldContent != content) { m_Group.GroupName = m_EditGroup.GroupName; MainForm.Instance.Exec(OperationType.UpdateGroup, oldName, m_Group); MainForm.Instance.ShowInfo(string.Format("分组{0}改为{1} 时间:{2}", oldName, m_Group.GroupName, DateTime.Now)); } this.Close(); }
//加载工作区 public void LoadWorkSpace() { //读取行为树类信息 NodeClasses = XmlUtility.Read <NodeClasses>(GetNodeClassPath()); if (NodeClasses == null) { NodeClasses = new NodeClasses(); NodeClasses.ResetEnums(); NodeClasses.ResetNodes(); XmlUtility.Save(MainForm.Instance.GetNodeClassPath(), MainForm.Instance.NodeClasses); } NodeClassesStringContent = XmlUtility.ObjectToString(NodeClasses); this.Text = Settings.Default.EditorTitle; if (string.IsNullOrEmpty(Settings.Default.WorkDirectory) || string.IsNullOrEmpty(Settings.Default.WorkSpaceName)) { return; } WorkSpaceData = XmlUtility.Read <WorkSpaceData>(GetWorkSpacePath()); if (WorkSpaceData == null) { return; } if (WorkSpaceData != null) { this.Text = string.Format("{0}[{1}]", Settings.Default.EditorTitle, WorkSpaceData.WorkSpaceName); } //读取行为树数据 LoadBehaviorTreeData(); }
public EditBehaviorTreeForm(BehaviorTreeDesigner behaviorTree) { m_BehaviorTree = behaviorTree; m_BehaviorTreeContent = XmlUtility.ObjectToString(m_BehaviorTree); m_EditBehaviorTree = XmlUtility.StringToObject <BehaviorTreeDesigner>(m_BehaviorTreeContent); InitializeComponent(); }
private void enterBTN_Click(object sender, EventArgs e) { if (string.IsNullOrEmpty(textBox1.Text.Trim())) { MainForm.Instance.ShowMessage("枚举类型为空,请填写枚举类型"); return; } if (m_EditCustomEnum.Enums.Count == 0) { MainForm.Instance.ShowMessage("枚举项为0,请添加至少一个枚举项"); return; } m_EditCustomEnum.EnumType = textBox1.Text.Trim(); m_EditCustomEnum.Describe = textBox2.Text.Trim(); VerifyInfo verifyEnum = m_EditCustomEnum.VerifyEnum(); if (verifyEnum.HasError) { MainForm.Instance.ShowMessage(verifyEnum.Msg); return; } string newContent = XmlUtility.ObjectToString(m_EditCustomEnum); if (m_OldContent != newContent) { m_CustomEnum.UpdateEnum(m_EditCustomEnum); m_EnumForm.UpdateEnum(m_CustomEnum); } this.Close(); }
private void CopyBehaviorTreeVar() { if (listView2.SelectedItems.Count > 0) { VariableFieldListContent content = new VariableFieldListContent(); foreach (ListViewItem lvItem in listView2.SelectedItems) { if (lvItem.Tag is VariableFieldDesigner) { content.DataList.Add((VariableFieldDesigner)lvItem.Tag); } } if (content.DataList.Count > 0) { Clipboard.SetText(XmlUtility.ObjectToString(content)); } MainForm.Instance.ShowInfo("您复制了" + content.DataList.Count.ToString() + "个变量!!!"); } else { MainForm.Instance.ShowInfo("您必须选择至少一个进行复制!!!"); MainForm.Instance.ShowMessage("您必须选择至少一个进行复制!!!", "警告"); } }
private void Copy() { if (listView1.SelectedItems.Count > 0) { EnumItemListContent content = new EnumItemListContent(); foreach (ListViewItem lvItem in listView1.SelectedItems) { if (lvItem.Tag is EnumItem) { content.DataList.Add((EnumItem)lvItem.Tag); } } if (content.DataList.Count > 0) { Clipboard.SetText(XmlUtility.ObjectToString(content)); } MainForm.Instance.ShowInfo("您复制了" + content.DataList.Count.ToString() + "个枚举选项!!!"); } else { MainForm.Instance.ShowInfo("您必须选择至少一个进行复制!!!"); MainForm.Instance.ShowMessage("您必须选择至少一个进行复制!!!", "警告"); } }
public EditAgentForm(AgentDesigner agent) { m_Agent = agent; m_AgentContent = XmlUtility.ObjectToString(m_Agent); m_EditAgent = XmlUtility.StringToObject <AgentDesigner>(m_AgentContent); InitializeComponent(); }
public ContextVariableForm(VariableDesigner contextVariable) { m_ContextVariable = contextVariable; m_OldContent = XmlUtility.ObjectToString(contextVariable); m_EditContextVariable = XmlUtility.StringToObject <VariableDesigner>(m_OldContent); InitializeComponent(); }
/// <summary> /// 复制Agent /// </summary> private void CopyAgent() { if (treeView1.SelectedNode != null) { if (!(treeView1.SelectedNode.Tag is AgentItem)) { ShowMessage("只能复制Agent"); return; } AgentListContent content = new AgentListContent(); content.DataList.Add((treeView1.SelectedNode.Tag as AgentItem).Agent); if (content.DataList.Count > 0) { Clipboard.SetText(XmlUtility.ObjectToString(content)); } MainForm.Instance.ShowInfo("您复制了" + content.DataList.Count.ToString() + "个枚举!!!"); } else { MainForm.Instance.ShowInfo("您必须选择一个进行复制!!!"); MainForm.Instance.ShowMessage("您必须选择一个进行复制!!!", "警告"); } }
private string m_OldContent;//用于检测对象有没有被改变了 public EditEnumForm(EnumForm enumForm, CustomEnum customEnum) { m_EnumForm = enumForm; m_CustomEnum = customEnum; m_OldContent = XmlUtility.ObjectToString(m_CustomEnum); m_EditCustomEnum = XmlUtility.StringToObject <CustomEnum>(m_OldContent); InitializeComponent(); }
public EditGroupForm(BehaviorGroupDesigner group) { m_Group = group; m_OldContent = XmlUtility.ObjectToString(m_Group); m_EditGroup = XmlUtility.StringToObject <BehaviorGroupDesigner>(m_OldContent); InitializeComponent(); }
public EditGroupForm(Group group) { m_Group = group; m_OldContent = XmlUtility.ObjectToString(m_Group); m_EditGroup = XmlUtility.StringToObject <Group>(m_OldContent); InitializeComponent(); }
public EditClassForm(ClassForm classForm, NodeClass nodeClass, Action editCallback) { m_ClassForm = classForm; m_NodeClass = nodeClass; m_Content = XmlUtility.ObjectToString(m_NodeClass); m_EditNodeClass = XmlUtility.StringToObject <NodeClass>(m_Content); m_EditCallback = editCallback; InitializeComponent(); }
public EditNodeDefineForm(NodeTemplateForm classForm, NodeDefine nodeDefine, Action editCallback) { m_ClassForm = classForm; m_NodeDefine = nodeDefine; m_Content = XmlUtility.ObjectToString(m_NodeDefine); m_EditNodeDefine = XmlUtility.StringToObject <NodeDefine>(m_Content); m_EditCallback = editCallback; InitializeComponent(); }
private void ContextVariableForm_FormClosing(object sender, FormClosingEventArgs e) { string newContent = XmlUtility.ObjectToString(m_EditContextVariable); if (newContent != m_OldContent) { m_ContextVariable.VariableFields = m_EditContextVariable.VariableFields; } }
private void enterBTN_Click(object sender, EventArgs e) { if (string.IsNullOrEmpty(textBox1.Text.Trim())) { MainForm.Instance.ShowMessage("BehaviorTreeID不能为空"); MainForm.Instance.ShowInfo("BehaviorTreeID不能为空"); return; } string behaviorTreeId = textBox1.Text.Trim(); string behaviorName = textBox3.Text.Trim(); if (m_BehaviorTree.ID != behaviorTreeId) { if (MainForm.Instance.BehaviorTreeData.ExistBehaviorTree(behaviorTreeId)) { MainForm.Instance.ShowMessage(string.Format("已存在BehaviorTreeID:{0}", behaviorTreeId)); MainForm.Instance.ShowInfo(string.Format("已存在BehaviorTreeID:{0}", behaviorTreeId)); return; } } m_EditBehaviorTree.ID = behaviorTreeId; m_EditBehaviorTree.Describe = textBox2.Text.Trim(); m_EditBehaviorTree.Name = textBox3.Text.Trim(); //检验行为树是否合法 VerifyInfo verifyBehaviorTree = m_EditBehaviorTree.VerifyBehaviorTree(); if (verifyBehaviorTree.HasError) { MainForm.Instance.ShowMessage(verifyBehaviorTree.Msg); return; } string editContent = XmlUtility.ObjectToString(m_EditBehaviorTree); if (editContent != m_BehaviorTreeContent) { m_BehaviorTree.UpdateBehaviorTree(m_EditBehaviorTree); MainForm.Instance.ShowInfo(string.Format("更新行为树:{0}成功 时间:{1}", m_EditBehaviorTree.ID, DateTime.Now)); } MainForm.Instance.Exec(OperationType.UpdateBehaviorTree, m_BehaviorTree); this.Close(); }
private void enterBTN_Click(object sender, EventArgs e) { if (string.IsNullOrEmpty(textBox1.Text.Trim())) { MainForm.Instance.ShowMessage("AgentID不能为空"); MainForm.Instance.ShowInfo("AgentID不能为空"); return; } string agentId = textBox1.Text.Trim(); if (m_Agent.AgentID != agentId) { if (MainForm.Instance.TreeData.ExistAgent(agentId)) { MainForm.Instance.ShowMessage(string.Format("已存在AgentID:{0}", agentId)); MainForm.Instance.ShowInfo(string.Format("已存在AgentID:{0}", agentId)); return; } } m_EditAgent.AgentID = agentId; m_EditAgent.Describe = textBox2.Text.Trim(); //检验Agent的是否合法 VerifyInfo verifyAgent = m_EditAgent.VerifyAgent(); if (verifyAgent.HasError) { MainForm.Instance.ShowMessage(verifyAgent.Msg); return; } string editContent = XmlUtility.ObjectToString(m_EditAgent); if (editContent != m_AgentContent) { m_Agent.UpdateAgent(m_EditAgent); MainForm.Instance.ShowInfo(string.Format("更新Agent:{0}成功 时间:{1}", m_EditAgent.AgentID, DateTime.Now)); } MainForm.Instance.Exec(OperationType.UpdateAgent, m_Agent); this.Close(); }
private void enterBTN_Click(object sender, EventArgs e) { if (string.IsNullOrEmpty(classTypeTB.Text.Trim())) { MainForm.Instance.ShowMessage("请填写类名", "提示"); return; } if (categoryTB.Text.Trim().Contains(" ")) { MainForm.Instance.ShowMessage("类别不能有空格", "提示"); return; } m_EditNodeDefine.ClassType = classTypeTB.Text.Trim(); m_EditNodeDefine.NodeType = (NodeType)(nodeTypeCBB.SelectedIndex + 1); m_EditNodeDefine.Label = labelTB.Text.Trim(); m_EditNodeDefine.Describe = describeTB.Text.Trim(); m_EditNodeDefine.Category = categoryTB.Text.Trim(); m_EditNodeDefine.CheckField = CBB_CheckField.Checked; m_NodeDefine.NodeIcon = nodeIconCBB.Text; //校验节点类是否合法 VerifyInfo verifyNodeDefine = m_EditNodeDefine.VerifyNodeDefine(); if (verifyNodeDefine.HasError) { MainForm.Instance.ShowMessage(verifyNodeDefine.Msg); return; } string content = XmlUtility.ObjectToString(m_EditNodeDefine); if (m_Content != content) { m_NodeDefine.UpdateNodeDefine(m_EditNodeDefine); MainForm.Instance.ShowInfo("修改成功 时间:" + DateTime.Now); } this.Close(); m_EditCallback?.Invoke(); }
//打开工作区 public void OpenWorkSpace() { OpenFileDialog openFileDialog = new OpenFileDialog(); openFileDialog.Filter = string.Format("工作区配置|*{0}", Settings.Default.WorkSpaceSetupSuffix); openFileDialog.Title = "打开工作区"; if (openFileDialog.ShowDialog() == DialogResult.OK) { string workSpaceFile = openFileDialog.FileName.Trim(); if (File.Exists(workSpaceFile)) { DirectoryInfo dirInfo = new DirectoryInfo(workSpaceFile); string workDirectory = dirInfo.Parent.FullName; WorkSpaceData = XmlUtility.Read <WorkSpaceData>(workSpaceFile); if (WorkSpaceData != null) { Settings.Default.WorkDirectory = workDirectory; Settings.Default.WorkSpaceName = WorkSpaceData.WorkSpaceName; Settings.Default.Save(); Text = string.Format("{0}[{1}]", Settings.Default.EditorTitle, WorkSpaceData.WorkSpaceName); ShowInfo("打开工作区,时间:" + DateTime.Now); //读取行为树类信息 NodeClasses = XmlUtility.Read <NodeClasses>(GetNodeClassPath()); if (NodeClasses == null) { NodeClasses = new NodeClasses(); NodeClasses.ResetNodes(); XmlUtility.Save(GetNodeClassPath(), NodeClasses); } NodeClassesStringContent = XmlUtility.ObjectToString(NodeClasses); //读取行为树数据 LoadBehaviorTreeData(); CreateTreeViewManager(); } } } }
public void LoadBehaviorTreeData() { //读取行为树数据 BehaviorTreeData = XmlUtility.Read <BehaviorTreeDataDesigner>(GetBehaviorTreeDataPath()); if (BehaviorTreeData == null) { BehaviorTreeData = new BehaviorTreeDataDesigner(); XmlUtility.Save(GetBehaviorTreeDataPath(), BehaviorTreeData); } BehaviorTreeDataStringContent = XmlUtility.ObjectToString(BehaviorTreeData); if (BehaviorTreeData.BehaviorTrees.Count > 0) { for (int i = 0; i < BehaviorTreeData.BehaviorTrees.Count; i++) { BehaviorTreeDesigner behaviorTree = BehaviorTreeData.BehaviorTrees[i]; if (behaviorTree != null) { if (behaviorTree.Nodes.Count > 0) { for (int ii = 0; ii < behaviorTree.Nodes.Count; ii++) { NodeDesigner node = behaviorTree.Nodes[ii]; if (node.Transitions.Count > 0) { for (int iii = 0; iii < node.Transitions.Count; iii++) { Transition transition = node.Transitions[iii]; NodeDesigner fromNode = behaviorTree.FindNodeByID(transition.FromNodeID); NodeDesigner toNode = behaviorTree.FindNodeByID(transition.ToNodeID); transition.Set(toNode, fromNode); } } } } } } } }
public void LoadBehaviorTreeData() { //读取行为树数据 TreeData = XmlUtility.Read <TreeData>(GetBehaviorTreeDataPath()); if (TreeData == null) { TreeData = new TreeData(); XmlUtility.Save(GetBehaviorTreeDataPath(), TreeData); } BehaviorTreeDataStringContent = XmlUtility.ObjectToString(TreeData); if (TreeData.Agents.Count > 0) { for (int i = 0; i < TreeData.Agents.Count; i++) { AgentDesigner agent = TreeData.Agents[i]; if (agent != null) { if (agent.Nodes.Count > 0) { for (int ii = 0; ii < agent.Nodes.Count; ii++) { NodeDesigner node = agent.Nodes[ii]; if (node.Transitions.Count > 0) { for (int iii = 0; iii < node.Transitions.Count; iii++) { Transition transition = node.Transitions[iii]; NodeDesigner fromNode = agent.FindNodeByID(transition.FromNodeID); NodeDesigner toNode = agent.FindNodeByID(transition.ToNodeID); transition.Set(toNode, fromNode); } } } } } } } }
private void MainForm_FormClosing(object sender, FormClosingEventArgs e) { Settings.Default.Save(); if (e.CloseReason == CloseReason.UserClosing) { bool nodeClassDirty = false; if (NodeClasses != null) { string tempNodeClassesStringContent = XmlUtility.ObjectToString(NodeClasses); if (tempNodeClassesStringContent != NodeClassesStringContent) { nodeClassDirty = true; } } bool behaviorTreeDirty = false; if (TreeData != null) { string tempBehaviorTreeDataStringContent = XmlUtility.ObjectToString(TreeData); if (tempBehaviorTreeDataStringContent != BehaviorTreeDataStringContent) { behaviorTreeDirty = true; } } if (nodeClassDirty || behaviorTreeDirty) { DialogResult result = MessageBox.Show(Settings.Default.SaveWarnning, Settings.Default.EditorTitle, MessageBoxButtons.OKCancel); if (result == DialogResult.OK) { Exec(OperationType.Save); } } } }
private void enterBTN_Click(object sender, EventArgs e) { if (string.IsNullOrEmpty(workSpaceNameTB.Text.Trim())) { MainForm.Instance.ShowMessage("请输入工作区名字", "警告"); return; } if (string.IsNullOrEmpty(workSpaceDirectoryTB.Text.Trim())) { MainForm.Instance.ShowMessage("请选择工作区位置", "警告"); return; } if (!Directory.Exists(workSpaceDirectoryTB.Text.Trim())) { MainForm.Instance.ShowMessage("工作区目录不存在", "警告"); return; } //if (string.IsNullOrEmpty(dataSaveDirectoryTB.Text.Trim())) //{ // MainForm.Instance.ShowMessage("请选择数据保存位置", "警告"); // return; //} if (!string.IsNullOrEmpty(dataSaveDirectoryTB.Text.Trim()) && !Directory.Exists(dataSaveDirectoryTB.Text.Trim())) { MainForm.Instance.ShowMessage("数据保存目录不存在", "警告"); return; } string workSpaceDirector = workSpaceDirectoryTB.Text.Trim(); string[] files = Directory.GetFiles(workSpaceDirector, "*" + Settings.Default.WorkSpaceSetupSuffix); if (files.Length > 0) { string existWorkSpaceName = Path.GetFileName(files[0]); //去掉后缀 existWorkSpaceName = existWorkSpaceName.Replace(Settings.Default.WorkSpaceSetupSuffix, ""); MainForm.Instance.ShowMessage(string.Format("该位置已被{0}使用,请选择别的目录作为新的工作区位置", existWorkSpaceName), "警告"); return; } MainForm.Instance.WorkSpaceData = new WorkSpaceData(); MainForm.Instance.WorkSpaceData.WorkSpaceName = workSpaceNameTB.Text.Trim(); MainForm.Instance.WorkSpaceData.Describe = describeTB.Text.Trim(); Settings.Default.WorkSpaceName = workSpaceNameTB.Text.Trim(); Settings.Default.WorkDirectory = workSpaceDirectoryTB.Text.Trim(); Settings.Default.NodeDataSavePath = dataSaveDirectoryTB.Text.Trim(); Settings.Default.Save(); XmlUtility.Save <WorkSpaceData>(MainForm.Instance.GetWorkSpacePath(), MainForm.Instance.WorkSpaceData); MainForm.Instance.ShowInfo("新建工作区成功,时间:" + DateTime.Now); //初始化节点类信息 MainForm.Instance.NodeClasses = new NodeClasses(); MainForm.Instance.NodeClasses.ResetNodes(); XmlUtility.Save(MainForm.Instance.GetNodeClassPath(), MainForm.Instance.NodeClasses); MainForm.Instance.NodeClassesStringContent = XmlUtility.ObjectToString(MainForm.Instance.NodeClasses); //初始化行为树数据 MainForm.Instance.TreeData = new TreeData(); XmlUtility.Save(MainForm.Instance.GetBehaviorTreeDataPath(), MainForm.Instance.TreeData); MainForm.Instance.BehaviorTreeDataStringContent = XmlUtility.ObjectToString(MainForm.Instance.TreeData); MainForm.Instance.CreateTreeViewManager(); MainForm.Instance.Exec(OperationType.Refresh); this.Close(); }
//保存 public void Save() { if (WorkSpaceData == null) { ShowMessage("当前没有工作空间,请新建或者打开工作空间!"); return; } if (NodeClasses == null || TreeData == null) { return; } //节点类移除未定义的枚举字段 NodeClasses.RemoveUnDefineEnumField(); //移除未定义的节点 TreeData.RemoveUnDefineNode(); //修正数据,和模板的保持一致 TreeData.AjustData(); //检验枚举 VerifyInfo verifyEnum = NodeClasses.VerifyEnum(); if (verifyEnum.HasError) { ShowMessage(verifyEnum.Msg); ShowInfo(verifyEnum.Msg); return; } //检验节点类 VerifyInfo verifyNodeClass = NodeClasses.VerifyNodeClass(); if (verifyNodeClass.HasError) { ShowMessage(verifyNodeClass.Msg); ShowInfo(verifyNodeClass.Msg); return; } //校验行为树 VerifyInfo verifyBehaviorTree = TreeData.VerifyBehaviorTree(); if (verifyBehaviorTree.HasError) { ShowMessage(verifyBehaviorTree.Msg); ShowInfo(verifyBehaviorTree.Msg); return; } if (XmlUtility.Save(GetNodeClassPath(), NodeClasses)) { NodeClassesStringContent = XmlUtility.ObjectToString(NodeClasses); } if (XmlUtility.Save(GetBehaviorTreeDataPath(), TreeData)) { BehaviorTreeDataStringContent = XmlUtility.ObjectToString(TreeData); } //序列化成二进制 BehaviorTreeData.TreeData treeData = EditorUtility.CreateTreeData(TreeData); if (treeData != null) { string savePath = GetNodeDataSavePath(); if (File.Exists(savePath)) { File.Delete(savePath); } BehaviorTreeData.Serializer.SerializeToFile(treeData, savePath); } ShowInfo("保存成功 时间:" + DateTime.Now); }