gitee.com/zhongguo168a/gocodes@v0.0.0-20230609140523-e1828349603f/datax/schemax/configs/ConfigTreeItem.go (about) 1 package configs 2 3 import ( 4 "gitee.com/zhongguo168a/gocodes/datax" 5 "gitee.com/zhongguo168a/gocodes/datax/arrayx" 6 "gitee.com/zhongguo168a/gocodes/datax/mapx" 7 "gitee.com/zhongguo168a/gocodes/datax/schemax" 8 ) 9 10 func NewTreeItemByConf(编号 string, conf datax.M) *ConfigTreeItem { 11 obj := &ConfigTreeItem{} 12 if conf != nil { 13 obj.L类型 = mapx.String(conf, "_type") 14 obj.M名称 = mapx.String(conf, "_name") 15 obj.F分类 = mapx.String(conf, "_catalog") 16 obj.F父编号 = mapx.String(conf, "_parent") 17 obj.M默认 = mapx.Bool(conf, "_default") 18 obj.B编辑器前缀 = mapx.String(conf, "_prefix") 19 obj.B编辑器后缀 = mapx.String(conf, "_suffix") 20 obj.W文件 = mapx.String(conf, "_file") 21 obj.D导出 = mapx.Bool(conf, "_export") 22 } 23 obj.B编号 = 编号 24 return obj 25 } 26 27 func NewTreeItem(编号 string, 类型 string) *ConfigTreeItem { 28 obj := &ConfigTreeItem{} 29 obj.L类型 = 类型 30 obj.B编号 = 编号 31 //[obj.分类编号, obj.分类] = 编号.split("@"); 32 33 return obj 34 } 35 36 type ConfigTreeItem struct { 37 38 /** 39 * 由类型和类型编号组成 40 * 格式为:分类编号@分类 41 */ 42 B编号 string 43 44 F父编号 string 45 46 原始数据 map[string]interface{} 47 48 /** 49 * 配置保存的数据 50 */ 51 数据 map[string]interface{} 52 /** 53 * 配置所在的文件路径 54 */ 55 W文件 string 56 /** 57 * 配置的分类 58 * 例如单位,技能,掉落 59 */ 60 F分类 string 61 62 /** 63 * 配置的对象类型 64 * 例如技能-攻击,技能-移动,技能-效果 65 */ 66 L类型 string 67 68 M名称 string 69 70 B编辑器前缀 string 71 72 B编辑器后缀 string 73 74 M默认 bool 75 D导出 bool 76 X修正 []string 77 } 78 79 func (c *ConfigTreeItem) T添加修正集(修正配置集 []string) { 80 for _, val := range 修正配置集 { 81 c.T添加修正(val) 82 } 83 } 84 85 func (c *ConfigTreeItem) B包含修正(修正配置编号 string) bool { 86 for _, val := range c.X修正 { 87 if val == 修正配置编号 { 88 return true 89 } 90 } 91 return false 92 } 93 94 func (c *ConfigTreeItem) T添加修正(修正配置编号 string) { 95 配置修正列表 := c.X修正 96 index := arrayx.IndexOf(len(配置修正列表), func(i int) bool { 97 return 配置修正列表[i] == 修正配置编号 98 }) 99 if index == -1 { 100 配置修正列表 = append(配置修正列表, 修正配置编号) 101 } 102 c.X修正 = 配置修正列表 103 } 104 func (c *ConfigTreeItem) S数据() map[string]interface{} { 105 return c.数据 106 } 107 108 func (c *ConfigTreeItem) GetSchema() *schemax.ClassDecl { 109 if c.L类型 == "" { 110 return nil 111 } 112 idecl := schemax.GetDeclByKey(c.L类型) 113 if idecl == nil { 114 return nil 115 } 116 return idecl.(*schemax.ClassDecl) 117 } 118 119 func (c *ConfigTreeItem) ToMap() map[string]interface{} { 120 m := datax.M{} 121 mapx.Copy(c.S数据(), m) 122 m["_type"] = c.L类型 123 m["_catalog"] = c.F分类 124 m["_parent"] = c.F父编号 125 m["_default"] = c.M默认 126 m["_prefix"] = c.B编辑器前缀 127 m["_suffix"] = c.B编辑器后缀 128 m["_file"] = c.W文件 129 m["_export"] = c.D导出 130 return c.数据 131 }