BattleSessionWaitActionHandler.kt
package io.github.lishangbu.avalon.game.battle.engine.core.session
import kotlin.reflect.KClass
/**
* `BattleSessionWaitAction` 执行处理器。
*/
class BattleSessionWaitActionHandler : BattleSessionActionHandler {
/**
* 当前处理器负责的 action 类型。
*/
override val actionType: KClass<out BattleSessionAction> = BattleSessionWaitAction::class
/**
* 执行 wait action。
*/
override fun execute(
action: BattleSessionAction,
session: BattleSession,
): BattleSessionActionExecutionResult {
val waitAction =
action as? BattleSessionWaitAction
?: error("Expected BattleSessionWaitAction but got '${action::class.qualifiedName}'.")
session.recordLog("Executed wait action for unit ${waitAction.unitId}.")
session.recordEvent(
BattleSessionWaitExecutedPayload(unitId = waitAction.unitId),
)
return BattleSessionActionExecutionResult(
action = waitAction,
snapshot = session.currentSnapshot,
)
}
}