Ejemplo n.º 1
0
    /// <summary>
    /// 修改格子数据完成回调
    /// </summary>
    /// <param name="t"></param>
    private void ModificationCompleteCallBack(object t)
    {
        if (t is TableConfigFieldInfo)
        {
            TableConfigFieldInfo temp = (TableConfigFieldInfo)t;

            string field = m_currentData.TableKeys[modifiIndex.y];
            if (field != temp.fieldName)
            {
                RenameField(m_currentData, field, temp.fieldName);
                field = temp.fieldName;
            }
            // SingleData data = m_currentData[m_currentData.TableIDs[modifiIndex.y]];
            m_currentData.m_defaultValue[field] = DataConfigUtils.ObjectValue2TableString(temp.defultValue);

            if (m_currentData.m_noteValue.ContainsKey(field))
            {
                m_currentData.m_noteValue[field] = temp.description;
            }
            else
            {
                if (!string.IsNullOrEmpty(temp.description))
                {
                    m_currentData.m_noteValue.Add(field, temp.description);
                }
            }

            if (m_currentData.m_tableTypes[field] != temp.fieldValueType)
            {
                m_currentData.m_tableTypes[field] = temp.fieldValueType;
                ResetDataField(m_currentData, field, temp.fieldValueType, temp.enumType, temp.defultValue);
            }
            if (temp.fieldValueType == FieldType.Enum)
            {
                if (m_currentData.m_tableEnumTypes.ContainsKey(field))
                {
                    m_currentData.m_tableEnumTypes[field] = temp.enumType;
                }

                else
                {
                    m_currentData.m_tableEnumTypes.Add(field, temp.enumType);
                }
            }
            m_currentData.m_fieldAssetTypes[field] = temp.fieldAssetType;
        }
        else
        {
            string     field = m_currentData.TableKeys[modifiIndex.y];
            SingleData data  = m_currentData[m_currentData.TableIDs[modifiIndex.x - 1]];
            data[field] = DataConfigUtils.ObjectValue2TableString(t);
        }
    }
Ejemplo n.º 2
0
    private string GetDefaultValue(FieldType fieldValueType, string enumType, string field)
    {
        string defaultValue;

        if (!m_currentData.m_defaultValue.TryGetValue(field, out defaultValue))
        {
            Type   t   = DataConfigUtils.ConfigFieldValueType2Type(fieldValueType, enumType);
            object obj = ReflectionUtils.CreateDefultInstance(t);
            defaultValue = DataConfigUtils.ObjectValue2TableString(obj);
            m_currentData.m_defaultValue.Add(field, defaultValue);
        }

        return(defaultValue);
    }
Ejemplo n.º 3
0
    /// <summary>
    /// 添加字段
    /// </summary>
    /// <param name="info"></param>
    private static void AddField(DataTable table, TableConfigFieldInfo info)
    {
        table.TableKeys.Add(info.fieldName);
        table.m_noteValue.Add(info.fieldName, info.description);
        table.m_tableTypes.Add(info.fieldName, info.fieldValueType);
        table.m_fieldAssetTypes.Add(info.fieldName, info.fieldAssetType);
        if (info.fieldValueType == FieldType.Enum)
        {
            table.m_tableEnumTypes.Add(info.fieldName, info.enumType);
        }
        table.m_defaultValue.Add(info.fieldName, DataConfigUtils.ObjectValue2TableString(info.defultValue));

        foreach (var item in table.Values)
        {
            item.Add(info.fieldName, DataConfigUtils.ObjectValue2TableString(info.defultValue));
        }
    }
Ejemplo n.º 4
0
    /// <summary>
    /// 添加一个字段
    /// </summary>
    private void Add2FieldGUI()
    {
        GeneralDataModificationWindow.OpenWindow(this, "添加字段", new TableConfigFieldInfo(), (value) =>
        {
            TableConfigFieldInfo info = (TableConfigFieldInfo)value;
            DrawTableConfigFieldInfo(info);

            if (string.IsNullOrEmpty(info.fieldName))
            {
                EditorGUILayout.HelpBox("字段名不能为空!!", MessageType.Error);
            }
            else if (m_currentData.TableKeys.Contains(info.fieldName))
            {
                EditorGUILayout.HelpBox("字段名重复!!", MessageType.Error);
            }
            string df = DataConfigUtils.ObjectValue2TableString(info.defultValue);
            if (string.IsNullOrEmpty(df))
            {
                EditorGUILayout.HelpBox("默认值不能为空!!", MessageType.Error);
            }
            return(value);
        },
                                                 (value) =>
        {
            TableConfigFieldInfo info = (TableConfigFieldInfo)value;
            if (string.IsNullOrEmpty(info.fieldName) || m_currentData.TableKeys.Contains(info.fieldName))
            {
                return(false);
            }
            string df = DataConfigUtils.ObjectValue2TableString(info.defultValue);
            if (string.IsNullOrEmpty(df))
            {
                return(false);
            }
            return(true);
        },
                                                 (value) =>
        {
            TableConfigFieldInfo info = (TableConfigFieldInfo)value;
            AddField(m_currentData, info);
            withItemList.Add(wWith);
        });
    }
Ejemplo n.º 5
0
    static void ResetDataField(DataTable data, string key, FieldType type, string enumType, object defaultValue)
    {
        string newContent = DataConfigUtils.ObjectValue2TableString(defaultValue);

        for (int i = 0; i < data.TableIDs.Count; i++)
        {
            SingleData tmp = data[data.TableIDs[i]];

            if (tmp.ContainsKey(key))
            {
                tmp[key] = newContent;
            }
        }

        if (data.m_defaultValue.ContainsKey(key))
        {
            data.m_defaultValue[key] = newContent;
        }
        else
        {
            data.m_defaultValue.Add(key, newContent);
        }
    }
Ejemplo n.º 6
0
    /// <summary>
    /// 绘制数据修改窗口
    /// </summary>
    /// <param name="t"></param>
    /// <returns></returns>
    private object DrawModifiValueGUI(object t)
    {
        if (t is TableConfigFieldInfo)
        {
            TableConfigFieldInfo info = (TableConfigFieldInfo)t;
            DrawTableConfigFieldInfo(info);
            string df = DataConfigUtils.ObjectValue2TableString(info.defultValue);
            if (string.IsNullOrEmpty(df))
            {
                EditorGUILayout.HelpBox("默认值不能为空!!", MessageType.Error);
            }
            if (CheckIsNameRepeat(info))
            {
                EditorGUILayout.HelpBox("字段名不能重复!!", MessageType.Error);
            }
        }
        else
        {
            string     field = m_currentData.TableKeys[modifiIndex.y];
            SingleData data  = m_currentData[m_currentData.TableIDs[modifiIndex.x - 1]];

            EditorDrawGUIUtil.CanEdit = false;
            field = EditorDrawGUIUtil.DrawBaseValue("字段名", field).ToString();
            EditorDrawGUIUtil.CanEdit = true;
            GUILayout.Space(7);

            string description = GetDescription(field);
            GUILayout.Label("字段描述:" + description);

            FieldType fieldValueType = GetFieldType(modifiIndex.y, field);
            string    enumType       = GetEnumType(fieldValueType, field);

            string             defaultValue   = GetDefaultValue(fieldValueType, enumType, field);
            DataFieldAssetType fieldAssetType = GetDataFieldAssetType(field);
            GUILayout.BeginHorizontal();

            GUILayout.Label("默认值 :" + defaultValue);
            GUILayout.FlexibleSpace();

            if (GUILayout.Button("默认值", GUILayout.Width(60)))
            {
                t = DataConfigUtils.TableString2ObjectValue(defaultValue, fieldValueType, enumType);
            }
            GUILayout.EndHorizontal();

            string text = "值";
            if (fieldAssetType == DataFieldAssetType.LocalizedLanguage)
            {
                t = DrawLocalizedLanguageField(text, t);
            }
            else if (fieldAssetType == DataFieldAssetType.Prefab)
            {
                t = DrawPrefabGUI(text, t);
            }
            else if (fieldAssetType == DataFieldAssetType.Texture)
            {
                t = DrawTextureGUI(text, t);
            }
            else if (fieldAssetType == DataFieldAssetType.TableKey)
            {
                t = DrawTableGUI(text, t);
            }
            else
            {
                t = EditorDrawGUIUtil.DrawBaseValue(text, t);
            }
        }

        return(t);
    }
Ejemplo n.º 7
0
    /// <summary>
    /// 绘制每个数据格子
    /// </summary>
    /// <param name="startPos"></param>
    private void DrawGridItem(Vector2 startPos)
    {
        helpBoxStyle.fontSize = nowButtonFontSize;
        float tempHeight = 0;

        for (int i = 0; i < heightItemList.Count; i++)
        {
            float h        = heightItemList[i];
            float tempWith = 0;


            for (int j = 0; j < withItemList.Count; j++)
            {
                float w = withItemList[j];

                Vector2 size = new Vector2(w, h);
                Vector2 pos  = startPos + new Vector2(tempWith, tempHeight);

                object value   = null;
                string showStr = "";

                string    field          = m_currentData.TableKeys[j];
                FieldType fieldValueType = GetFieldType(j, field);
                string    enumType       = GetEnumType(fieldValueType, field);

                string defaultValue = GetDefaultValue(fieldValueType, enumType, field);


                if (i == 0)
                {
                    GUI.color = Color.yellow;

                    showStr = EditorDrawGUIUtil.GetFormatName(field, DataConfigUtils.ConfigFieldValueType2Type(fieldValueType, enumType), "red");
                }
                else if (i == 1)
                {
                    GUI.color = Color.cyan;

                    showStr = GetDescription(field);
                }
                else if (i == 2)
                {
                    GUI.color = Color.green;

                    showStr = defaultValue;
                }
                else
                {
                    SingleData data = m_currentData[m_currentData.TableIDs[i - 3]];

                    bool isDefault = false;
                    if (data.ContainsKey(field) && data[field] != defaultValue)
                    {
                        DataFieldAssetType fieldAssetType = GetDataFieldAssetType(field);
                        if (fieldAssetType == DataFieldAssetType.LocalizedLanguage)
                        {
                            string k = data[field];
                            if (LanguageManager.HaveKey(k))
                            {
                                showStr = LanguageManager.GetContentByKey(k);
                            }
                            else
                            {
                                showStr = k;
                            }
                        }
                        else
                        {
                            showStr = data[field];
                        }
                    }
                    else
                    {
                        showStr   = defaultValue;
                        isDefault = true;
                    }
                    if (!string.IsNullOrEmpty(searchValue))
                    {
                        showStr = ShowContainsChar(showStr, searchValue);
                    }

                    if (isDefault)
                    {
                        showStr = "<color=green>" + showStr + "</color>";
                    }
                }

                if (i == 1 || i == 2)
                {
                    GUI.Button(new Rect(pos, size), showStr, helpBoxStyle);
                }
                else
                {
                    if (selectColumnIndexs.Contains(j))
                    {
                        GUI.color = Color.magenta;
                    }
                    if (selectRowIndexs.Contains(i))
                    {
                        GUI.color = Color.cyan;
                    }
                    if (GUI.Button(new Rect(pos, size), showStr, helpBoxStyle))
                    {
                        modifiIndex = new Vector2Int(i - 2, j);
                        if (i == 0)
                        {
                            TableConfigFieldInfo f = new TableConfigFieldInfo();
                            f.fieldName      = field;
                            f.description    = m_currentData.m_noteValue.ContainsKey(field) ? m_currentData.m_noteValue[field] : "";
                            f.fieldValueType = fieldValueType;
                            f.defultValue    = DataConfigUtils.TableString2ObjectValue(defaultValue, fieldValueType, enumType);
                            f.enumType       = enumType;
                            f.fieldAssetType = GetDataFieldAssetType(field);
                            value            = f;
                        }
                        else
                        {
                            SingleData data = m_currentData[m_currentData.TableIDs[i - 3]];

                            if (data.ContainsKey(field))
                            {
                                defaultValue = data[field];
                            }
                            value = DataConfigUtils.TableString2ObjectValue(defaultValue, fieldValueType, enumType);
                        }
                        GeneralDataModificationWindow.OpenWindow(this, "修改数据", value, DrawModifiValueGUI, CheckModifiValueCallBack, ModificationCompleteCallBack);
                    }
                }

                GUI.color = Color.white;
                tempWith += w;
            }

            tempHeight += h;
        }
        helpBoxStyle.fontSize = oldButtonFontSize;
    }