feat: 实现乱舞效果并完善战斗输入上下文
All checks were successful
ci/woodpecker/push/my-first-workflow Pipeline was successful
All checks were successful
ci/woodpecker/push/my-first-workflow Pipeline was successful
This commit is contained in:
@@ -51,6 +51,7 @@ func (e *EffectNode) GetInput() *input.Input {
|
||||
|
||||
}
|
||||
|
||||
// SourceInput 返回 effect 的来源输入(优先 Ctx.Source,回退到绑定输入)。
|
||||
func (e *EffectNode) SourceInput() *input.Input {
|
||||
if e.Ctx().Source != nil {
|
||||
return e.Ctx().Source
|
||||
@@ -58,6 +59,7 @@ func (e *EffectNode) SourceInput() *input.Input {
|
||||
return e.Input
|
||||
}
|
||||
|
||||
// CarrierInput 返回当前持有该 effect 的输入(优先 Ctx.Carrier)。
|
||||
func (e *EffectNode) CarrierInput() *input.Input {
|
||||
if e.Ctx().Carrier != nil {
|
||||
return e.Ctx().Carrier
|
||||
@@ -65,6 +67,7 @@ func (e *EffectNode) CarrierInput() *input.Input {
|
||||
return e.Ctx().Our
|
||||
}
|
||||
|
||||
// TargetInput 返回当前 effect 作用目标输入(优先 Ctx.Target)。
|
||||
func (e *EffectNode) TargetInput() *input.Input {
|
||||
if e.Ctx().Target != nil {
|
||||
return e.Ctx().Target
|
||||
@@ -72,10 +75,12 @@ func (e *EffectNode) TargetInput() *input.Input {
|
||||
return e.Ctx().Opp
|
||||
}
|
||||
|
||||
// OpponentInput 返回当前上下文中的对位输入(兼容旧链路)。
|
||||
func (e *EffectNode) OpponentInput() *input.Input {
|
||||
return e.Ctx().Opp
|
||||
}
|
||||
|
||||
// SourcePet 返回来源输入当前出战精灵。
|
||||
func (e *EffectNode) SourcePet() *info.BattlePetEntity {
|
||||
in := e.SourceInput()
|
||||
if in == nil {
|
||||
@@ -84,6 +89,7 @@ func (e *EffectNode) SourcePet() *info.BattlePetEntity {
|
||||
return in.CurrentPet()
|
||||
}
|
||||
|
||||
// CarrierPet 返回持有效果输入当前出战精灵。
|
||||
func (e *EffectNode) CarrierPet() *info.BattlePetEntity {
|
||||
in := e.CarrierInput()
|
||||
if in == nil {
|
||||
@@ -92,6 +98,7 @@ func (e *EffectNode) CarrierPet() *info.BattlePetEntity {
|
||||
return in.CurrentPet()
|
||||
}
|
||||
|
||||
// TargetPet 返回目标输入当前出战精灵。
|
||||
func (e *EffectNode) TargetPet() *info.BattlePetEntity {
|
||||
in := e.TargetInput()
|
||||
if in == nil {
|
||||
@@ -100,6 +107,7 @@ func (e *EffectNode) TargetPet() *info.BattlePetEntity {
|
||||
return in.CurrentPet()
|
||||
}
|
||||
|
||||
// OpponentPet 返回对位输入当前出战精灵。
|
||||
func (e *EffectNode) OpponentPet() *info.BattlePetEntity {
|
||||
in := e.OpponentInput()
|
||||
if in == nil {
|
||||
@@ -108,6 +116,8 @@ func (e *EffectNode) OpponentPet() *info.BattlePetEntity {
|
||||
return in.CurrentPet()
|
||||
}
|
||||
|
||||
// ForEachOpponentSlot 遍历对面全部站位;回调返回 false 时提前停止。
|
||||
// 无组队视图时回退到单目标 OpponentInput。
|
||||
func (e *EffectNode) ForEachOpponentSlot(fn func(*input.Input) bool) {
|
||||
if fn == nil {
|
||||
return
|
||||
@@ -136,6 +146,8 @@ func (e *EffectNode) ForEachOpponentSlot(fn func(*input.Input) bool) {
|
||||
}
|
||||
}
|
||||
|
||||
// ForEachCarrierBenchPet 遍历持有效果方当前站位的后备精灵(不含当前出战)。
|
||||
// 回调返回 false 时提前停止。
|
||||
func (e *EffectNode) ForEachCarrierBenchPet(fn func(*info.BattlePetEntity) bool) {
|
||||
if fn == nil {
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user