private bool CheckModifiValueCallBack(object t) { if (t is TableConfigFieldInfo) { TableConfigFieldInfo info = (TableConfigFieldInfo)t; if (string.IsNullOrEmpty(info.fieldName)) { return(false); } if (CheckIsNameRepeat(info)) { return(false); } string df = DataConfigUtils.ObjectValue2TableString(info.defultValue); if (string.IsNullOrEmpty(df)) { return(false); } } return(true); }
/// <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); } }
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); }
/// <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)); } }
/// <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); }); }
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); } }
/// <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); }