Files
bl/logic/service/fight/battle/skill/effect/manger.go
昔念 d7b4fb88c8 refactor(logic): 删除战斗系统相关代码
- 移除 battle 目录下的所有文件
- 删除 fight/battle 目录及其内容
- 更新 go.mod 和 go.sum 文件,移除相关依赖
2025-08-25 01:48:42 +08:00

47 lines
832 B
Go

package effect
import "blazing/logic/service/fight/battle/node"
type EffectManager struct {
effects []Effect
}
func NewEffectManager() *EffectManager {
return &EffectManager{}
}
func (m *EffectManager) Register(e Effect) {
m.effects = append(m.effects, e)
}
// 执行某时点效果
func (m *EffectManager) Apply(trigger node.EnumEffectTrigger, ctx *EffectContext) {
var next func(i int)
next = func(i int) {
if i < len(m.effects) {
if m.effects[i].Trigger() == trigger {
m.effects[i].Apply(ctx, func() { next(i + 1) })
} else {
next(i + 1)
}
}
}
next(0)
// 清理过期效果
var alive []Effect
for _, e := range m.effects {
if e.Alive() {
alive = append(alive, e)
}
}
m.effects = alive
}
// 回合 tick
func (m *EffectManager) Tick() {
for _, e := range m.effects {
e.Tick()
}
}