BattleSessionEventPayload.kt
package io.github.lishangbu.avalon.game.battle.engine.core.session
import com.fasterxml.jackson.annotation.JsonTypeInfo
/**
* battle session 结构化事件 payload。
*
* 设计意图:
* - 用强类型 payload 取代松散的 attributes 映射。
* - 让 session 事件边界直接暴露真实 payload,而不是再退化成松散 map。
*/
@JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, include = JsonTypeInfo.As.PROPERTY, property = "@class")
interface BattleSessionEventPayload {
/**
* 当前 payload 对应的结构化事件类型。
*/
val type: BattleSessionEventType
}
/**
* battle session 动作事件种类。
*
* 设计意图:
* - 为 queued/executed/battle-ended 等事件提供比裸字符串更明确的动作语义。
*/
enum class BattleSessionActionEventKind {
MOVE,
SWITCH,
ITEM,
CAPTURE,
RUN,
WAIT,
}