BattleSessionState.kt
package io.github.lishangbu.avalon.game.battle.engine.core.session
import io.github.lishangbu.avalon.game.battle.engine.core.runtime.flow.BattleRuntimeSnapshot
/**
* BattleSession 可持久化状态。
*/
data class BattleSessionState(
val snapshot: BattleRuntimeSnapshot,
val pendingActions: List<BattleSessionAction> = emptyList(),
val replacementRequests: List<BattleSessionReplacementRequest> = emptyList(),
val resourceLedger: List<BattleSessionResourceUsage> = emptyList(),
val battleLogs: List<String> = emptyList(),
val eventLogs: List<BattleSessionEvent> = emptyList(),
) {
/**
* 结构化事件 payload 的强类型视图。
*/
val eventPayloads: List<BattleSessionEventPayload>
get() = eventLogs.map(BattleSessionEvent::payload)
/**
* 捕捉资源账本的强类型视图。
*/
val captureResourceLedger: List<BattleSessionCaptureResourceUsage>
get() = resourceLedger.filterIsInstance<BattleSessionCaptureResourceUsage>()
}