@infernus/core 内部子系统与事件机制

@infernus/core 内部子系统与事件机制 由 Archify 生成的架构图。 gamemode · 生命周期钩子 · components 实体与生命周期 gamemode 生命周期钩子 filterscript · 脚本装载器 · components 实体与生命周期 filterscript 脚本装载器 command · 指令解析分发 · components 实体与生命周期 command 指令解析分发 entities · 实体实例 · components 实体与生命周期 entities 实体实例 utils/bus.ts · 事件引擎 · utils 事件、钩子与池 utils/bus.ts 事件引擎 utils/hook.ts · 方法拦截 · utils 事件、钩子与池 utils/hook.ts 方法拦截 utils/pools.ts · 实体实例注册 · utils 事件、钩子与池 utils/pools.ts 实体实例注册 internalProps · 实体私有状态 · utils 事件、钩子与池 internalProps 实体私有状态 wrapper/native · 原生调用绑定 · wrapper 原生绑定 wrapper/native 原生调用绑定 __inject__ · 可替换实现 · wrapper 原生绑定 __inject__ 可替换实现 streamer 封装 · 插件原生绑定 · wrapper 原生绑定 streamer 封装 插件原生绑定 全局 samp · 事件注册入口 · 宿主 open.mp 全局 samp 事件注册入口 open.mp 原生 · 原生回调来源 · 宿主 open.mp open.mp 原生 原生回调来源 streamer 插件 · 流式加载插件 · 宿主 open.mp streamer 插件 流式加载插件 派发事件 samp.on(name, trigger) 实例入池 callNative Streamer 原生调用 注册回调 components 实体与生命周期 utils 事件、钩子与池 wrapper 原生绑定 宿主 open.mp 图例 前端 后端 云服务 消息总线

事件层 utils/bus.ts

  • • eventBus 是 Map<name, 监听器数组>,注册顺序即执行顺序;triggerBus 另存 trigger 供 useTrigger 复用
  • • defineEvent 返回 [pusher, trigger]:pusher 订阅并返回 off,trigger 触发整条中间件链
  • • isNative 为 true 时在 import 阶段完成 registerEvent + samp.on;为 false 则是纯进程内事件

实体与状态 utils/pools.ts

  • • 每种实体一个 Map 池;Player 在 onConnect 构造入池、onDisconnect 出池,Vehicle 在 create/destroy 时进出池
  • • internalPlayerProps 是 Symbol 键,避免插件扩展 Player 时覆盖 core 的私有运行时字段
  • • 原生回调先按 id 解析成池中实例,再以对象形式传给监听器

装载与生命周期

  • • GameMode.use(script) 仅入队;onInit 监听器按注册顺序依次 load,onExit 卸载
  • • IFilterScript.load() 必须返回注销函数数组,卸载时逐个调用
  • • 卸载与退出期间 INTERNAL_FLAGS.skip 置位,跳过对已失效游戏的原生调用