EventContextTargetResolver.kt
package io.github.lishangbu.avalon.game.battle.engine.core.runtime.support
import io.github.lishangbu.avalon.game.battle.engine.core.event.EventContext
import io.github.lishangbu.avalon.game.battle.engine.core.model.UnitState
import io.github.lishangbu.avalon.game.battle.engine.core.type.StandardTargetSelectorIds
import io.github.lishangbu.avalon.game.battle.engine.core.type.TargetSelectorId
/**
* EventContext 内部轻量 target selector 解析器。
*
* 设计意图:
* - 为依赖 `self / target / source` 三元上下文的动作执行器提供统一读取入口;
* - 避免每个 executor 自己写一遍 `when (selector)`;
* - 当前只覆盖“单单位上下文可明确解析”的 selector,超出范围返回 `null`。
*/
object EventContextTargetResolver {
fun resolveSingleUnit(
selector: TargetSelectorId,
context: EventContext,
): UnitState? =
when (selector) {
StandardTargetSelectorIds.SELF -> context.self
StandardTargetSelectorIds.TARGET,
StandardTargetSelectorIds.FOE,
-> context.target
StandardTargetSelectorIds.SOURCE -> context.source
else -> null
}
}