BattleSessionBattleLogProjector.kt

package io.github.lishangbu.avalon.game.battle.engine.core.session

/**
 * battle log 投影器。
 */
class BattleSessionBattleLogProjector : BattleSessionProjector {
    /**
     * 当前 projector 在发布链中的执行顺序。
     */
    override val order: Int = 0

    /**
     * 把发布事件中的 battle log 文本投影到 session battle log。
     */
    override fun project(
        session: BattleSession,
        publication: BattleSessionPublication,
    ) {
        val message = publication.battleLogMessage ?: return
        session.appendBattleLog(message)
    }
}