gitee.com/zhongguo168a/gocodes@v0.0.0-20230609140523-e1828349603f/datax/modifyx2/pool-modify.go (about) 1 package modifyx 2 3 type IModify interface { 4 Key() string 5 Valid() bool 6 Value(old interface{}) (last interface{}) 7 } 8 9 // 10 //// 由于公式的不可控,每次执行公式,版本号自动加一,即每次调用公式影响的字段,都会重新计算 11 //// todo: 对于某些公式只需要计算一次的情况,增加一个配置 12 //type IModifyFormula interface { 13 // IModify 14 // Name() string 15 // Args() string 16 //} 17 // 18 //type IModifyFloat interface { 19 // IModify 20 // Kind() string 21 // Value() float64 22 //} 23 // 24 //type Modify struct { 25 // // 例如: CEffectDamage/Amount 26 // key string 27 //} 28 // 29 //func (a *Modify) Valid() bool { 30 // return true 31 //} 32 // 33 //func (b *Modify) SetKey(val string) *Modify { 34 // b.key = val 35 // return b 36 //} 37 // 38 //func (m *Modify) Key() string { 39 // return m.key 40 //} 41 // 42 //// 修正浮点数 43 //type ModifyFormula struct { 44 // // 45 // Modify 46 // // 公式 47 // // Cmd arg0 arg1 48 // name string 49 // // 50 // args string 51 //} 52 // 53 //func (b *ModifyFormula) SetName(val string) *ModifyFormula { 54 // b.name = val 55 // return b 56 //} 57 // 58 //func (m *ModifyFormula) Name() string { 59 // return m.name 60 //} 61 // 62 //func (b *ModifyFormula) SetArgs(val string) *ModifyFormula { 63 // b.args = val 64 // return b 65 //} 66 // 67 //func (m *ModifyFormula) Args() string { 68 // return m.args 69 //} 70 // 71 //// 修正浮点数 72 //type ModifyFloat struct { 73 // // 74 // Modify 75 // // 修正类型 76 // // enums.ModifyFloatKind 77 // kind string 78 // // 修正值 79 // value float64 80 //} 81 // 82 //func (b *ModifyFloat) SetKind(val string) *ModifyFloat { 83 // b.kind = val 84 // return b 85 //} 86 // 87 //func (m *ModifyFloat) Kind() string { 88 // return m.kind 89 //} 90 // 91 //func (b *ModifyFloat) SetValue(val float64) *ModifyFloat { 92 // b.value = val 93 // return b 94 //} 95 // 96 //func (m *ModifyFloat) Value() float64 { 97 // return m.value 98 //} 99 // 100 //var formulas = map[string]func(x interface{}, cmd string, args ...string) interface{}{} 101 // 102 //func RegisterFormulas(key string, f func(x interface{}, cmd string, args ...string) interface{}) { 103 // formulas[key] = f 104 //} 105 // 106 //func CalculateModifyFormula(x float64, bonus IModifyFormula) (y float64) { 107 // name := bonus.Name() 108 // if name == "" { 109 // return x 110 // } 111 // f, has := formulas[name] 112 // if !has { 113 // return x 114 // } 115 // args := strings.Split(bonus.Args(), ",") 116 // y = f(x, name, args...).(float64) 117 // return 118 //} 119 // 120 //func CalculateModifyFloat(x float64, bonus IModifyFloat) (y float64) { 121 // switch bonus.Kind() { 122 // case "Add": 123 // x += bonus.Value() 124 // case "Sub": 125 // x -= bonus.Value() 126 // case "Mul": 127 // x *= bonus.Value() 128 // case "Div": 129 // x /= bonus.Value() 130 // case "Set": 131 // x = bonus.Value() 132 // //case enums.BonusFixFloatKind_Formula: 133 // // f, has := formulas[bonus.Formula] 134 // // if has { 135 // // x = f(x, params).(float64) 136 // // } 137 // } 138 // y = x 139 // return 140 //}