BattleUnitImportModels.kt
package io.github.lishangbu.avalon.game.service.unit
import io.github.lishangbu.avalon.game.battle.engine.core.model.AttachedEffectState
import io.github.lishangbu.avalon.game.battle.engine.core.model.UnitCaptureContextState
import io.github.lishangbu.avalon.game.battle.engine.core.model.UnitMetadataState
import io.github.lishangbu.avalon.game.battle.engine.core.model.UnitState
/** 单个招式槽位导入参数。 */
data class BattleMoveImportRequest(
val moveId: String,
val currentPp: Int? = null,
)
/** 单位导入边界上的结构化元数据。 */
data class BattleUnitImportMetadata(
val level: Int,
val creatureId: Long? = null,
val creatureInternalName: String? = null,
val natureId: Long? = null,
val natureInternalName: String? = null,
val captureContext: UnitCaptureContextState = UnitCaptureContextState(),
val ivs: Map<String, Int> = emptyMap(),
val evs: Map<String, Int> = emptyMap(),
)
/** 真实数据智能导入战斗单位时所需的输入。 */
data class BattleUnitImportRequest(
val unitId: String,
val metadata: BattleUnitImportMetadata,
val abilityInternalName: String? = null,
val itemId: String? = null,
val moves: List<BattleMoveImportRequest> = emptyList(),
val currentHp: Int? = null,
val statusState: AttachedEffectState? = null,
val volatileStates: Map<String, AttachedEffectState> = emptyMap(),
val conditionStates: Map<String, AttachedEffectState> = emptyMap(),
val boosts: Map<String, Int> = emptyMap(),
val forceSwitchRequested: Boolean = false,
)
/** 智能导入后的战斗单位结果。 */
data class BattleUnitImportResult(
val unit: UnitState,
val creatureId: Long,
val creatureInternalName: String,
val creatureName: String,
val level: Int,
val requiredExperience: Int,
val calculatedStats: Map<String, Int>,
)