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  }