InMemoryHookSpecRegistry.kt

package io.github.lishangbu.avalon.game.battle.engine.core.registry.memory

import io.github.lishangbu.avalon.game.battle.engine.core.event.HookSpec
import io.github.lishangbu.avalon.game.battle.engine.core.registry.HookSpecRegistry
import io.github.lishangbu.avalon.game.battle.engine.core.type.HookName

/**
 * 基于内存 Map 的 HookSpecRegistry 实现。
 *
 * 设计意图:
 * - 为第一版基础设施提供最简单的注册中心实现。
 * - 适用于测试、原型和本地装配。
 *
 * @property entries 以 HookName 为键的 HookSpec 映射。
 */
class InMemoryHookSpecRegistry(
    private val entries: Map<HookName, HookSpec>,
) : HookSpecRegistry {
    override fun get(name: HookName): HookSpec =
        entries[name]
            ?: error("No hook spec registered for '${name.value}'.")

    override fun contains(name: HookName): Boolean = entries.containsKey(name)
}