feat(fight): 添加效果工厂模式支持以解决闭包变量捕获问题 - 新增initskillFactory函数用于注册效果工厂 - 修改技能效果注册逻辑从直接实例化改为工厂模式 - 解决循环中闭包捕获变量导致的潜在问题 feat(fight): 实现对手输入获取逻辑优化回合处理 - 添加roundOpponentInput方法获取对手输入 - 重构enterturn方法中的先后手逻辑 - 确保攻击方和被攻击
This commit is contained in:
@@ -158,7 +158,10 @@ func registerSelfDamageSkillHitEffects() {
|
||||
}
|
||||
|
||||
for effectID, handler := range handlers {
|
||||
initskill(effectID, newSkillHitRegistrarEffect(handler))
|
||||
currentHandler := handler
|
||||
initskillFactory(effectID, func() input.Effect {
|
||||
return newSkillHitRegistrarEffect(currentHandler)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
@@ -223,7 +226,10 @@ func registerSelfDamageOnSkillEffects() {
|
||||
}
|
||||
|
||||
for effectID, handler := range handlers {
|
||||
initskill(effectID, newOnSkillRegistrarEffect(handler))
|
||||
currentHandler := handler
|
||||
initskillFactory(effectID, func() input.Effect {
|
||||
return newOnSkillRegistrarEffect(currentHandler)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
@@ -305,7 +311,10 @@ func registerSelfDamageSkillUseEffects() {
|
||||
}
|
||||
|
||||
for effectID, handler := range handlers {
|
||||
initskill(effectID, newSkillUseRegistrarEffect(handler))
|
||||
currentHandler := handler
|
||||
initskillFactory(effectID, func() input.Effect {
|
||||
return newSkillUseRegistrarEffect(currentHandler)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
@@ -339,7 +348,10 @@ func registerSelfDamageComparePreOnSkillEffects() {
|
||||
}
|
||||
|
||||
for effectID, effect := range effects {
|
||||
initskill(effectID, effect)
|
||||
currentEffect := effect
|
||||
initskillFactory(effectID, func() input.Effect {
|
||||
return newComparePreOnSkillRegistrarEffect(currentEffect.comparePreHandler, currentEffect.onSkillHandler)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user