refactor(0.1.14-P1): 内核归位——game/ 按引擎架构重排(零行为漂移)
结构(旧 game/core+engine → 新 engine/ 域): - engine/kernel/ 时钟/随机/插件协议/fxqueue/timesense/format/urgency/guide/names(原 core) - engine/narrative/ legacy/报告/列传/谱系/年轴(原 core 叙事族) - engine/runtime/ World/creation/pcgen/ApiFacade/capabilities/pluginManager/boot/clocks + Systems/*(12 系统) - engine/sim/ Market(未来 WorldSim 同行) - 旧 game/core、engine/systems、engine/world.ts 等路径全部废弃(无 re-export 兼容层) 验证:35 套件/967 测试全绿(金钟罩三档零漂移=纯搬迁无行为变化) typecheck 0 error
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
import { GameClock, SystemHook } from './clock'
|
||||
import { DataPack } from '../../data/registry'
|
||||
import { EventDef } from '../../data/events'
|
||||
import type { World } from '../runtime/World'
|
||||
|
||||
export type PluginKind = 'system' | 'data' | 'events' | 'content'
|
||||
|
||||
export interface PluginHookGuard {
|
||||
onLoad?(): void
|
||||
onDisable?(): void
|
||||
onEnable?(): void
|
||||
onUninstall?(): void
|
||||
}
|
||||
|
||||
export interface CotycPlugin {
|
||||
id: string
|
||||
name: string
|
||||
version: string
|
||||
author?: string
|
||||
description: string
|
||||
kind: PluginKind
|
||||
dependencies?: string[]
|
||||
conflicts?: string[]
|
||||
install(ctx: PluginContext): void
|
||||
uninstall?(ctx: PluginContext): void
|
||||
hooks?: PluginHookGuard
|
||||
protected?: boolean
|
||||
}
|
||||
|
||||
export interface PluginContext {
|
||||
world: World
|
||||
clock: GameClock
|
||||
register: (phase: Parameters<GameClock['register']>[0], fn: SystemHook) => () => void
|
||||
onYearStart: (fn: SystemHook) => () => void
|
||||
addCapability: (cap: { id: string; name: string; version: string; desc: string }) => void
|
||||
removeCapability: (id: string) => void
|
||||
enableCapability: (id: string, enabled: boolean) => void
|
||||
overridePack: (partial: Partial<DataPack>) => void
|
||||
resetPack: () => void
|
||||
addEventPool: (id: string, events: EventDef[]) => void
|
||||
removeEventPool: (id: string) => void
|
||||
}
|
||||
|
||||
export interface PluginStatus {
|
||||
id: string
|
||||
name: string
|
||||
version: string
|
||||
kind: PluginKind
|
||||
installed: boolean
|
||||
enabled: boolean
|
||||
protected: boolean
|
||||
description: string
|
||||
dependencies?: string[]
|
||||
}
|
||||
|
||||
export type PluginChange = { id: string; action: 'install' | 'remove' | 'enable' | 'disable' }
|
||||
Reference in New Issue
Block a user