Exemple #1
0
 void OnEnable()
 {
     _enumArray = TSDatabaseUtils.GetEnums();
     _typeList  = new ReorderableList(TSDatabaseUtils.TableConfigSerializeData.TableConfigList, typeof(TableConfig), true, true, true, false);
     _typeList.elementHeight       = 30;
     _typeList.onSelectCallback    = TypeListSelectCallback;
     _typeList.drawHeaderCallback  = TypeListDrawHeaderCallback;
     _typeList.drawElementCallback = TypeListDrawElementCallback;
     _typeList.onAddCallback       = TypeListAddCallback;
     if (_selectConfigIndex >= 0)
     {
         if (_selectConfigIndex >= TSDatabaseUtils.TableConfigSerializeData.TableConfigList.Count)
         {
             _selectConfigIndex = 0;
         }
         else
         {
             _tempTableConfig = TSDatabaseUtils.TableConfigSerializeData.TableConfigList[_selectConfigIndex];
             _typeInfoList    = new ReorderableList(_tempTableConfig.FieldList, typeof(FieldConfig), true, true, true, false);
             _typeInfoList.drawHeaderCallback  = TypeInfoListDrawHeaderCallback;
             _typeInfoList.drawElementCallback = TypeInfoListDrawElementCallback;
             _typeInfoList.elementHeight       = 80;
         }
     }
 }
 void OnDestroy()
 {
     try
     {
         TSDatabaseUtils.SavaGlobalData();
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
Exemple #3
0
 private void OnDestroy()
 {
     try
     {
         EditorUtility.SetDirty(_excelConfig);
         TSDatabaseUtils.SavaGlobalData();
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
Exemple #4
0
    /// <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(LanguageUtils.DataSave, EditorGUIStyle.MiddleButtonStyle, GUILayout.ExpandHeight(true), GUILayout.Width(100)))
        {
            this.ShowNotification(new GUIContent(LanguageUtils.DataSaving));
            _primaryKeyInfo.Values.Clear();
            for (int i = 0; i < _serializeData.DataList.Count; i++)
            {
                string value = _serializeData.DataList[i].Id.ToString();
                if (!_primaryKeyInfo.Values.ContainsKey(value))
                {
                    _primaryKeyInfo.Values.Add(value, 1);
                }
                else
                {
                    _primaryKeyInfo.Values[value]++;
                }
            }
            TSDatabaseUtils.SavaGlobalData();
            EditorUtility.SetDirty(_serializeData);
            AssetDatabase.SaveAssets();
            this.RemoveNotification();
            EditorUtility.DisplayDialog(LanguageUtils.DataSave, "Success", "Ok");
        }

        GUILayout.FlexibleSpace();
        if (GUILayout.Button(LanguageUtils.CreateListAdd, EditorGUIStyle.MiddleButtonStyle, GUILayout.ExpandHeight(true), GUILayout.Width(100)))
        {
            Test data = new Test();
            _serializeData.DataList.Add(data);
            if (_primaryKeyInfo.Values.ContainsKey(data.Id.ToString()))
            {
                _primaryKeyInfo.Values[data.Id.ToString()]++;
            }
            else
            {
                _primaryKeyInfo.Values.Add(data.Id.ToString(), 1);
            }
            _pageMaxNum = (_serializeData.DataList.Count / _excelConfig.ShowCount);
            if (_serializeData.DataList.Count % _excelConfig.ShowCount > 0)
            {
                _pageMaxNum++;
            }
            _pageNum = 1;
        }
        GUILayout.Space(-5);

        GUILayout.EndHorizontal();
    }
    private void HeadGUI()
    {
        GUI.color = new Color(0.8f, 0.8f, 0.8f);
        GUILayout.BeginHorizontal("OL Title");
        GUI.color = Color.white;
        GUILayout.Label(LanguageUtils.SettingHead);
        GUILayout.FlexibleSpace();

        if (GUILayout.Button(LanguageUtils.CommonSaveSetting))
        {
            TSDatabaseUtils.SavaGlobalData();
        }
        GUILayout.EndHorizontal();
    }
 void OnEnable()
 {
     if (_selectConfigIndex >= 0)
     {
         if (_selectConfigIndex >= TSDatabaseUtils.TableConfigSerializeData.TableConfigList.Count)
         {
             _selectConfigIndex = 0;
         }
         else
         {
             _tempTableConfig = TSDatabaseUtils.TableConfigSerializeData.TableConfigList[_selectConfigIndex];
         }
     }
     _enumArray = TSDatabaseUtils.GetEnums();
 }
Exemple #7
0
    private void ImportData(ExportDto dto)
    {
        string fileName = EditorUtility.OpenFilePanel("", "", "txt");

        if (!string.IsNullOrEmpty(fileName))
        {
            List <FieldConfig> importFieldConfigList = new List <FieldConfig>();
            for (int i = 0; i < dto.CurrentConfig.FieldList.Count; i++)
            {
                if (dto.CurrentConfig.FieldList[i].FieldName == dto.CurrentConfig.PrimaryKey)
                {
                    if (dto.CurrentConfig.FieldList[i].IsExport == false)
                    {
                        if (EditorUtility.DisplayDialog("Error", "PrimaryKey 没有导出", "OK"))
                        {
                            return;
                        }
                    }
                }
                if (dto.CurrentConfig.FieldList[i].IsExport)
                {
                    importFieldConfigList.Add(dto.CurrentConfig.FieldList[i]);
                }
            }
            int      count   = importFieldConfigList.Count;
            string[] allLine = File.ReadAllLines(fileName);
            if (allLine.Length < 1)
            {
                if (EditorUtility.DisplayDialog("Error", "File Error", "OK"))
                {
                    return;
                }
            }
            string[] fieldArray = allLine[0].Split(new char[] { '\t' }, StringSplitOptions.RemoveEmptyEntries);
            if (fieldArray.Length != count)
            {
                Debug.LogError("fieldArray.Length");
                if (EditorUtility.DisplayDialog("Error", "File Error", "OK"))
                {
                    return;
                }
            }
            ScriptableObject assetObj = AssetDatabase.LoadAssetAtPath <ScriptableObject>(dto.CurrentConfig.DataPath);
            object           items    = assetObj.GetType().GetField("DataList").GetValue(assetObj);
            if (items == null)
            {
                if (EditorUtility.DisplayDialog("Error", "Unity data is null", "OK"))
                {
                    return;
                }
            }

            Assembly assembly    = assetObj.GetType().Assembly;
            Type     itemType    = assembly.GetType(dto.CurrentConfig.TableName);
            object   targetItems = Activator.CreateInstance(typeof(List <>).MakeGenericType(itemType));

            MethodInfo addMethod  = items.GetType().GetMethod("Add");
            MethodInfo getMethod  = items.GetType().GetMethod("get_Item");
            int        orginCount = (int)items.GetType().GetProperty("Count").GetValue(items, null);

            if (itemType == null)
            {
                if (EditorUtility.DisplayDialog("Error", "Table type Error", "OK"))
                {
                    return;
                }
            }
            //清空所有主键重新键入
            if (TSDatabaseUtils.PrimaryKeySerializeData.PrimaryKeyDic.ContainsKey(dto.CurrentConfig.TableName))
            {
                TSDatabaseUtils.PrimaryKeySerializeData.PrimaryKeyDic[dto.CurrentConfig.TableName].Values.Clear();
            }
            else
            {
                TSDatabaseUtils.PrimaryKeySerializeData.PrimaryKeyDic.Add(dto.CurrentConfig.TableName, new PrimaryKeyInfo());
                TSDatabaseUtils.PrimaryKeySerializeData.PrimaryKeyDic[dto.CurrentConfig.TableName].TableName   = dto.CurrentConfig.TableName;
                TSDatabaseUtils.PrimaryKeySerializeData.PrimaryKeyDic[dto.CurrentConfig.TableName].PrimaryKey  = dto.CurrentConfig.PrimaryKey;
                TSDatabaseUtils.PrimaryKeySerializeData.PrimaryKeyDic[dto.CurrentConfig.TableName].PrimaryType = dto.CurrentConfig.PrimaryType;
                TSDatabaseUtils.PrimaryKeySerializeData.PrimaryKeyDic[dto.CurrentConfig.TableName].Values      = new Dictionary <string, int>();
            }

            string keyName  = dto.CurrentConfig.PrimaryKey;
            int    keyIndex = 0;
            for (int i = 0; i < count; i++)
            {
                if (fieldArray[i] == dto.CurrentConfig.PrimaryKey)
                {
                    keyIndex = i;
                    break;
                }
            }
            EditorUtility.DisplayProgressBar("开始导入", "正在导入0/" + (allLine.Length - 1), 0f);
            try
            {
                int begin = 1;
                for (; begin < allLine.Length; begin++)
                {
                    string[] contentArray = allLine[begin].Split(new char[] { '\t' }, StringSplitOptions.RemoveEmptyEntries);
                    if (contentArray.Length > count)
                    {
                        continue;
                    }
                    object o        = null;
                    object keyValue = null;
                    //找到主键ID 一样的数据
                    for (int j = 0; j < orginCount; j++)
                    {
                        o        = getMethod.Invoke(items, new object[] { j });
                        keyValue = o.GetType().GetField(keyName).GetValue(o);
                        if (keyValue.ToString() == contentArray[keyIndex])
                        {
                            break;
                        }
                        else
                        {
                            o = null;
                        }
                    }
                    //如果原表中没有查询到,则创建新的
                    if (o == null)
                    {
                        o = assembly.CreateInstance(itemType.FullName);
                    }

                    for (int i = 0; i < importFieldConfigList.Count; i++)
                    {
                        FieldConfig fieldConfig = importFieldConfigList[i];
                        ///如果是Unity对象类型则不赋值
                        switch (fieldConfig.FieldType)
                        {
                        case "Sprite":
                        case "Texture":
                        case "GameObject":
                        case "Texture2D":
                            continue;

                        case "List":
                            switch (fieldConfig.GenericType)
                            {
                            case "Sprite":
                            case "Texture":
                            case "GameObject":
                            case "Texture2D":
                                continue;
                            }
                            break;
                        }
                        o.GetType().GetField(fieldConfig.FieldName).SetValue(o, GetObject(fieldConfig, contentArray[i], assembly, fieldConfig.FieldType));
                        if (keyName == fieldConfig.FieldName)
                        {
                            keyValue = o.GetType().GetField(fieldConfig.FieldName).GetValue(o);
                        }
                    }

                    addMethod.Invoke(targetItems, new object[] { o });
                    if (TSDatabaseUtils.PrimaryKeySerializeData.PrimaryKeyDic[dto.CurrentConfig.TableName].Values.ContainsKey(keyValue.ToString()))
                    {
                        TSDatabaseUtils.PrimaryKeySerializeData.PrimaryKeyDic[dto.CurrentConfig.TableName].Values[keyValue.ToString()]++;
                    }
                    else
                    {
                        TSDatabaseUtils.PrimaryKeySerializeData.PrimaryKeyDic[dto.CurrentConfig.TableName].Values.Add(keyValue.ToString(), 1);
                    }
                    EditorUtility.DisplayProgressBar("开始导入", "正在导入" + (begin - 1) + "/" + (allLine.Length - 1), (begin - 1) * 1f / (allLine.Length - 1));
                    System.Threading.Thread.Sleep(10);
                }
                assetObj.GetType().GetField("DataList").SetValue(assetObj, targetItems);
                EditorUtility.SetDirty(assetObj);
                TSDatabaseUtils.SavaGlobalData();
                EditorUtility.ClearProgressBar();
                EditorUtility.DisplayDialog("成功", "导入成功!", "OK");
            }
            catch (Exception ex)
            {
                EditorUtility.ClearProgressBar();
                throw ex;
            }
        }
        else
        {
            if (EditorUtility.DisplayDialog("Error", "Path is Error", "OK"))
            {
                return;
            }
        }
    }
 private void WriteConfig()
 {
     TSDatabaseUtils.SavaGlobalData();
     AssetDatabase.SaveAssets();
 }
    /// <summary>
    /// 显示表格中的字段详情
    /// Show field details in the table
    /// </summary>
    private void ShowConfigInfo()
    {
        _infoScollViewVec = GUILayout.BeginScrollView(_infoScollViewVec, false, false, GUIStyle.none, GUI.skin.verticalScrollbar);
        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();//Name
                    {
                        GUILayout.Label(LanguageUtils.CreateInfoColumnName, GUILayout.Width(INFO_LABEL_WIDTH + 5));
                        fieldConfig.FieldName = GUILayout.TextField(fieldConfig.FieldName, GUILayout.Width(INFO_INPUT_WIDTH));
                        GUILayout.Label(LanguageUtils.CreateInfoDescription, GUILayout.Width(INFO_LABEL_WIDTH + 15));
                        fieldConfig.Description = GUILayout.TextField(fieldConfig.Description, GUILayout.Width(INFO_INPUT_WIDTH));
                        GUILayout.FlexibleSpace();
                        if (GUILayout.Button(LanguageUtils.CommonDelete, "OL Minus"))
                        {
                            removeList.Add(fieldConfig);
                        }
                        GUILayout.EndHorizontal();
                    }

                    GUILayout.Space(5);

                    GUILayout.BeginHorizontal();//Type
                    {
                        GUILayout.Label(LanguageUtils.CreateInfoType, GUILayout.Width(INFO_LABEL_WIDTH + 5));
                        int baseIndex = EditorGUILayout.Popup(fieldConfig.FieldIndex, TSDatabaseUtils.BaseType, GUILayout.Width(INFO_INPUT_WIDTH));
                        if (baseIndex != fieldConfig.FieldIndex)
                        {
                            fieldConfig.FieldIndex = baseIndex;
                            fieldConfig.FieldType  = TSDatabaseUtils.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(LanguageUtils.CreateInfoItemType, GUILayout.Width(INFO_LABEL_WIDTH + 15));
                            int collectionIndex = EditorGUILayout.Popup(fieldConfig.GenericIndex, TSDatabaseUtils.GenericType, GUILayout.Width(INFO_INPUT_WIDTH));
                            if (collectionIndex != fieldConfig.GenericIndex)
                            {
                                fieldConfig.GenericIndex = collectionIndex;
                                fieldConfig.GenericType  = TSDatabaseUtils.GenericType[collectionIndex];
                                if (fieldConfig.GenericType == "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 == "enum" || (fieldConfig.FieldType == "List" && fieldConfig.GenericType == "enum"))
                        {
                            GUILayout.Label(LanguageUtils.CreateInfoEnumType, GUILayout.Width(INFO_LABEL_WIDTH + 15));
                            if (_enumArray.Length == 0)
                            {
                                GUILayout.Label(LanguageUtils.CreateInfoNotEnum, GUILayout.Width(INFO_LABEL_WIDTH + 5));
                                fieldConfig.EnumName = "";
                            }
                            else
                            {
                                fieldConfig.EnumIndex = EditorGUILayout.Popup(fieldConfig.EnumIndex, _enumArray, GUILayout.Width(INFO_INPUT_WIDTH));
                                fieldConfig.EnumName  = _enumArray[fieldConfig.EnumIndex];
                            }
                        }
                        GUILayout.EndHorizontal();
                    }
                    GUILayout.Space(5);

                    GUILayout.BeginHorizontal();//Config
                    {
                        if ((fieldConfig.FieldType == "List" && (fieldConfig.GenericType == "int" || fieldConfig.GenericType == "string")) || (fieldConfig.FieldType == "int" || fieldConfig.FieldType == "string"))
                        {
                            GUILayout.Label(LanguageUtils.CreateInfoForeignKey, GUILayout.Width(INFO_LABEL_WIDTH - 20));
                            fieldConfig.HasForeignKey = GUILayout.Toggle(fieldConfig.HasForeignKey, "", GUILayout.Width(15));
                            if (fieldConfig.HasForeignKey)
                            {
                                GUILayout.Space(5);
                                string[] keys = TSDatabaseUtils.GetForeignKey(_tempTableConfig, fieldConfig.GenericType);
                                if (keys.Length == 1)
                                {
                                    fieldConfig.ForeignKeyIndex = 0;
                                    fieldConfig.ForeignKey      = "";
                                    keys = new string[0];
                                    EditorGUILayout.Popup(fieldConfig.ForeignKeyIndex, keys, GUILayout.Width(INFO_INPUT_WIDTH));
                                }
                                else
                                {
                                    fieldConfig.ForeignKeyIndex = EditorGUILayout.Popup(fieldConfig.ForeignKeyIndex, keys, GUILayout.Width(INFO_INPUT_WIDTH));
                                    fieldConfig.ForeignKey      = keys[fieldConfig.ForeignKeyIndex];
                                }
                            }
                            else
                            {
                                GUILayout.Space(INFO_INPUT_WIDTH + 9);
                            }
                        }
                        else
                        {
                            fieldConfig.HasForeignKey = false;
                        }
                        GUILayout.Label(LanguageUtils.CreateInfoExport, GUILayout.Width(INFO_LABEL_WIDTH + 20));
                        fieldConfig.IsExport = GUILayout.Toggle(fieldConfig.IsExport, "", GUILayout.Width(20));
                        GUILayout.EndHorizontal();
                    }

                    GUILayout.EndVertical();
                }
                GUILayout.EndHorizontal();
            }
        }

        if (removeList.Count > 0)
        {
            for (int i = 0; i < removeList.Count; i++)
            {
                _tempTableConfig.FieldList.Remove(removeList[i]);
            }
            WriteConfig();
        }

        GUILayout.EndScrollView();
    }
    /// <summary>
    /// 显示类型具体信息
    /// Display the details of the form
    /// </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(LanguageUtils.CreateInfoTitle);
            GUILayout.FlexibleSpace();
            if (GUILayout.Button(LanguageUtils.CreateInfoAddField, "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(LanguageUtils.CreateInfoTableName, GUILayout.Width(INFO_LABEL_WIDTH));
            _tempTableConfig.TableName = GUILayout.TextField(_tempTableConfig.TableName, GUILayout.Width(INFO_INPUT_WIDTH));
            GUILayout.Label(LanguageUtils.CreateInfoDescription, GUILayout.Width(INFO_LABEL_WIDTH));
            _tempTableConfig.Description = GUILayout.TextField(_tempTableConfig.Description, GUILayout.Width(INFO_INPUT_WIDTH));
            GUILayout.Label(LanguageUtils.CreateInfoPrimaryKey, GUILayout.Width(INFO_LABEL_WIDTH));
            string[] keys = TSDatabaseUtils.GetPrimaryKey(_tempTableConfig);
            if (keys.Length == 1)
            {
                EditorGUILayout.Popup(0, new string[0], GUILayout.Width(INFO_INPUT_WIDTH));
            }
            else
            {
                _tempTableConfig.PrimaryIndex = EditorGUILayout.Popup(_tempTableConfig.PrimaryIndex, keys, GUILayout.Width(INFO_INPUT_WIDTH));

                _tempTableConfig.PrimaryKey = keys[_tempTableConfig.PrimaryIndex];
                for (int i = 0; i < _tempTableConfig.FieldList.Count; i++)
                {
                    if (_tempTableConfig.FieldList[i].FieldName == _tempTableConfig.PrimaryKey)
                    {
                        _tempTableConfig.PrimaryType = _tempTableConfig.FieldList[i].FieldType;
                        break;
                    }
                }
            }
            //}
            GUILayout.FlexibleSpace();
            if (GUILayout.Button(LanguageUtils.CommonSaveSetting))
            {
                WriteConfig();
            }
            GUILayout.Space(10);
            GUILayout.EndHorizontal();
            GUILayout.Space(5);
            ShowConfigInfo();
            GUILayout.FlexibleSpace();
            GUILayout.BeginHorizontal();
            if (GUILayout.Button(LanguageUtils.CreateInfoGenerateScript))
            {
                GenerateCode();
            }
            if (GUILayout.Button(LanguageUtils.CreateInfoSaveAs))
            {
                _tempTableConfig.CodePath = "";
                _tempTableConfig.DataPath = "";
                GenerateCode();
            }
            GUILayout.EndVertical();
            GUILayout.EndArea();
            GUILayout.EndVertical();

            GUILayout.EndArea();
        }
    }
Exemple #11
0
    private void TypeInfoListDrawElementCallback(Rect rect, int index, bool isActive, bool isFocused)
    {
        if (index < _tempTableConfig.FieldList.Count)
        {
            FieldConfig fieldConfig = _tempTableConfig.FieldList[index];
            //EditorGUI.DrawRect(rect,Color.black);

            #region 初始化几个Rect

            Rect guiRect = rect;
            guiRect.height -= 5;
            GUI.Label(guiRect, "", "OL box");

            Rect oneRect = guiRect;
            oneRect.y      += 10;
            oneRect.height -= 10;
            oneRect.x      += 5;
            oneRect.width  -= 5;

            Rect twoRect = guiRect;
            twoRect.y      += 35;
            twoRect.height -= 35;
            twoRect.x      += 5;
            twoRect.width  -= 5;

            Rect threeRect = guiRect;
            threeRect.y      += 55;
            threeRect.height -= 55;
            threeRect.x      += 5;
            threeRect.width  -= 5;

            #endregion

            #region 第一行

            Rect columnLabelRect = new Rect(oneRect.xMin, oneRect.yMin, INFO_LABEL_WIDTH + 10, 15);
            EditorGUI.LabelField(columnLabelRect, LanguageUtils.CreateInfoColumnName);

            Rect columnTextFieldRect = new Rect(columnLabelRect.xMax, oneRect.yMin, INFO_INPUT_WIDTH, 15);
            fieldConfig.FieldName = EditorGUI.TextField(columnTextFieldRect, fieldConfig.FieldName);

            Rect desLabelRect = new Rect(columnTextFieldRect.xMax + 10, oneRect.yMin, INFO_LABEL_WIDTH + 10, 15);
            EditorGUI.LabelField(desLabelRect, LanguageUtils.CreateInfoDescription);

            Rect desTextFieldRect = new Rect(desLabelRect.xMax, oneRect.yMin, INFO_INPUT_WIDTH, 15);
            fieldConfig.Description = EditorGUI.TextField(desTextFieldRect, fieldConfig.Description);

            Rect exportLabelRect = new Rect(desTextFieldRect.xMax + 10, oneRect.yMin, INFO_LABEL_WIDTH + 10, 15);
            EditorGUI.LabelField(exportLabelRect, LanguageUtils.CreateInfoExport);

            Rect exportToggleRect = new Rect(exportLabelRect.xMax, oneRect.yMin, 20, 15);
            fieldConfig.IsExport = EditorGUI.Toggle(exportToggleRect, fieldConfig.IsExport);


            Rect deleteButtonRect = new Rect(oneRect.xMax - 25, oneRect.yMin, 30, 15);
            if (GUI.Button(deleteButtonRect, "", "OL Minus"))
            {
                if (EditorUtility.DisplayDialog("警告", "是否删除?", "是", "否"))
                {
                    _tempTableConfig.FieldList.RemoveAt(index);
                    Repaint();
                }
            }

            #endregion

            #region 第二行

            Rect mainTypeLabelRect = new Rect(twoRect.xMin, twoRect.yMin, INFO_LABEL_WIDTH + 10, 15);
            EditorGUI.LabelField(mainTypeLabelRect, LanguageUtils.CreateInfoType);

            Rect mainTypePopupRect = new Rect(mainTypeLabelRect.xMax, twoRect.yMin, INFO_INPUT_WIDTH, 15);
            int  baseIndex         = EditorGUI.Popup(mainTypePopupRect, fieldConfig.FieldIndex, TSDatabaseUtils.BaseType);
            if (baseIndex != fieldConfig.FieldIndex)
            {
                fieldConfig.FieldIndex = baseIndex;
                fieldConfig.FieldType  = TSDatabaseUtils.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")
            {
                Rect listTypeLabelRect = new Rect(mainTypePopupRect.xMax + 10, twoRect.yMin, INFO_LABEL_WIDTH + 10, 15);
                EditorGUI.LabelField(listTypeLabelRect, LanguageUtils.CreateInfoItemType);

                Rect listTypePopupRect = new Rect(listTypeLabelRect.xMax, twoRect.yMin, INFO_INPUT_WIDTH, 15);
                int  collectionIndex   = EditorGUI.Popup(listTypePopupRect, fieldConfig.GenericIndex, TSDatabaseUtils.GenericType);
                if (collectionIndex != fieldConfig.GenericIndex)
                {
                    fieldConfig.GenericIndex = collectionIndex;
                    fieldConfig.GenericType  = TSDatabaseUtils.GenericType[collectionIndex];
                    if (fieldConfig.GenericType == "enum" && !string.IsNullOrEmpty(fieldConfig.EnumName))
                    {
                        for (int j = 0; j < _enumArray.Length; j++)
                        {
                            if (fieldConfig.EnumName == _enumArray[j])
                            {
                                fieldConfig.EnumIndex = j;
                                break;
                            }
                        }
                    }
                }
                if (fieldConfig.GenericType == "enum")
                {
                    ShowEnum(listTypePopupRect, fieldConfig);
                }
            }
            else if (fieldConfig.FieldType == "enum")
            {
                ShowEnum(mainTypePopupRect, fieldConfig);
            }
            #endregion

            #region 第三行

            if ((fieldConfig.FieldType == "List" && (fieldConfig.GenericType == "int" || fieldConfig.GenericType == "string")) || (fieldConfig.FieldType == "int" || fieldConfig.FieldType == "string"))
            {
                Rect foreignKeyLabelRect = new Rect(threeRect.xMin, threeRect.yMin, INFO_LABEL_WIDTH - 20, 15);
                EditorGUI.LabelField(foreignKeyLabelRect, LanguageUtils.CreateInfoForeignKey);

                Rect foreignKeyToggleRect = new Rect(foreignKeyLabelRect.xMax + 5, threeRect.yMin, 15, 15);
                fieldConfig.HasForeignKey = EditorGUI.Toggle(foreignKeyToggleRect, fieldConfig.HasForeignKey);
                if (fieldConfig.HasForeignKey)
                {
                    Rect     foreignKeyPopupRect = new Rect(foreignKeyToggleRect.xMax + 10, threeRect.yMin, INFO_INPUT_WIDTH, 15);
                    string[] keys = TSDatabaseUtils.GetForeignKey(_tempTableConfig, fieldConfig.GenericType);
                    //if (keys.Length == 1)
                    //{
                    //    fieldConfig.ForeignKeyIndex = 0;
                    //    fieldConfig.ForeignKey = "";
                    //    keys = new string[0];
                    //    EditorGUI.Popup(foreignKeyPopupRect,fieldConfig.ForeignKeyIndex, keys);
                    //}
                    //else
                    //{
                    fieldConfig.ForeignKeyIndex = EditorGUI.Popup(foreignKeyPopupRect, fieldConfig.ForeignKeyIndex, keys);
                    if (keys.Length > fieldConfig.ForeignKeyIndex && fieldConfig.ForeignKeyIndex >= 0)
                    {
                        fieldConfig.ForeignKey = keys[fieldConfig.ForeignKeyIndex];
                    }
                    //}
                }
                else
                {
                    GUILayout.Space(INFO_INPUT_WIDTH + 9);
                }
            }
            else
            {
                fieldConfig.HasForeignKey = false;
            }

            #endregion
        }
    }
Exemple #12
0
 private void CheckPlayerData()
 {
     for (int i = 0; i < TSDatabaseUtils.TableConfigSerializeData.TableConfigList.Count; i++)
     {
         if (TSDatabaseUtils.TableConfigSerializeData.TableConfigList[i].TableName == "Test")
         {
             _tableConfig = TSDatabaseUtils.TableConfigSerializeData.TableConfigList[i];
             break;
         }
     }
     if (string.IsNullOrEmpty(_tableConfig.DataPath))
     {
         string path = EditorUtility.SaveFilePanelInProject(LanguageUtils.CommonSaveFile, _tableConfig.TableName + ".asset", "asset", "");
         if (string.IsNullOrEmpty(path))
         {
             if (EditorUtility.DisplayDialog(LanguageUtils.CommonSaveFailed, LanguageUtils.CommonNullPath, "OK"))
             {
                 return;
             }
         }
         _tableConfig.DataPath = path;
         _serializeData        = ScriptableObject.CreateInstance <TestSerializeData>();
         TSDatabaseUtils.PrimaryKeySerializeData.PrimaryKeyDic.Add(_tableConfig.TableName, new PrimaryKeyInfo());
         _primaryKeyInfo             = TSDatabaseUtils.PrimaryKeySerializeData.PrimaryKeyDic[_tableConfig.TableName];
         _primaryKeyInfo.TableName   = _tableConfig.TableName;
         _primaryKeyInfo.PrimaryKey  = _tableConfig.PrimaryKey;
         _primaryKeyInfo.PrimaryType = _tableConfig.PrimaryType;
         _primaryKeyInfo.Values      = new Dictionary <string, int>();
         TSDatabaseUtils.SavaGlobalData();
         AssetDatabase.CreateAsset(_serializeData, path);
         AssetDatabase.SaveAssets();
         AssetDatabase.Refresh();
     }
     else
     {
         _serializeData  = AssetDatabase.LoadAssetAtPath <TestSerializeData>(_tableConfig.DataPath);
         _primaryKeyInfo = TSDatabaseUtils.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].Id.ToString();
                 if (!_primaryKeyInfo.Values.ContainsKey(value))
                 {
                     _primaryKeyInfo.Values.Add(value, 1);
                 }
                 else
                 {
                     _primaryKeyInfo.Values[value]++;
                 }
             }
             TSDatabaseUtils.SavaGlobalData();
         }
     }
     _dataList = new List <Test>();
     _dataList.AddRange(_serializeData.DataList);
 }
Exemple #13
0
    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();
        Test 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.GroupBoxStyle, GUILayout.Width(_areaWidht + 50), GUILayout.MinHeight(30));

            GUILayout.BeginHorizontal(EditorGUIStyle.GroupBoxStyle, GUILayout.Width(50), GUILayout.ExpandHeight(true));
            GUILayout.BeginVertical();
            if (GUILayout.Button("", EditorGUIStyle.TableMinusButtonStyle))
            {
                removeData = _dataList[i];
            }
            GUILayout.Label((i + 1).ToString(), EditorGUIStyle.TableNumberStyle, GUILayout.MaxWidth(50));
            GUILayout.EndVertical();
            GUILayout.EndHorizontal();

            float columnsWidth = 0;


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

            columnsWidth = _excelConfig.ColumnsWidth[1];
            GUILayout.BeginHorizontal(EditorGUIStyle.GroupBoxStyle, GUILayout.Width(columnsWidth), GUILayout.MaxWidth(columnsWidth), GUILayout.ExpandHeight(true));
            _dataList[i].Str = (string)TSDatabaseUtils.RenderFieldInfoControl(columnsWidth, _tableConfig.FieldList[1].FieldType, _dataList[i].Str);
            GUILayout.EndHorizontal();

            columnsWidth = _excelConfig.ColumnsWidth[2];
            GUILayout.BeginHorizontal(EditorGUIStyle.GroupBoxStyle, GUILayout.Width(columnsWidth), GUILayout.MaxWidth(columnsWidth), GUILayout.ExpandHeight(true));
            _dataList[i].Vec2 = (Vector2)TSDatabaseUtils.RenderFieldInfoControl(columnsWidth, _tableConfig.FieldList[2].FieldType, _dataList[i].Vec2);
            GUILayout.EndHorizontal();

            columnsWidth = _excelConfig.ColumnsWidth[3];
            GUILayout.BeginHorizontal(EditorGUIStyle.GroupBoxStyle, GUILayout.Width(columnsWidth), GUILayout.MaxWidth(columnsWidth), GUILayout.ExpandHeight(true));
            _dataList[i].Quat = (Quaternion)TSDatabaseUtils.RenderFieldInfoControl(columnsWidth, _tableConfig.FieldList[3].FieldType, _dataList[i].Quat);
            GUILayout.EndHorizontal();

            columnsWidth = _excelConfig.ColumnsWidth[4];
            GUILayout.BeginHorizontal(EditorGUIStyle.GroupBoxStyle, GUILayout.Width(columnsWidth), GUILayout.MaxWidth(columnsWidth), GUILayout.ExpandHeight(true));
            _dataList[i].ListTest = (List <int>)TSDatabaseUtils.RenderFieldInfoControl(columnsWidth, _tableConfig.FieldList[4].FieldType, _dataList[i].ListTest);
            GUILayout.EndHorizontal();

            columnsWidth = _excelConfig.ColumnsWidth[5];
            GUILayout.BeginHorizontal(EditorGUIStyle.GroupBoxStyle, GUILayout.Width(columnsWidth), GUILayout.MaxWidth(columnsWidth), GUILayout.ExpandHeight(true));
            _dataList[i].Obj = (GameObject)TSDatabaseUtils.RenderFieldInfoControl(columnsWidth, _tableConfig.FieldList[5].FieldType, _dataList[i].Obj);
            GUILayout.EndHorizontal();

            columnsWidth = _excelConfig.ColumnsWidth[6];
            GUILayout.BeginHorizontal(EditorGUIStyle.GroupBoxStyle, GUILayout.Width(columnsWidth), GUILayout.MaxWidth(columnsWidth), GUILayout.ExpandHeight(true));
            _dataList[i].EnumList = (List <TestEnum>)TSDatabaseUtils.RenderFieldInfoControl(columnsWidth, _tableConfig.FieldList[6].FieldType, _dataList[i].EnumList);
            GUILayout.EndHorizontal();



            for (int index = _tableConfig.FieldList.Count; index < _excelConfig.ColumnsWidth.Count; index++)
            {
                GUILayout.BeginHorizontal(EditorGUIStyle.GroupBoxStyle, GUILayout.Width(_excelConfig.ColumnsWidth[index]), 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.Id.ToString()]--;
        }
        GUILayout.Space(100);
        GUILayout.EndVertical();
        GUILayout.EndScrollView();
        GUILayout.EndArea();
    }