Exemple #1
0
        public void AddFuncToScript(string funcName)
        {
            if (!_dictElements.ContainsKey(funcName))
            {
                var funcInfo = new ScriptElementInfo();
                funcInfo._name    = funcName;
                funcInfo._bGlobal = false;
                funcInfo._module  = "M";
                funcInfo._type    = EScriptElementType.Function;

                _dictElements.Add(funcName, funcInfo);
            }
        }
Exemple #2
0
        private static void addFunToElement(Dictionary <string, ScriptElementInfo> dictElements, string funcName)
        {
            if (!dictElements.ContainsKey(funcName))
            {
                var funcInfo = new ScriptElementInfo();
                funcInfo._name    = funcName;
                funcInfo._bGlobal = false;
                funcInfo._module  = "M";
                funcInfo._type    = EScriptElementType.Function;

                dictElements.Add(funcName, funcInfo);
            }
        }
Exemple #3
0
        //绘制窗口内容
        void OnGUI()
        {
            EditorGUILayout.BeginHorizontal();
            EditorGUILayout.LabelField("*类名");
            _class = EditorGUILayout.TextField(_class, GUILayout.Width(300), GUILayout.ExpandWidth(true));
            EditorGUILayout.EndHorizontal();

            EditorGUILayout.BeginHorizontal();
            EditorGUILayout.LabelField("*描述");
            _description = EditorGUILayout.TextField(_description, GUILayout.Width(300), GUILayout.ExpandWidth(true));
            EditorGUILayout.EndHorizontal();

            EditorGUILayout.BeginHorizontal();
            EditorGUILayout.LabelField("全局空间可见");
            _bGlobal = EditorGUILayout.Toggle(_bGlobal);
            EditorGUILayout.EndHorizontal();

            EditorGUILayout.BeginHorizontal();
            EditorGUILayout.LabelField("模块导出");
            _bModuleExport = EditorGUILayout.Toggle(_bModuleExport);
            EditorGUILayout.EndHorizontal();

            EditorGUILayout.HelpBox(_strHelpMsg, _msgType, true);

            //操作按钮
            EditorGUILayout.BeginHorizontal();
            if (GUILayout.Button("添加", GUILayout.Width(100), GUILayout.ExpandWidth(true)))
            {
                if (string.IsNullOrEmpty(_class) || string.IsNullOrEmpty(_description))
                {
                    _strHelpMsg = "类名和注释不能为空";
                    _msgType    = MessageType.Error;
                    return;
                }

                if (_dictInfos.ContainsKey(_class))
                {
                    _strHelpMsg = "已存在的类名";
                    _msgType    = MessageType.Error;
                    return;
                }

                ScriptElementInfo eleInfo = new ScriptElementInfo();
                eleInfo._type        = EScriptElementType.Table;
                eleInfo._name        = _class;
                eleInfo._description = _description;
                eleInfo._bGlobal     = _bGlobal;
                eleInfo._module      = _bModuleExport ? _module : "";
                _dictInfos.Add(eleInfo._name, eleInfo);

                //刷新父窗口
                if (_parentWindow != null)
                {
                    _parentWindow.Repaint();
                }

                this.Close();
            }

            if (GUILayout.Button("取消", GUILayout.Width(100), GUILayout.ExpandWidth(true)))
            {
                this.Close();
            }
            EditorGUILayout.EndHorizontal();
        }
Exemple #4
0
        //绘制窗口内容
        void OnGUI()
        {
            EditorGUILayout.HelpBox(_strHelpMsg, _msgType, true);
            EditorGUILayout.Separator();

            EditorGUILayout.LabelField("目录:" + _strDirectory);

            EditorGUILayout.BeginHorizontal();
            EditorGUILayout.LabelField("*文件名");
            _strFileName = EditorGUILayout.TextField(_strFileName, GUILayout.Width(300), GUILayout.ExpandWidth(true));
            EditorGUILayout.EndHorizontal();

            EditorGUILayout.BeginHorizontal();
            EditorGUILayout.LabelField("*脚本描述");
            _strSummary = EditorGUILayout.TextField(_strSummary, GUILayout.Width(300), GUILayout.ExpandWidth(true));
            EditorGUILayout.EndHorizontal();

            EditorGUILayout.BeginHorizontal();
            EditorGUILayout.LabelField("*作者");
            _strAuthor = EditorGUILayout.TextField(_strAuthor, GUILayout.Width(300), GUILayout.ExpandWidth(true));
            EditorGUILayout.EndHorizontal();

            EditorGUILayout.BeginHorizontal();
            EditorGUILayout.LabelField("模块名");
            _strModule = EditorGUILayout.TextField(_strModule, GUILayout.Width(300), GUILayout.ExpandWidth(true));
            EditorGUILayout.EndHorizontal();

            EditorGUILayout.Separator();
            EditorGUILayout.Separator();

            EditorGUILayout.BeginHorizontal();
            EditorGUILayout.LabelField("脚本类 ");
            if (GUILayout.Button("添加", GUILayout.Width(100)))
            {
                var classEdtorWin = (ScriptClassEditorInfoWindow)EditorWindow.GetWindow(typeof(ScriptClassEditorInfoWindow));
                classEdtorWin.name = "类信息";
                classEdtorWin.initialize(_strModule, _dictElements, this);
            }
            if (GUILayout.Button("删除", GUILayout.Width(100)))
            {
                var keys = new List <string>(_elementsToggleInfo.Keys);
                foreach (var k in keys)
                {
                    if (!_elementsToggleInfo[k])
                    {
                        _dictElements.Remove(k);
                        _elementsToggleInfo.Remove(k);
                    }
                }
            }
            EditorGUILayout.EndHorizontal();

            ////////生成类列表信息

            //菜单
            EditorGUILayout.BeginHorizontal();
            _bSelectAll = EditorGUILayout.Toggle(_bSelectAll, GUILayout.Width(30)); //选中

            EditorGUILayout.LabelField("名称", GUILayout.Width(30), GUILayout.ExpandWidth(true));
            EditorGUILayout.LabelField("属性", GUILayout.Width(30), GUILayout.ExpandWidth(true));
            EditorGUILayout.LabelField("类型", GUILayout.Width(30), GUILayout.ExpandWidth(true));
            EditorGUILayout.LabelField("模块", GUILayout.Width(30), GUILayout.ExpandWidth(true));
            EditorGUILayout.EndHorizontal();

            //信息
            _v2ScrollPos = EditorGUILayout.BeginScrollView(_v2ScrollPos);
            foreach (var kvp in _dictElements)
            {
                var    elementInfo = kvp.Value;
                string strAttr     = elementInfo._bGlobal ? "global" : "local";
                string strName     = elementInfo._name;
                string strTypeName = elementInfo._type.ToString();
                string strModule   = string.IsNullOrEmpty(elementInfo._module) ? "NULL" : elementInfo._module;

                //保存toggle信息
                bool bSaved = false;
                if (_elementsToggleInfo.ContainsKey(strName))
                {
                    bSaved = _elementsToggleInfo[strName];
                }
                else
                {
                    _elementsToggleInfo.Add(strName, bSaved);
                }


                //是否全选
                bool bToggle = _bSelectAll ? _bSelectAll : bSaved;
                EditorGUILayout.BeginHorizontal();
                bToggle = EditorGUILayout.Toggle(bToggle, GUILayout.Width(30)); //选中
                EditorGUILayout.LabelField(strName, GUILayout.Width(30), GUILayout.ExpandWidth(true));
                EditorGUILayout.LabelField(strAttr, GUILayout.Width(30), GUILayout.ExpandWidth(true));
                EditorGUILayout.LabelField(strTypeName, GUILayout.Width(30), GUILayout.ExpandWidth(true));
                EditorGUILayout.LabelField(strModule, GUILayout.Width(30), GUILayout.ExpandWidth(true));
                EditorGUILayout.EndHorizontal();

                if (_bSelectAll && !bToggle)
                {
                    _bSelectAll = false;
                }

                //全选状态选中一个,取消全选
                _elementsToggleInfo[strName] = bToggle;
            }
            EditorGUILayout.EndScrollView();

            //操作按钮
            EditorGUILayout.BeginHorizontal();
            if (GUILayout.Button("生成", GUILayout.Width(100), GUILayout.ExpandWidth(true)))
            {
                if (string.IsNullOrEmpty(_strFileName) || string.IsNullOrEmpty(_strSummary) || string.IsNullOrEmpty(_strAuthor))
                {
                    _strHelpMsg = "信息不完整";
                    _msgType    = MessageType.Error;
                    return;
                }

                //还原提示信息
                _strHelpMsg = "带有*标识的为必填项";
                _msgType    = MessageType.Info;

                if (_dictElements.Count == 0)
                {
                    ScriptElementInfo dft = new ScriptElementInfo();
                    dft._name        = "DefaultTable";
                    dft._description = "默认生成的类";
                    dft._type        = EScriptElementType.Table;
                    dft._bGlobal     = false;
                    _dictElements.Add(dft._name, dft);
                }

                //生成脚本
                string file = _strDirectory + "/" + _strFileName + ".lua";
                CustomLuaMenu.generateScriptFile(file, _strSummary, _strAuthor, _strModule, _dictElements);
            }

            if (GUILayout.Button("取消", GUILayout.Width(100), GUILayout.ExpandWidth(true)))
            {
                this.Close();
            }
            EditorGUILayout.EndHorizontal();
        }