perf: 优化战斗逻辑性能与内存分配

This commit is contained in:
xinian
2026-04-11 09:39:00 +08:00
parent 5bfdb5c32b
commit 5f5634d999
6 changed files with 122 additions and 52 deletions

View File

@@ -24,6 +24,7 @@ type EffectNode struct {
canStack bool // 最大叠加层数 ,正常都是不允许叠加的,除了衰弱特殊效果 ,异常和能力的叠层
isFirst bool
SideEffectArgs []int // 附加效果参数
cachedArgs []alpacadecimal.Decimal
// owner bool //是否作用自身
Success bool // 是否执行成功 成功XXX失败XXX
arget bool // 传出作用对象,默认0是自身,1是作用于对面
@@ -240,18 +241,22 @@ func (e *EffectNode) SetArgs(t *input.Input, a ...int) {
e.Input = t
if len(a) > 0 {
e.SideEffectArgs = a
e.cachedArgs = e.cachedArgs[:0]
for _, v := range a {
e.cachedArgs = append(e.cachedArgs, alpacadecimal.NewFromInt(int64(v)))
}
}
}
func (e *EffectNode) Args() []alpacadecimal.Decimal {
var ret []alpacadecimal.Decimal
for _, v := range e.SideEffectArgs {
ret = append(ret, alpacadecimal.NewFromInt(int64(v)))
if len(e.cachedArgs) == len(e.SideEffectArgs) {
return e.cachedArgs
}
return ret
e.cachedArgs = e.cachedArgs[:0]
for _, v := range e.SideEffectArgs {
e.cachedArgs = append(e.cachedArgs, alpacadecimal.NewFromInt(int64(v)))
}
return e.cachedArgs
}