BattleSessionResourceLedgerProjector.kt

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

/**
 * resource ledger 投影器。
 */
class BattleSessionResourceLedgerProjector : BattleSessionProjector {
    /**
     * 当前 projector 在发布链中的执行顺序。
     */
    override val order: Int = 200

    /**
     * 把发布事件中的资源账本条目投影到 session resource ledger。
     */
    override fun project(
        session: BattleSession,
        publication: BattleSessionPublication,
    ) {
        val usage = publication.resourceUsage ?: return
        session.appendResourceUsage(usage)
    }
}