public static BTData.BehaviorTreeData CreateTreeData(BehaviorTreeDataDesigner treeData) { BTData.BehaviorTreeData data = new BTData.BehaviorTreeData(); //全局变量 for (int i = 0; i < treeData.GlobalVariable.VariableFields.Count; i++) { VariableFieldDesigner variableField = treeData.GlobalVariable.VariableFields[i]; BTData.BaseField variableFieldData = CreateVariableField(variableField); data.GlobalVariable.VariableFields.Add(variableFieldData); } //Context变量 for (int i = 0; i < treeData.ContextVariable.VariableFields.Count; i++) { VariableFieldDesigner variableField = treeData.ContextVariable.VariableFields[i]; BTData.BaseField variableFieldData = CreateVariableField(variableField); data.ContextVariable.VariableFields.Add(variableFieldData); } for (int i = 0; i < treeData.BehaviorTrees.Count; i++) { BehaviorTreeDesigner behaviorTree = treeData.BehaviorTrees[i]; if (behaviorTree == null) { continue; } data.BehaviorTrees.Add(CreateBehaviorTreeData(behaviorTree)); } return(data); }
private void Paste() { try { VariableItemListContent content = XmlUtility.StringToObject <VariableItemListContent>(Clipboard.GetText()); for (int i = 0; i < content.DataList.Count; i++) { VariableFieldDesigner variableField = content.DataList[i]; string variableStr = variableField.VariableFieldName; do { variableStr += "_New"; }while (m_EditContextVariable.ExistVariableStr(variableStr)); variableField.VariableFieldName = variableStr; m_EditContextVariable.Add(variableField); } Exec("Refresh"); MainForm.Instance.ShowInfo("您粘贴了" + content.DataList.Count + "个变量选项!!!"); } catch (Exception ex) { MainForm.Instance.ShowInfo("无法进行粘贴,错误信息:" + ex.Message); MainForm.Instance.ShowMessage("无法进行粘贴,错误信息:" + ex.Message, "警告"); } }
public static BTData.BehaviorTreeElement CreateBehaviorTreeData(BehaviorTreeDesigner behaviorTree) { BTData.BehaviorTreeElement data = new BTData.BehaviorTreeElement(); data.ID = behaviorTree.ID; //行为树变量 for (int i = 0; i < behaviorTree.BehaviorTreeVariableFields.Count; i++) { VariableFieldDesigner field = behaviorTree.BehaviorTreeVariableFields[i]; if (field == null) { continue; } data.BehaviorTreeVariables.Add(CreateVariableField(field)); } for (int i = 0; i < behaviorTree.Fields.Count; i++) { FieldDesigner field = behaviorTree.Fields[i]; if (field == null) { continue; } data.Fields.Add(CreateField(field)); } NodeDesigner startNode = behaviorTree.GetStartNode(); if (startNode != null) { data.StartNode = CreateNode(behaviorTree, startNode); } return(data); }
private void PasteBehaviorTreeVar() { try { VariableFieldListContent content = XmlUtility.StringToObject <VariableFieldListContent>(Clipboard.GetText()); for (int i = 0; i < content.DataList.Count; i++) { VariableFieldDesigner field = content.DataList[i]; string fieldName = field.VariableFieldName; while (m_EditBehaviorTree.ExistBehaviorTreeVar(fieldName)) { fieldName += "_New"; } field.VariableFieldName = fieldName; m_EditBehaviorTree.AddBehaviorTreeVar(field); } Exec("Refresh_BehaviorTreeVar"); MainForm.Instance.ShowInfo("您粘贴了" + content.DataList.Count + "个变量!!!"); } catch (Exception ex) { MainForm.Instance.ShowInfo("无法进行粘贴,错误信息:" + ex.Message); MainForm.Instance.ShowMessage("无法进行粘贴,错误信息:" + ex.Message, "警告"); } }
public static BTData.BaseField CreateVariableField(VariableFieldDesigner variableFieldData) { BTData.BaseField data = null; switch (variableFieldData.VariableFieldType) { case FieldType.IntField: BTData.IntField intField = new BTData.IntField(); IntFieldDesigner intFieldDesigner = variableFieldData.Value as IntFieldDesigner; intField.FieldName = variableFieldData.VariableFieldName; intField.Value = intFieldDesigner.Value; data = intField; break; case FieldType.LongField: BTData.LongField longField = new BTData.LongField(); LongFieldDesigner longFieldDesigner = variableFieldData.Value as LongFieldDesigner; longField.FieldName = variableFieldData.VariableFieldName; longField.Value = longFieldDesigner.Value; data = longField; break; case FieldType.FloatField: BTData.FloatField floatField = new BTData.FloatField(); FloatFieldDesigner floatFieldDesigner = variableFieldData.Value as FloatFieldDesigner; floatField.FieldName = variableFieldData.VariableFieldName; floatField.Value = floatFieldDesigner.Value; data = floatField; break; case FieldType.DoubleField: BTData.DoubleField doubleField = new BTData.DoubleField(); DoubleFieldDesigner doubleFieldDesigner = variableFieldData.Value as DoubleFieldDesigner; doubleField.FieldName = variableFieldData.VariableFieldName; doubleField.Value = doubleFieldDesigner.Value; data = doubleField; break; case FieldType.StringField: BTData.StringField stringField = new BTData.StringField(); StringFieldDesigner stringFieldDesigner = variableFieldData.Value as StringFieldDesigner; stringField.FieldName = variableFieldData.VariableFieldName; stringField.Value = stringFieldDesigner.Value; data = stringField; break; case FieldType.BooleanField: BTData.BooleanField booleanField = new BTData.BooleanField(); BooleanFieldDesigner booleanFieldDesigner = variableFieldData.Value as BooleanFieldDesigner; booleanField.FieldName = variableFieldData.VariableFieldName; booleanField.Value = booleanFieldDesigner.Value; data = booleanField; break; } return(data); }
private void Delete() { if (listView1.SelectedIndices.Count == 0) { MainForm.Instance.ShowInfo("请选择一条记录进行删除"); return; } if (listView1.SelectedIndices.Count == 1) { int selectIdx = listView1.SelectedIndices[0]; ListViewItem selectedItem = listView1.Items[selectIdx]; VariableFieldDesigner variableItem = selectedItem.Tag as VariableFieldDesigner; if (MessageBox.Show(string.Format("确定删除变量选项{0}吗?", variableItem.VariableFieldName), "提示", MessageBoxButtons.OKCancel) == DialogResult.OK) { listView1.Items.RemoveAt(selectIdx); m_EditContextVariable.Remove(variableItem.VariableFieldName); MainForm.Instance.ShowInfo(string.Format("删除变量选项{0} 时间:{1}", variableItem.VariableFieldName, DateTime.Now)); if (listView1.Items.Count > selectIdx) { listView1.Items[selectIdx].Selected = true; } } } else { if (MessageBox.Show("确定批量删除选中的变量选项吗?", "提示", MessageBoxButtons.OKCancel) == DialogResult.OK) { List <ListViewItem> removeItems = new List <ListViewItem>(); for (int i = 0; i < listView1.SelectedIndices.Count; i++) { int index = listView1.SelectedIndices[i]; ListViewItem listViewItem = listView1.Items[index]; removeItems.Add(listViewItem); } while (removeItems.Count > 0) { ListViewItem listViewItem = removeItems[0]; removeItems.RemoveAt(0); VariableFieldDesigner variableField = listViewItem.Tag as VariableFieldDesigner; listView1.Items.Remove(listViewItem); m_EditContextVariable.Remove(variableField); } } } //更新序号 for (int i = 0; i < listView1.Items.Count; i++) { listView1.Items[i].Text = (i + 1).ToString(); } }
/// <summary> /// 判断行为树变量是否已存在 /// </summary> /// <param name="fieldName"></param> /// <returns></returns> public bool ExistBehaviorTreeVar(string varName) { for (int i = 0; i < m_BehaviorTreeVariables.Count; i++) { VariableFieldDesigner temp = m_BehaviorTreeVariables[i]; if (temp.VariableFieldName == varName) { return(true); } } return(false); }
private void SwapBehaviorTreeVar(bool up) { if (listView2.SelectedIndices.Count > 1) { MainForm.Instance.ShowInfo("请选择一条记录进行交换"); MainForm.Instance.ShowMessage("请选择一条记录进行交换", "警告"); return; } int selectIdx = listView2.SelectedIndices[0]; if (up) { //第一个不能往上交换 if (selectIdx == 0) { return; } int preIdx = selectIdx - 1; VariableFieldDesigner preField = m_EditBehaviorTree.BehaviorTreeVariableFields[preIdx]; VariableFieldDesigner selectedField = m_EditBehaviorTree.BehaviorTreeVariableFields[selectIdx]; m_EditBehaviorTree.BehaviorTreeVariableFields[preIdx] = selectedField; m_EditBehaviorTree.BehaviorTreeVariableFields[selectIdx] = preField; selectIdx = preIdx; } else { //最后一个不能往下交换 if (selectIdx == listView2.Items.Count - 1) { return; } int nextIdx = selectIdx + 1; VariableFieldDesigner preField = m_EditBehaviorTree.BehaviorTreeVariableFields[nextIdx]; VariableFieldDesigner selectedField = m_EditBehaviorTree.BehaviorTreeVariableFields[selectIdx]; m_EditBehaviorTree.BehaviorTreeVariableFields[nextIdx] = selectedField; m_EditBehaviorTree.BehaviorTreeVariableFields[selectIdx] = preField; selectIdx = nextIdx; } Exec("Refresh_BehaviorTreeVar"); MainForm.Instance.ShowInfo("交换成功 时间:" + DateTime.Now); listView2.Items[selectIdx].Selected = true; }
private void New() { VariableFieldDesigner field = new VariableFieldDesigner(); InputValueDialogForm form = new InputValueDialogForm("添加变量", field); if (form.ShowDialog() == DialogResult.OK) { if (m_EditContextVariable.Add(field)) { AddVariableFieldItem(field); } } }
private void BindVariable() { listView1.Items.Clear(); for (int i = 0; i < m_EditContextVariable.VariableFields.Count; i++) { VariableFieldDesigner variableField = m_EditContextVariable.VariableFields[i]; ListViewItem listViewItem = listView1.Items.Add((i + 1).ToString()); listViewItem.Tag = variableField; listViewItem.SubItems.Add(variableField.VariableFieldName); listViewItem.SubItems.Add(variableField.VariableFieldType.ToString()); listViewItem.SubItems.Add(variableField.Value == null ? string.Empty : variableField.Value.ToString()); listViewItem.SubItems.Add(variableField.Describe); } }
private void Edit() { if (listView1.SelectedIndices.Count == 1) { int selectIdx = listView1.SelectedIndices[0]; ListViewItem selectedItem = listView1.Items[selectIdx]; VariableFieldDesigner variableItem = selectedItem.Tag as VariableFieldDesigner; InputValueDialogForm testForm = new InputValueDialogForm("编辑", variableItem); if (testForm.ShowDialog() == DialogResult.OK) { UpdateVariableFieldItem(variableItem); } } }
public void UpdateVariableFieldItem(VariableFieldDesigner variableItem) { if (variableItem == null) { return; } ListViewItem listViewItem = GetListViewItem(variableItem); listViewItem.Tag = variableItem; listViewItem.SubItems.Add(variableItem.VariableFieldType.ToString()); listViewItem.SubItems.Add(variableItem.Value == null ? string.Empty : variableItem.Value.ToString()); listViewItem.SubItems.Add(variableItem.Describe); listViewItem.Selected = true; }
public void AddVariableFieldItem(VariableFieldDesigner variableItem) { if (variableItem == null) { return; } ListViewItem listViewItem = listView1.Items.Add((listView1.Items.Count + 1).ToString()); listViewItem.Tag = variableItem; listViewItem.SubItems.Add(variableItem.VariableFieldName); listViewItem.SubItems.Add(variableItem.VariableFieldType.ToString()); listViewItem.SubItems.Add(variableItem.Value == null ? string.Empty : variableItem.Value.ToString()); listViewItem.SubItems.Add(variableItem.Describe); listViewItem.Selected = true; }
public void Remove(VariableFieldDesigner variable) { if (variable == null) { throw new Exception("VariableField为空"); } for (int i = 0; i < m_VariableFields.Count; i++) { VariableFieldDesigner variableField = m_VariableFields[i]; if (variableField == variable || variableField.VariableFieldName == variable.VariableFieldName) { m_VariableFields.RemoveAt(i); break; } } }
private void EditBehaviorTreeVar() { if (listView2.SelectedItems.Count == 1) { VariableFieldDesigner field = listView2.SelectedItems[0].Tag as VariableFieldDesigner; InputValueDialogForm dlg = new InputValueDialogForm("编辑行为树变量", listView2.SelectedItems[0].Tag); if (dlg.ShowDialog() == DialogResult.OK) { Exec("Refresh_BehaviorTreeVar"); ListViewItem listViewItem = GetListViewItem(listView2, field); if (listViewItem != null) { listViewItem.Selected = true; } } } }
public bool ExistVariableStr(string variableName) { if (string.IsNullOrEmpty(variableName)) { throw new Exception("变量名为空"); } for (int i = 0; i < m_VariableFields.Count; i++) { VariableFieldDesigner variableField = m_VariableFields[i]; if (variableField != null && variableField.VariableFieldName == variableName) { return(true); } } return(false); }
public VariableFieldDesigner Get(string variableName) { if (string.IsNullOrEmpty(variableName)) { throw new Exception("变量名为空"); } for (int i = 0; i < m_VariableFields.Count; i++) { VariableFieldDesigner variableField = m_VariableFields[i]; if (variableField != null && variableField.VariableFieldName == variableName) { return(variableField); } } return(null); }
private void BindBehaviorTreeVar() { listView2.Items.Clear(); for (int i = 0; i < m_EditBehaviorTree.BehaviorTreeVariableFields.Count; i++) { VariableFieldDesigner field = m_EditBehaviorTree.BehaviorTreeVariableFields[i]; ListViewItem listViewItem = listView2.Items.Add(field.VariableFieldName); listViewItem.Tag = field; listViewItem.SubItems.Add(EditorUtility.GetFieldTypeName(field.VariableFieldType)); string content = string.Empty; if (field.Value != null) { content += field.Value; } listViewItem.SubItems.Add(content); listViewItem.SubItems.Add(field.Describe); } }
private void NewBehaviorTreeVar() { VariableFieldDesigner field = new VariableFieldDesigner(); InputValueDialogForm form = new InputValueDialogForm("添加行为树变量", field); if (form.ShowDialog() == DialogResult.OK) { if (m_EditBehaviorTree.AddBehaviorTreeVar(field)) { Exec("Refresh_BehaviorTreeVar"); ListViewItem listViewItem = GetListViewItem(listView2, field); if (listViewItem != null) { listViewItem.Selected = true; } } } }
public void Remove(string variableName) { if (string.IsNullOrEmpty(variableName)) { string msg = "变量名为空"; MainForm.Instance.ShowMessage(msg); MainForm.Instance.ShowInfo(msg); return; } for (int i = 0; i < m_VariableFields.Count; i++) { VariableFieldDesigner variableField = m_VariableFields[i]; if (variableField.VariableFieldName == variableName) { m_VariableFields.RemoveAt(i); break; } } }
/// <summary> /// 添加行为树变量 /// </summary> /// <param name="field">行为树变量</param> /// <returns></returns> public bool AddBehaviorTreeVar(VariableFieldDesigner field) { if (field == null) { return(false); } if (field.VariableFieldType == FieldType.None) { MainForm.Instance.ShowInfo("行为树变量类型为None,添加失败!!!"); MainForm.Instance.ShowMessage("行为树变量类型为None,添加失败!!!", "警告"); return(false); } if (string.IsNullOrEmpty(field.VariableFieldName)) { MainForm.Instance.ShowInfo("行为树变量名为空,添加失败!!!"); MainForm.Instance.ShowMessage("行为树变量名为空,添加失败!!!", "警告"); return(false); } for (int i = 0; i < m_BehaviorTreeVariables.Count; i++) { VariableFieldDesigner temp = m_BehaviorTreeVariables[i]; if (temp.VariableFieldName == field.VariableFieldName) { MainForm.Instance.ShowInfo(string.Format("行为树变量名字{0}相同,添加失败!!!", temp.VariableFieldName)); MainForm.Instance.ShowMessage(string.Format("行为树变量名字{0}相同,添加失败!!!", temp.VariableFieldName), "警告"); return(false); } } m_BehaviorTreeVariables.Add(field); return(true); }
public bool Add(VariableFieldDesigner variable) { if (variable == null) { throw new Exception("VariableField为空"); } if (string.IsNullOrEmpty(variable.VariableFieldName)) { string msg = "变量名为空"; MainForm.Instance.ShowMessage(msg); MainForm.Instance.ShowInfo(msg); return(false); } if (m_VariableFields.Contains(variable)) { MainForm.Instance.ShowMessage(string.Format("已存在变量:{0}", variable.VariableFieldName)); return(false); } m_VariableFields.Add(variable); return(true); }