/// <summary>
 /// 创建修改枚举选项窗口
 /// </summary>
 /// <param name="form">AddEnumForm、EditEnumForm</param>
 /// <param name="enumItem">枚举项</param>
 public EditEnumItemForm(Form form, CustomEnum customEnum, EnumItem enumItem)
 {
     m_Form       = form;
     m_CustomEnum = customEnum;
     m_EnumItem   = enumItem;
     InitializeComponent();
 }
예제 #2
0
        /// <summary>
        /// 检验枚举类型
        /// </summary>
        /// <returns></returns>
        public VerifyInfo VerifyEnumType()
        {
            //校验EnumType是否为空
            for (int i = 0; i < m_Enums.Count; i++)
            {
                CustomEnum customEnum = m_Enums[i];
                if (string.IsNullOrEmpty(customEnum.EnumType))
                {
                    return(new VerifyInfo("存在空的EnumType"));
                }
            }

            //检验EnumType是否相同
            for (int i = 0; i < m_Enums.Count; i++)
            {
                CustomEnum classType_i = m_Enums[i];
                if (classType_i != null)
                {
                    for (int ii = i + 1; ii < m_Enums.Count; ii++)
                    {
                        CustomEnum classtType_ii = m_Enums[ii];
                        if (classType_i.EnumType == classtType_ii.EnumType)
                        {
                            return(new VerifyInfo(string.Format("存在相同EnumType:{0}", classType_i.EnumType)));
                        }
                    }
                }
            }

            return(VerifyInfo.DefaultVerifyInfo);
        }
예제 #3
0
        private void Delete()
        {
            if (listView1.SelectedIndices.Count == 1)
            {
                int selectIdx = listView1.SelectedIndices[0];
                ListViewItem selectedItem = listView1.Items[selectIdx];
                CustomEnum customEnum = selectedItem.Tag as CustomEnum;

                if (MessageBox.Show(string.Format("确定删除枚举类型{0}吗?", customEnum.EnumType), "提示", MessageBoxButtons.OKCancel) == DialogResult.OK)
                {
                    listView1.Items.RemoveAt(selectIdx);
                    m_NodeClasses.RemoveEnum(customEnum);
                    MainForm.Instance.ShowInfo(string.Format("删除枚举类型{0} 时间:{1}", customEnum.EnumType, DateTime.Now));
                    if (listView1.Items.Count > selectIdx)
                        listView1.Items[selectIdx].Selected = true;
                }
            }
            else if (listView1.SelectedIndices.Count == 0)
            {
                MainForm.Instance.ShowInfo("请选择一条记录进行删除");
            }
            else
            {
                MainForm.Instance.ShowInfo("无法一次删除多个记录");
            }
        }
        public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context)
        {
            m_NodeTemplate = MainForm.Instance.NodeTemplate;

            if (m_NodeTemplate != null)
            {
                if (m_NodeTemplate.Enums.Count == 0)
                {
                    MainForm.Instance.ShowMessage("没有任何枚举,请先注册枚举");
                }
                else
                {
                    m_EnumTypeList.Clear();
                    for (int i = 0; i < m_NodeTemplate.Enums.Count; i++)
                    {
                        CustomEnum customEnum = m_NodeTemplate.Enums[i];
                        if (customEnum == null)
                        {
                            continue;
                        }
                        m_EnumTypeList.Add(customEnum.EnumType);
                    }

                    return(new StandardValuesCollection(m_EnumTypeList));
                }
            }

            return(base.GetStandardValues(context));
        }
예제 #5
0
        private void Paste()
        {
            try
            {
                EnumListContent content = (EnumListContent)XmlUtility.StringToObject<EnumListContent>(Clipboard.GetText());

                for (int i = 0; i < content.DataList.Count; i++)
                {
                    CustomEnum customEnum = content.DataList[i];
                    string enumType = customEnum.EnumType;
                    do
                    {
                        enumType += "_New";
                    }
                    while (m_NodeClasses.ExistEnumType(enumType));

                    customEnum.EnumType = enumType;
                    m_NodeClasses.AddEnum(customEnum);
                }
                Exec("Refresh");
                MainForm.Instance.ShowInfo("您粘贴了" + content.DataList.Count + "个枚举!!!");
            }
            catch (Exception ex)
            {
                MainForm.Instance.ShowInfo("无法进行粘贴,错误信息:" + ex.Message);
                MainForm.Instance.ShowMessage("无法进行粘贴,错误信息:" + ex.Message, "警告");
            }
        }
예제 #6
0
        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();
        }
예제 #7
0
        public bool RemoveEnum(CustomEnum customEnum)
        {
            if (customEnum == null)
            {
                return(false);
            }

            return(m_Enums.Remove(customEnum));
        }
예제 #8
0
        //添加枚举
        public void AddEnum(CustomEnum customEnum)
        {
            if (customEnum == null)
                return;

            Exec("Refresh");

            ListViewItem listViewItem = GetListViewItem(customEnum);
            listViewItem.Selected = true;
        }
        public EnumItem GetEnumItemByIndex(int index)
        {
            CustomEnum customEnum = MainForm.Instance.NodeTemplate.FindEnum(m_EnumType);

            if (index >= 0 && index < customEnum.Enums.Count)
            {
                return(customEnum.Enums[index]);
            }

            return(null);
        }
예제 #10
0
 private void Edit()
 {
     if (listView1.SelectedIndices.Count == 1)
     {
         int selectIdx = listView1.SelectedIndices[0];
         ListViewItem selectedItem = listView1.Items[selectIdx];
         CustomEnum customEnum = selectedItem.Tag as CustomEnum;
         EditEnumForm editEnumForm = new EditEnumForm(this, customEnum);
         editEnumForm.ShowDialog();
     }
 }
예제 #11
0
        private void Swap(bool up)
        {
            if (listView1.SelectedIndices.Count > 1)
            {
                MainForm.Instance.ShowInfo("请选择一条记录进行交换");
                MainForm.Instance.ShowMessage("请选择一条记录进行交换", "警告");
                return;
            }

            int selectIdx = listView1.SelectedIndices[0];

            if (up)
            {
                //第一个不能往上交换
                if (selectIdx == 0)
                {
                    return;
                }

                int preIdx = selectIdx - 1;

                CustomEnum preEnum      = m_NodeTemplate.Enums[preIdx];
                CustomEnum selectedEnum = m_NodeTemplate.Enums[selectIdx];

                m_NodeTemplate.Enums[preIdx]    = selectedEnum;
                m_NodeTemplate.Enums[selectIdx] = preEnum;

                selectIdx = preIdx;
            }
            else
            {
                //最后一个不能往下交换
                if (selectIdx == listView1.Items.Count - 1)
                {
                    return;
                }

                int nextIdx = selectIdx + 1;

                CustomEnum preEnum      = m_NodeTemplate.Enums[nextIdx];
                CustomEnum selectedEnum = m_NodeTemplate.Enums[selectIdx];

                m_NodeTemplate.Enums[nextIdx]   = selectedEnum;
                m_NodeTemplate.Enums[selectIdx] = preEnum;

                selectIdx = nextIdx;
            }

            Exec("Refresh");
            MainForm.Instance.ShowInfo("交换成功 时间:" + DateTime.Now);
            listView1.Items[selectIdx].Selected = true;
        }
        public EnumFieldDesigner()
        {
            if (MainForm.Instance.NodeTemplate == null)
            {
                return;
            }

            if (MainForm.Instance.NodeTemplate.Enums.Count > 0)
            {
                CustomEnum customEnum = MainForm.Instance.NodeTemplate.Enums[0];
                EnumType = customEnum.EnumType;
            }
        }
예제 #13
0
        public EnumDefaultValue()
        {
            if (MainForm.Instance.NodeClasses == null)
            {
                return;
            }

            if (MainForm.Instance.NodeClasses.Enums.Count > 0)
            {
                CustomEnum customEnum = MainForm.Instance.NodeClasses.Enums[0];
                EnumType = customEnum.EnumType;
            }
        }
예제 #14
0
        //更新枚举内容
        public void UpdateEnum(CustomEnum customEnum)
        {
            if (customEnum == null)
            {
                return;
            }

            Exec("Refresh");

            ListViewItem listViewItem = GetListViewItem(customEnum);

            if (listViewItem != null)
            {
                listViewItem.Selected = true;
            }
        }
예제 #15
0
        /// <summary>
        /// 更新美剧内容
        /// </summary>
        /// <param name="customEnum"></param>
        public void UpdateEnum(CustomEnum customEnum)
        {
            if (customEnum == null)
            {
                return;
            }

            if (customEnum == this)
            {
                return;
            }

            m_EnumType = customEnum.EnumType;
            m_Describe = customEnum.Describe;

            m_Enums.Clear();
            m_Enums.AddRange(customEnum.Enums);
        }
예제 #16
0
        /// <summary>
        /// 通过EnumType查找枚举配置
        /// </summary>
        /// <param name="enumType"></param>
        /// <returns></returns>
        public CustomEnum FindEnum(string enumType)
        {
            if (string.IsNullOrEmpty(enumType))
            {
                return(null);
            }

            for (int i = 0; i < m_Enums.Count; i++)
            {
                CustomEnum customEnum = m_Enums[i];
                if (customEnum != null && customEnum.EnumType == enumType)
                {
                    return(customEnum);
                }
            }

            return(null);
        }
예제 #17
0
 /// <summary>
 /// 移除未定义的枚举字段
 /// </summary>
 public void RemoveUnDefineEnumField()
 {
     for (int i = m_Fields.Count - 1; i >= 0; i--)
     {
         NodeField field = m_Fields[i];
         if (field.FieldType == FieldType.EnumField)
         {
             EnumDefaultValue enumDeaultValue = field.DefaultValue as EnumDefaultValue;
             if (enumDeaultValue != null)
             {
                 CustomEnum customEnum = MainForm.Instance.NodeClasses.FindEnum(enumDeaultValue.EnumType);
                 if (customEnum == null)
                 {
                     m_Fields.RemoveAt(i);
                 }
             }
         }
     }
 }
예제 #18
0
        private void BindEnum()
        {
            if (m_NodeClasses == null)
                return;

            listView1.Items.Clear();
            for (int i = 0; i < m_NodeClasses.Enums.Count; i++)
            {
                CustomEnum customEnum = m_NodeClasses.Enums[i];
                ListViewItem listViewItem = listView1.Items.Add(customEnum.EnumType);
                listViewItem.Tag = customEnum;
                string content = string.Empty;
                for (int j = 0; j < customEnum.Enums.Count; j++)
                {
                    EnumItem enumItem = customEnum.Enums[j];
                    content += string.Format("{0} = {1} {2}", enumItem.EnumStr, enumItem.EnumValue, j < customEnum.Enums.Count - 1 ? "," : string.Empty);
                }
                listViewItem.SubItems.Add(content);
                listViewItem.SubItems.Add(customEnum.Describe);
            }
        }
예제 #19
0
        /// <summary>
        /// 校验枚举数据
        /// </summary>
        /// <returns></returns>
        public VerifyInfo VerifyEnum()
        {
            //校验枚举类型
            VerifyInfo verifyEnumType = VerifyEnumType();

            if (verifyEnumType.HasError)
            {
                return(verifyEnumType);
            }

            for (int i = 0; i < m_Enums.Count; i++)
            {
                CustomEnum customEnum = m_Enums[i];
                VerifyInfo verifyEnum = customEnum.VerifyEnum();
                if (verifyEnum.HasError)
                {
                    return(verifyEnum);
                }
            }

            return(VerifyInfo.DefaultVerifyInfo);
        }
예제 #20
0
        public bool ExistEnumType(string enumType)
        {
            if (string.IsNullOrEmpty(enumType))
            {
                throw new System.Exception("NodeClasses.ExistEnumType() 枚举类型为空");
            }

            for (int i = 0; i < m_Enums.Count; i++)
            {
                CustomEnum tempEnum = m_Enums[i];
                if (tempEnum == null)
                {
                    continue;
                }
                if (tempEnum.EnumType == enumType)
                {
                    return(true);
                }
            }

            return(false);
        }
예제 #21
0
        public bool AddEnum(CustomEnum customEnum)
        {
            if (customEnum == null)
            {
                return(false);
            }

            if (string.IsNullOrEmpty(customEnum.EnumType))
            {
                MainForm.Instance.ShowMessage("枚举类型为空!!!!");
                return(false);
            }

            if (ExistEnumType(customEnum.EnumType))
            {
                MainForm.Instance.ShowMessage(string.Format("已存在枚举:{0},请换个枚举类型", customEnum.EnumType));
                return(false);
            }

            m_Enums.Add(customEnum);
            return(true);
        }
예제 #22
0
        /// <summary>
        /// 是否存在无效枚举类型
        /// </summary>
        /// <returns></returns>
        public VerifyInfo VerifyEnum()
        {
            //校验枚举类型
            //检测字段是否重复
            for (int i = 0; i < m_Fields.Count; i++)
            {
                NodeField field = m_Fields[i];
                if (field.FieldType == FieldType.EnumField)
                {
                    EnumDefaultValue enumDeaultValue = field.DefaultValue as EnumDefaultValue;
                    if (enumDeaultValue != null)
                    {
                        if (string.IsNullOrEmpty(enumDeaultValue.EnumType))
                        {
                            return(new VerifyInfo(string.Format("节点类型[{0}]的字段[{1}]的枚举类型为空", this.ClassType, field.FieldName)));
                        }

                        CustomEnum customEnum = MainForm.Instance.NodeClasses.FindEnum(enumDeaultValue.EnumType);
                        if (customEnum == null)
                        {
                            return(new VerifyInfo(string.Format("节点类型[{0}]的字段[{1}]的枚举类型[{2}]不存在", this.ClassType, field.FieldName, enumDeaultValue.EnumType)));
                        }
                        else
                        {
                            EnumItem enumItem = customEnum.FindEnum(enumDeaultValue.DefaultValue);
                            if (enumItem == null)
                            {
                                return(new VerifyInfo(string.Format("节点类型[{0}]的字段[{1}]的枚举类型[{2}]不存在选项[{3}]", this.ClassType, field.FieldName, customEnum.EnumType, enumDeaultValue.DefaultValue)));
                            }
                        }
                    }
                }
            }

            return(VerifyInfo.DefaultVerifyInfo);
        }
예제 #23
0
        /// <summary>
        /// 是否存在无效枚举类型
        /// </summary>
        /// <returns></returns>
        public VerifyInfo VerifyEnum()
        {
            //校验枚举类型
            //检测字段是否重复
            for (int i = 0; i < m_Fields.Count; i++)
            {
                FieldDesigner field = m_Fields[i];
                if (field.FieldType == FieldType.EnumField)
                {
                    EnumFieldDesigner enumFieldDesigner = field.Field as EnumFieldDesigner;
                    if (enumFieldDesigner != null)
                    {
                        if (string.IsNullOrEmpty(enumFieldDesigner.EnumType))
                        {
                            return(new VerifyInfo(string.Format("行为树[{0}]的字段[{1}]的枚举类型为空", m_TreeID, field.FieldName)));
                        }

                        CustomEnum customEnum = MainForm.Instance.NodeTemplate.FindEnum(enumFieldDesigner.EnumType);
                        if (customEnum == null)
                        {
                            return(new VerifyInfo(string.Format("行为树[{0}]的字段[{1}]的枚举类型[{2}]不存在", m_TreeID, field.FieldName, enumFieldDesigner.EnumType)));
                        }
                        else
                        {
                            EnumItem enumItem = customEnum.FindEnum(enumFieldDesigner.Value);
                            if (enumItem == null)
                            {
                                return(new VerifyInfo(string.Format("行为树[{0}]的字段[{1}]的枚举类型[{2}]\n不存在选项[{3}]", m_TreeID, field.FieldName, customEnum.EnumType, enumFieldDesigner.Value)));
                            }
                        }
                    }
                }
            }

            return(VerifyInfo.DefaultVerifyInfo);
        }
 /// <summary>
 /// 创建添加枚举项窗口
 /// </summary>
 /// <param name="form">由哪个窗口触发,(AddEnumForm、EditEnumForm)</param>
 /// <param name="customEnum"></param>
 public AddEnumItemForm(Form form, CustomEnum customEnum)
 {
     m_Form       = form;
     m_CustomEnum = customEnum;
     InitializeComponent();
 }
        public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context)
        {
            m_EnumStr = null;
            if (context.Instance is EnumDefaultValue)
            {
                EnumDefaultValue enumDeaultValue = context.Instance as EnumDefaultValue;
                if (enumDeaultValue != null)
                {
                    m_EnumStr = enumDeaultValue.DefaultValue;
                    if (string.IsNullOrEmpty(enumDeaultValue.EnumType))
                    {
                        MainForm.Instance.ShowMessage("请先选择枚举类型");
                    }
                    else
                    {
                        m_CustomEnum = MainForm.Instance.NodeTemplate.FindEnum(enumDeaultValue.EnumType);
                        if (m_CustomEnum == null)
                        {
                            MainForm.Instance.ShowMessage(string.Format("不存在枚举类型:{0},请先注册", enumDeaultValue.EnumType));
                        }
                    }
                }
            }
            else if (context.Instance is EnumFieldDesigner)
            {
                EnumFieldDesigner enumFieldDesigner = context.Instance as EnumFieldDesigner;
                if (enumFieldDesigner != null)
                {
                    m_EnumStr = enumFieldDesigner.Value;
                    if (string.IsNullOrEmpty(enumFieldDesigner.EnumType))
                    {
                        MainForm.Instance.ShowMessage("请先选择枚举类型");
                    }
                    else
                    {
                        m_CustomEnum = MainForm.Instance.NodeTemplate.FindEnum(enumFieldDesigner.EnumType);
                        if (m_CustomEnum == null)
                        {
                            MainForm.Instance.ShowMessage(string.Format("不存在枚举类型:{0},请先注册", enumFieldDesigner.EnumType));
                        }
                    }
                }
            }

            if (m_CustomEnum != null)
            {
                //绑定
                m_EnumItemList.Clear();
                if (m_CustomEnum.Enums.Count > 0)
                {
                    int selectedIndex = 0;

                    for (int i = 0; i < m_CustomEnum.Enums.Count; i++)
                    {
                        EnumItem enumItem = m_CustomEnum.Enums[i];
                        m_EnumItemList.Add(enumItem.EnumStr);
                        if (m_EnumStr == enumItem.EnumStr)
                        {
                            selectedIndex = i;
                        }
                    }
                }

                return(new StandardValuesCollection(m_EnumItemList));
            }

            return(base.GetStandardValues(context));
        }
예제 #26
0
        public void ResetEnums()
        {
            m_Enums.Clear();

            CustomEnum SUCCESS_POLICY = new CustomEnum();

            SUCCESS_POLICY.EnumType = "SUCCESS_POLICY";
            SUCCESS_POLICY.AddEnumItem(new EnumItem()
            {
                EnumStr = "SUCCEED_ON_ONE", EnumValue = 1, Describe = "当某一个节点返回成功时退出;"
            });
            SUCCESS_POLICY.AddEnumItem(new EnumItem()
            {
                EnumStr = "SUCCEED_ON_ALL", EnumValue = 2, Describe = "当全部节点都返回成功时退出"
            });
            AddEnum(SUCCESS_POLICY);

            CustomEnum FAILURE_POLICY = new CustomEnum();

            FAILURE_POLICY.EnumType = "FAILURE_POLICY";
            FAILURE_POLICY.AddEnumItem(new EnumItem()
            {
                EnumStr = "FAIL_ON_ONE", EnumValue = 1, Describe = "当某一个节点返回失败时退出;"
            });
            FAILURE_POLICY.AddEnumItem(new EnumItem()
            {
                EnumStr = "FAIL_ON_ALL", EnumValue = 2, Describe = "当全部节点都返回失败时退出"
            });
            AddEnum(FAILURE_POLICY);

            CustomEnum ParameterType = new CustomEnum();

            ParameterType.EnumType = "ParameterType";
            ParameterType.AddEnumItem(new EnumItem()
            {
                EnumStr = "Agent", EnumValue = 1, Describe = "在Agent定义的参数"
            });
            ParameterType.AddEnumItem(new EnumItem()
            {
                EnumStr = "Global", EnumValue = 2, Describe = "全局定义的参数"
            });
            AddEnum(ParameterType);

            CustomEnum CompareType = new CustomEnum();

            CompareType.EnumType = "CompareType";
            CompareType.AddEnumItem(new EnumItem()
            {
                EnumStr = "Less", EnumValue = 1, Describe = "<"
            });
            CompareType.AddEnumItem(new EnumItem()
            {
                EnumStr = "Greater", EnumValue = 2, Describe = ">"
            });
            CompareType.AddEnumItem(new EnumItem()
            {
                EnumStr = "LEqual", EnumValue = 3, Describe = "<="
            });
            CompareType.AddEnumItem(new EnumItem()
            {
                EnumStr = "GEqual", EnumValue = 4, Describe = ">="
            });
            CompareType.AddEnumItem(new EnumItem()
            {
                EnumStr = "Equal", EnumValue = 5, Describe = "=="
            });
            CompareType.AddEnumItem(new EnumItem()
            {
                EnumStr = "NotEqual", EnumValue = 6, Describe = "!="
            });
            AddEnum(CompareType);
        }