BattleRuntimeSnapshot.kt

package io.github.lishangbu.avalon.game.battle.engine.core.runtime.flow

import io.github.lishangbu.avalon.game.battle.engine.core.model.BattleState
import io.github.lishangbu.avalon.game.battle.engine.core.model.FieldState
import io.github.lishangbu.avalon.game.battle.engine.core.model.SideState
import io.github.lishangbu.avalon.game.battle.engine.core.model.UnitState

/**
 * battle 主流程运行时快照。
 *
 * 设计意图:
 * - 作为主流程入口与 mutation apply 层之间的稳定状态载体。
 * - 把 battle / field / side / unit 状态收拢为不可变快照。
 *
 * @property battle 全局 battle 状态。
 * @property field 当前场地状态。
 * @property units 全部单位状态表。
 * @property sides 当前 side 状态表。
 */
data class BattleRuntimeSnapshot(
    val battle: BattleState,
    val field: FieldState,
    val units: Map<String, UnitState>,
    val sides: Map<String, SideState> = emptyMap(),
)