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?,
)