BattleMutationInterceptionResult.kt
package io.github.lishangbu.avalon.game.battle.engine.core.runtime.flow
import io.github.lishangbu.avalon.game.battle.engine.core.mutation.BattleMutation
/**
* 单个 mutation 在拦截链中的处理结果。
*
* @property snapshot 拦截过程中产生的最新 battle 快照。
* @property allowed 当前 mutation 是否允许继续提交。
* @property mutation 拦截完成后继续向后传递的 mutation。
*
* 说明:
* - `allowed = false` 表示当前 mutation 被整个拦截链拦下;
* - `mutation` 允许被拦截器替换,用于把 hook relay 真正回写到 mutation 负载;
* - 调用方应把 `allowed = false` 或 `mutation = null` 都视作过滤结果。
*/
data class BattleMutationInterceptionResult(
val snapshot: BattleRuntimeSnapshot,
val allowed: Boolean,
val mutation: BattleMutation?,
)