BattleSettlementPlan.kt
package io.github.lishangbu.avalon.game.battle.engine.application
import io.github.lishangbu.avalon.game.battle.engine.core.model.BattleType
import io.github.lishangbu.avalon.game.battle.engine.core.session.BattleSessionQuery
/**
* 引擎为战后阶段生成的任务计划。
*
* 设计意图:
* - 把“这场 battle 在战后到底需要执行哪些副作用”先表达成计划;
* - 让 game 模块只负责执行计划,而不是再自己推导 battleKind 与结算分支;
* - 避免旧的 callback/support 风格把 game 副作用回调反向泄漏进引擎。
*/
data class BattleSettlementPlan(
val sessionId: String,
val battleKind: BattleType,
val endedReason: String?,
val session: BattleSessionQuery,
val tasks: List<BattleSettlementTask>,
)
/**
* 引擎可规划出的标准结算任务。
*/
enum class BattleSettlementTask {
/**
* 消费 battle 内捕捉账本,并把真实资源扣减/落库存留给 game 执行。
*/
SETTLE_CAPTURE_LEDGER,
/**
* 把 battle 从 `ENDED_UNSETTLED` 推进到 `SETTLED`。
*/
MARK_SESSION_SETTLED,
}