/// <summary>
    /// 显示Title
    /// </summary>
    private void GUITitleInfo()
    {
        GUI.color = new Color(0.8f, 0.8f, 0.8f);
        GUILayout.BeginHorizontal("OL Title");
        GUI.color = Color.white;
        GUILayout.Space(-5);
        if (GUILayout.Button("保存", EditorGUIStyle.GetMiddleButton, GUILayout.ExpandHeight(true), GUILayout.Width(100)))
        {
            this.ShowNotification(new GUIContent("正在保存。。。"));
            _primaryKeyInfo.Values.Clear();
            for (int i = 0; i < _serializeData.DataList.Count; i++)
            {
                string value = _serializeData.DataList[i].T2.ToString();
                if (!_primaryKeyInfo.Values.ContainsKey(value))
                {
                    _primaryKeyInfo.Values.Add(value, 1);
                }
                else
                {
                    _primaryKeyInfo.Values[value]++;
                }
            }
            TableDatabaseUtils.SavaGlobalData();
            EditorUtility.SetDirty(_serializeData);
            AssetDatabase.SaveAssets();
        }

        GUILayout.FlexibleSpace();
        if (GUILayout.Button("添加", EditorGUIStyle.GetMiddleButton, GUILayout.ExpandHeight(true), GUILayout.Width(100)))
        {
            Test2 data = new Test2();
            _serializeData.DataList.Add(data);
            if (_primaryKeyInfo.Values.ContainsKey(data.T2.ToString()))
            {
                _primaryKeyInfo.Values[data.T2.ToString()]++;
            }
            else
            {
                _primaryKeyInfo.Values.Add(data.T2.ToString(), 1);
            }
            _pageMaxNum = (_serializeData.DataList.Count / _excelConfig.ShowCount);
            if (_serializeData.DataList.Count % _excelConfig.ShowCount > 0)
            {
                _pageMaxNum++;
            }
            _pageNum = 1;
        }
        GUILayout.Space(-5);

        GUILayout.EndHorizontal();
    }
Beispiel #2
0
 void OnEnable()
 {
     //GetConfigPath();
     //ReadConfig();
     if (_selectConfigIndex >= 0)
     {
         if (_selectConfigIndex >= TableDatabaseUtils.TableConfigSerializeData.TableConfigList.Count)
         {
             _selectConfigIndex = 0;
         }
         else
         {
             _tempTableConfig = TableDatabaseUtils.TableConfigSerializeData.TableConfigList[_selectConfigIndex];
         }
     }
     _enumArray = TableDatabaseUtils.GetEnums();
 }
 private void SettingGUI()
 {
     GUI.color = new Color(0.8f, 0.8f, 0.8f);
     GUILayout.BeginHorizontal("OL Title");
     GUI.color = Color.white;
     GUILayout.Space(5);
     GUILayout.Label("Vector分割符:");
     TableDatabaseUtils.TableConfigSerializeData.Setting.SplitVecChar = GUILayout.TextField(TableDatabaseUtils.TableConfigSerializeData.Setting.SplitVecChar, GUILayout.Width(40));
     GUILayout.Space(5);
     GUILayout.Label("List分隔符:");
     TableDatabaseUtils.TableConfigSerializeData.Setting.SplitListChar = GUILayout.TextField(TableDatabaseUtils.TableConfigSerializeData.Setting.SplitListChar, GUILayout.Width(40));
     GUILayout.Space(5);
     if (GUILayout.Button("保存配置"))
     {
         TableDatabaseUtils.SavaGlobalData();
     }
     GUILayout.FlexibleSpace();
     GUILayout.EndHorizontal();
 }
 private void CheckPlayerData()
 {
     for (int i = 0; i < TableDatabaseUtils.TableConfigSerializeData.TableConfigList.Count; i++)
     {
         if (TableDatabaseUtils.TableConfigSerializeData.TableConfigList[i].TableName == "Test2")
         {
             _tableConfig = TableDatabaseUtils.TableConfigSerializeData.TableConfigList[i];
             break;
         }
     }
     if (string.IsNullOrEmpty(_tableConfig.DataPath))
     {
         string path = EditorUtility.SaveFilePanelInProject("保存文件", _tableConfig.TableName + ".asset", "asset", "");
         if (string.IsNullOrEmpty(path))
         {
             if (EditorUtility.DisplayDialog("保存失败", "路径为空!!!", "OK"))
             {
                 return;
             }
         }
         _tableConfig.DataPath = path;
         _serializeData        = ScriptableObject.CreateInstance <Test2SerializeData>();
         TableDatabaseUtils.PrimaryKeySerializeData.PrimaryKeyDic.Add(_tableConfig.TableName, new PrimaryKeyInfo());
         _primaryKeyInfo             = TableDatabaseUtils.PrimaryKeySerializeData.PrimaryKeyDic[_tableConfig.TableName];
         _primaryKeyInfo.TableName   = _tableConfig.TableName;
         _primaryKeyInfo.PrimaryKey  = _tableConfig.PrimaryKey;
         _primaryKeyInfo.PrimaryType = _tableConfig.PrimaryType;
         _primaryKeyInfo.Values      = new Dictionary <string, int>();
         TableDatabaseUtils.SavaGlobalData();
         AssetDatabase.CreateAsset(_serializeData, path);
         AssetDatabase.SaveAssets();
         AssetDatabase.Refresh();
     }
     else
     {
         _serializeData  = AssetDatabase.LoadAssetAtPath <Test2SerializeData>(_tableConfig.DataPath);
         _primaryKeyInfo = TableDatabaseUtils.PrimaryKeySerializeData.PrimaryKeyDic[_tableConfig.TableName];
         if (_tableConfig.PrimaryKey != _primaryKeyInfo.PrimaryKey)
         {
             //更换主键
             _primaryKeyInfo.TableName   = _tableConfig.TableName;
             _primaryKeyInfo.PrimaryKey  = _tableConfig.PrimaryKey;
             _primaryKeyInfo.PrimaryType = _tableConfig.PrimaryType;
             _primaryKeyInfo.Values      = new Dictionary <string, int>();
             for (int i = 0; i < _serializeData.DataList.Count; i++)
             {
                 string value = _serializeData.DataList[i].T2.ToString();
                 if (!_primaryKeyInfo.Values.ContainsKey(value))
                 {
                     _primaryKeyInfo.Values.Add(value, 1);
                 }
                 else
                 {
                     _primaryKeyInfo.Values[value]++;
                 }
             }
             TableDatabaseUtils.SavaGlobalData();
         }
     }
     _dataList = new List <Test2>();
     _dataList.AddRange(_serializeData.DataList);
 }
    private void GUIShowTableBody()
    {
        GUILayout.BeginArea(new Rect(3, 85, position.width - 20, position.height - 150));
        _tableScrollView = GUILayout.BeginScrollView(_tableScrollView, false, false, GUI.skin.horizontalScrollbar, GUIStyle.none);// );
        GUILayout.BeginVertical();
        Test2 removeData = null;
        int   begin      = (_pageNum - 1) * _excelConfig.ShowCount;
        int   end        = Mathf.Min(_pageNum * _excelConfig.ShowCount, _dataList.Count);

        for (int i = begin; i < end; i++)
        {
            GUILayout.BeginHorizontal(EditorGUIStyle.GetGroupBoxStyle(), GUILayout.Width(_areaWidht + 30), GUILayout.MinHeight(30));

            GUILayout.BeginHorizontal(EditorGUIStyle.GetGroupBoxStyle(), GUILayout.Width(30), GUILayout.ExpandHeight(true));
            GUILayout.Space(5);
            if (GUILayout.Button("", "OL Minus"))
            {
                removeData = _dataList[i];
            }
            GUILayout.EndHorizontal();

            float columnsWidth = 0;


            if (_primaryKeyInfo.Values.ContainsKey(_dataList[i].T2.ToString()))
            {
                if (_primaryKeyInfo.Values[_dataList[i].T2.ToString()] > 1)
                {
                    GUI.color = Color.red;
                }
            }
            columnsWidth = _excelConfig.ColumnsWidth[0];
            GUILayout.BeginHorizontal(EditorGUIStyle.GetGroupBoxStyle(), GUILayout.Width(columnsWidth), GUILayout.MaxWidth(columnsWidth), GUILayout.ExpandHeight(true));
            int key = (int)TableDatabaseUtils.RenderFieldInfoControl(columnsWidth, _tableConfig.FieldList[0].FieldType, _dataList[i].T2);
            if (key != _dataList[i].T2)
            {
                _primaryKeyInfo.Values[_dataList[i].T2.ToString()]--;
                if (_primaryKeyInfo.Values.ContainsKey(key.ToString()))
                {
                    _primaryKeyInfo.Values[key.ToString()]++;
                }
                else
                {
                    _primaryKeyInfo.Values.Add(key.ToString(), 1);
                }
                _dataList[i].T2 = key;
            }
            GUILayout.EndHorizontal();
            GUI.color = Color.white;



            //GUILayout.BeginHorizontal(EditorGUIStyle.GetGroupBoxStyle(), GUILayout.Width(_excelConfig.ColumnsWidth[8]), GUILayout.ExpandHeight(true));
            //GUILayout.Label("");
            //GUILayout.EndHorizontal();

            GUILayout.EndHorizontal();
        }
        if (removeData != null)
        {
            _dataList.Remove(removeData);
            if (_serializeData.DataList.Contains(removeData))
            {
                _serializeData.DataList.Remove(removeData);
            }
            _primaryKeyInfo.Values[removeData.T2.ToString()]--;
        }
        GUILayout.EndVertical();
        GUILayout.EndScrollView();
        GUILayout.EndArea();
    }
Beispiel #6
0
 private void WriteConfig()
 {
     TableDatabaseUtils.SavaGlobalData();
     //EditorUtility.SetDirty(TableDatabaseUtils.TableConfigSerializeData);
     AssetDatabase.SaveAssets();
 }
Beispiel #7
0
    private void ShowConfigInfo()
    {
        _infoScollViewVec = GUILayout.BeginScrollView(_infoScollViewVec, false, false);
        List <FieldConfig> removeList = new List <FieldConfig>();

        for (int i = 0; i < _tempTableConfig.FieldList.Count; i++)
        {
            FieldConfig fieldConfig = _tempTableConfig.FieldList[i];
            GUILayout.BeginHorizontal("GroupBox");
            GUILayout.BeginVertical();
            GUILayout.BeginHorizontal();
            GUILayout.Label("列名:", GUILayout.Width(INFO_LABEL_WIDTH));
            fieldConfig.Name = GUILayout.TextField(fieldConfig.Name, GUILayout.Width(INFO_TEXT_WIDTH));

            GUILayout.Label("类型:", GUILayout.Width(INFO_LABEL_WIDTH));
            int baseIndex = EditorGUILayout.Popup(fieldConfig.FieldIndex, TableDatabaseUtils.BaseType, GUILayout.Width(INFO_POPUP_WIDTH));
            if (baseIndex != fieldConfig.FieldIndex)
            {
                fieldConfig.FieldIndex = baseIndex;
                fieldConfig.FieldType  = TableDatabaseUtils.BaseType[baseIndex];
                if (fieldConfig.FieldType == "enum" && !string.IsNullOrEmpty(fieldConfig.EnumName))
                {
                    for (int j = 0; j < _enumArray.Length; j++)
                    {
                        if (fieldConfig.EnumName == _enumArray[j])
                        {
                            fieldConfig.EnumIndex = j;
                            break;
                        }
                    }
                }
            }
            if (fieldConfig.FieldType == "List")
            {
                GUILayout.Label("集合类型:", GUILayout.Width(50));
                int collectionIndex = EditorGUILayout.Popup(fieldConfig.GenericIndex, TableDatabaseUtils.GenericType, GUILayout.Width(INFO_POPUP_WIDTH));
                if (collectionIndex != fieldConfig.GenericIndex)
                {
                    fieldConfig.GenericIndex = collectionIndex;
                    fieldConfig.GenericType  = TableDatabaseUtils.GenericType[collectionIndex];
                }
            }
            if (fieldConfig.FieldType == "enum")
            {
                GUILayout.Label("枚举类型:", GUILayout.Width(50));
                fieldConfig.EnumIndex = EditorGUILayout.Popup(fieldConfig.EnumIndex, _enumArray, GUILayout.Width(INFO_POPUP_WIDTH));
                fieldConfig.EnumName  = _enumArray[fieldConfig.EnumIndex];
            }
            GUILayout.FlexibleSpace();
            if (GUILayout.Button("删除", "OL Minus"))
            {
                removeList.Add(fieldConfig);
            }
            GUILayout.EndHorizontal();
            GUILayout.Space(5);
            GUILayout.BeginHorizontal();
            GUILayout.Label("别名:", GUILayout.Width(INFO_LABEL_WIDTH));
            fieldConfig.ShowName = GUILayout.TextField(fieldConfig.ShowName, GUILayout.Width(INFO_TEXT_WIDTH));
            if (fieldConfig.FieldType == "int" || fieldConfig.FieldType == "string")
            {
                GUILayout.Label("外键:", GUILayout.Width(INFO_LABEL_WIDTH));
                fieldConfig.HasForeignKey = GUILayout.Toggle(fieldConfig.HasForeignKey, "", GUILayout.Width(20));//, "MiniToolbarPopup"
                if (fieldConfig.HasForeignKey)
                {
                    //GUILayout.Label("外键:", GUILayout.Width(INFO_LABEL_WIDTH));
                    string[] keys = TableDatabaseUtils.GetForeignKey(_tempTableConfig, fieldConfig.FieldType);
                    if (keys.Length == 1)
                    {
                        fieldConfig.ForeignKeyIndex = 0;
                        fieldConfig.ForeignKey      = "";
                        keys = new string[0];
                        EditorGUILayout.Popup(fieldConfig.ForeignKeyIndex, keys, GUILayout.Width(INFO_POPUP_WIDTH));
                    }
                    else
                    {
                        fieldConfig.ForeignKeyIndex = EditorGUILayout.Popup(fieldConfig.ForeignKeyIndex, keys, GUILayout.Width(INFO_POPUP_WIDTH));
                        fieldConfig.ForeignKey      = keys[fieldConfig.ForeignKeyIndex];
                    }
                }
            }
            GUILayout.Space(10);
            GUILayout.Label("是否导出:", GUILayout.Width(INFO_LABEL_WIDTH + 20));
            fieldConfig.IsExport = GUILayout.Toggle(fieldConfig.IsExport, "", GUILayout.Width(20));//, "MiniToolbarPopup"
            GUILayout.EndHorizontal();

            GUILayout.EndVertical();
            GUILayout.EndHorizontal();
        }
        if (removeList.Count > 0)
        {
            for (int i = 0; i < removeList.Count; i++)
            {
                _tempTableConfig.FieldList.Remove(removeList[i]);
                //todo 删除一个表(同时删除数据和代码)
            }
            WriteConfig();
        }
        GUILayout.EndScrollView();
    }
Beispiel #8
0
    /// <summary>
    /// 显示类型具体信息
    /// </summary>
    private void ShowTypeInfo()
    {
        if (_tempTableConfig != null)
        {
            GUILayout.BeginArea(new Rect(220, 10, 570, 480), "", "box");
            GUI.color = new Color(0.8f, 0.8f, 0.8f);;
            GUILayout.BeginHorizontal("OL Title");
            GUI.color = Color.white;
            GUILayout.Label("Table信息");
            GUILayout.FlexibleSpace();
            if (GUILayout.Button("添加字段", "OL Plus"))
            {
                _tempTableConfig.FieldList.Add(new FieldConfig()
                {
                    FieldIndex = 0, FieldType = "int", GenericIndex = 0, GenericType = "int"
                });
            }
            GUILayout.EndHorizontal();
            GUILayout.BeginVertical();
            GUILayout.BeginArea(new Rect(10, 30, 550, 440), "", "box");
            GUILayout.Space(5);
            GUILayout.BeginHorizontal();
            GUILayout.Label("表名:", GUILayout.Width(INFO_LABEL_WIDTH));
            _tempTableConfig.TableName = GUILayout.TextField(_tempTableConfig.TableName, GUILayout.Width(INFO_TEXT_WIDTH));
            GUILayout.Label("别名:", GUILayout.Width(INFO_LABEL_WIDTH));
            _tempTableConfig.ShowName = GUILayout.TextField(_tempTableConfig.ShowName, GUILayout.Width(INFO_TEXT_WIDTH));
            GUILayout.Label("主键:", GUILayout.Width(INFO_LABEL_WIDTH));
            string[] keys = TableDatabaseUtils.GetPrimaryKey(_tempTableConfig);
            if (keys.Length == 1)
            {
                EditorGUILayout.Popup(0, new string[0], GUILayout.Width(INFO_POPUP_WIDTH));
            }
            else
            {
                _tempTableConfig.PrimaryIndex = EditorGUILayout.Popup(_tempTableConfig.PrimaryIndex, keys, GUILayout.Width(INFO_POPUP_WIDTH));

                _tempTableConfig.PrimaryKey = keys[_tempTableConfig.PrimaryIndex];
                for (int i = 0; i < _tempTableConfig.FieldList.Count; i++)
                {
                    if (_tempTableConfig.FieldList[i].Name == _tempTableConfig.PrimaryKey)
                    {
                        _tempTableConfig.PrimaryType = _tempTableConfig.FieldList[i].FieldType;
                        break;
                    }
                }
            }
            //}
            GUILayout.FlexibleSpace();
            if (GUILayout.Button("保存配置"))
            {
                WriteConfig();
            }
            GUILayout.Space(10);
            GUILayout.EndHorizontal();
            GUILayout.Space(5);
            ShowConfigInfo();
            GUILayout.FlexibleSpace();
            GUILayout.BeginHorizontal();
            if (GUILayout.Button("生成脚本"))
            {
                GenerateCode();
            }
            if (GUILayout.Button("另存脚本"))
            {
                _tempTableConfig.CodePath = "";
                _tempTableConfig.DataPath = "";
                GenerateCode();
            }
            GUILayout.EndVertical();
            GUILayout.EndArea();
            GUILayout.EndVertical();

            GUILayout.EndArea();
        }
    }
 private void OnDestroy()
 {
     _excelConfig.ColumnsWidth[_excelConfig.ColumnsWidth.Count - 1] = TableDatabaseUtils.TableConfigSerializeData.Setting.ColumnWidth;
     EditorUtility.SetDirty(_excelConfig);
     TableDatabaseUtils.SavaGlobalData();
 }