BattleSessionTurnResultRecorder.kt

package io.github.lishangbu.avalon.game.battle.engine.core.session

/**
 * turn pipeline 结果记录器。
 *
 * 设计意图:
 * - 把“回合完成后写 battle log / 结构化事件 / 组装返回值”从默认 pipeline
 *   主类中拆出来;
 * - 让 `DefaultBattleSessionTurnPipeline` 更纯粹地只负责按序执行步骤;
 * - 便于后续替换不同的 turn close-out 记录策略。
 */
class BattleSessionTurnResultRecorder {
    /**
     * 记录本回合结果并产出统一返回值。
     */
    fun record(context: BattleSessionTurnContext): BattleSessionTurnResult {
        context.session.recordLog("Resolved turn with ${context.actionResults.size} action(s).")
        context.session.recordEvent(
            BattleSessionTurnResolvedPayload(actionCount = context.actionResults.size),
        )
        return BattleSessionTurnResult(
            actionResults = context.actionResults,
            snapshot = context.snapshot,
        )
    }
}