gitee.com/zhongguo168a/gocodes@v0.0.0-20230609140523-e1828349603f/datax/modifyx/modify-modify.go (about)

     1  package modifyx
     2  
     3  type IModify interface {
     4  	// 被修正的字段路径
     5  	Path() string
     6  	// 修正是否生效
     7  	Valid(ctx interface{}) bool
     8  	// 修正后的值
     9  	Value(ctx interface{}, origin interface{}) (last interface{})
    10  }
    11  
    12  //
    13  //type IModifyFloat interface {
    14  //	IModify
    15  //	Kind() string
    16  //	Value() float64
    17  //}
    18  //
    19  //type Modify struct {
    20  //	// 例如: CEffectDamage/Amount
    21  //	key string
    22  //}
    23  //
    24  //func (a *Modify) Valid() bool {
    25  //	return true
    26  //}
    27  //
    28  //func (b *Modify) SetKey(val string) *Modify {
    29  //	b.key = val
    30  //	return b
    31  //}
    32  //
    33  //func (m *Modify) Key() string {
    34  //	return m.key
    35  //}
    36  //
    37  //// 修正浮点数
    38  //type ModifyFormula struct {
    39  //	//
    40  //	Modify
    41  //	// 公式
    42  //	// Cmd arg0 arg1
    43  //	name string
    44  //	//
    45  //	args string
    46  //}
    47  //
    48  //func (b *ModifyFormula) SetName(val string) *ModifyFormula {
    49  //	b.name = val
    50  //	return b
    51  //}
    52  //
    53  //func (m *ModifyFormula) Name() string {
    54  //	return m.name
    55  //}
    56  //
    57  //func (b *ModifyFormula) SetArgs(val string) *ModifyFormula {
    58  //	b.args = val
    59  //	return b
    60  //}
    61  //
    62  //func (m *ModifyFormula) Args() string {
    63  //	return m.args
    64  //}
    65  //
    66  //// 修正浮点数
    67  //type ModifyFloat struct {
    68  //	//
    69  //	Modify
    70  //	// 修正类型
    71  //	// enums.ModifyFloatKind
    72  //	kind string
    73  //	// 修正值
    74  //	value float64
    75  //}
    76  //
    77  //func (b *ModifyFloat) SetKind(val string) *ModifyFloat {
    78  //	b.kind = val
    79  //	return b
    80  //}
    81  //
    82  //func (m *ModifyFloat) Kind() string {
    83  //	return m.kind
    84  //}
    85  //
    86  //func (b *ModifyFloat) SetValue(val float64) *ModifyFloat {
    87  //	b.value = val
    88  //	return b
    89  //}
    90  //
    91  //func (m *ModifyFloat) Value() float64 {
    92  //	return m.value
    93  //}
    94  //
    95  //var formulas = map[string]func(x interface{}, cmd string, args ...string) interface{}{}
    96  //
    97  //func RegisterFormulas(key string, f func(x interface{}, cmd string, args ...string) interface{}) {
    98  //	formulas[key] = f
    99  //}
   100  //
   101  //func CalculateModifyFormula(x float64, bonus IModifyFormula) (y float64) {
   102  //	name := bonus.Name()
   103  //	if name == "" {
   104  //		return x
   105  //	}
   106  //	f, has := formulas[name]
   107  //	if !has {
   108  //		return x
   109  //	}
   110  //	args := strings.Split(bonus.Args(), ",")
   111  //	y = f(x, name, args...).(float64)
   112  //	return
   113  //}
   114  //
   115  //func CalculateModifyFloat(x float64, bonus IModifyFloat) (y float64) {
   116  //	switch bonus.Kind() {
   117  //	case "Add":
   118  //		x += bonus.Value()
   119  //	case "Sub":
   120  //		x -= bonus.Value()
   121  //	case "Mul":
   122  //		x *= bonus.Value()
   123  //	case "Div":
   124  //		x /= bonus.Value()
   125  //	case "Set":
   126  //		x = bonus.Value()
   127  //		//case enums.BonusFixFloatKind_Formula:
   128  //		//	f, has := formulas[bonus.Formula]
   129  //		//	if has {
   130  //		//		x = f(x, params).(float64)
   131  //		//	}
   132  //	}
   133  //	y = x
   134  //	return
   135  //}