@scml/sc2-modloader

SugarCube 2 Mod Loader 的 TypeScript 类型定义,为 mod 与游戏数据管理提供类型支持。

安装

npm
yarn
pnpm
bun
deno
npm install -D @scml/sc2-modloader

快速开始

添加类型引用

在项目中添加三斜杠指令以引入全局类型:

/// <reference types="@scml/sc2-modloader" />

使用全局对象

Mod Loader 将核心对象挂载到 window,可直接访问:

window.modSC2DataManager;   // 数据管理器
window.modUtils;            // Mod 工具
window.modAddonPluginManager; // Addon 插件管理

按需导入类型

import type { ModInfo, ModLoader } from '@scml/sc2-modloader/ModLoader';
import type { AddonPluginHookPointEx } from '@scml/sc2-modloader/AddonPlugin';

全局类型 global

主入口通过 /// <reference types="..." /> 扩展 Window 接口。 global 以下属性挂载在 window 上:

属性类型说明
jQuery / $JQueryStaticjQuery 实例
modSC2DataManagerSC2DataManagerMod 与游戏数据核心管理器
modUtilsModUtilsMod Loader 工具(获取 mod、passage 等)
jsPreloaderJsPreloader脚本预加载器
modModLoadControllerModLoadControllerMod 加载生命周期控制器
modAddonPluginManagerAddonPluginManagerAddon 插件管理器
modSC2JsEvalContextSC2JsEvalContextmod 的 JS 求值上下文
主入口
子路径导入示例
/// <reference types="@scml/sc2-modloader" />

子路径导出

子路径描述
.主入口,增强 Window/全局
./AddonPluginAddon 插件接口与管理器
./ModLoaderModLoader、ModInfo、ModBootJson 等
./SC2DataManagerSC2DataManager 中心数据管理器
./ModLoadController加载控制器、LogWrapper
./ModZipReaderModZipReader、LocalLoader、RemoteLoader 等
./ModOrderContainerModOrderContainer、ModOrderItem、ModLoadFromSourceType
./SC2DataInfoCacheSC2DataInfo、PassageDataItem、CacheRecord 等
./SugarCube2Passage 段落类型
./UtilsModUtils 工具类
./ReplacePatcher补丁/替换工具
./ModPack/ModMetaModMeta
./ModPack/ModPackModPack
./ModPack/ModPackFileReaderInterfaceModPack 文件读取接口
./ModPack/ModPackJsZipAdaptorModPack JSZip 适配器
./SemVer/InfiniteSemVerInfiniteSemVer 版本解析
./DecoratorUtils装饰器工具
./DependenceChecker依赖检查
./export2window导出到 window
./expose-loaderexpose-loader
./extname扩展名工具
./getGlobal获取全局对象
./HtmlTagSrcHookHTML 标签 src 钩子
./IdbKeyValRefIndexedDB 键值引用
./JqueryInjectorjQuery 注入器
./JsPreloader脚本预加载器
./JSZipLikeReadOnlyInterface只读 JSZip 接口
./LanguageManager语言管理
./MergeSC2DataInfoCacheSC2 数据合并缓存
./PassageTracerPassage 追踪
./polyfillpolyfill
./SC2ApiRefSC2 API 引用
./Sc2EventTracerSC2 事件追踪
./SC2JsEvalContextSC2 JS 求值上下文
./SimulateMerge模拟合并
./WikifyTracerWikify 追踪
./Utils/LazyIteratorAdaptor.d.ts惰性迭代器适配器
./WeakRefPool/WeakRefPool弱引用池

API 参考

./AddonPlugin

AddonPluginHookPointEx 接口

Addon 插件实现的接口,必须实现 registerMod(),可选实现各类生命周期钩子。

钩子类型说明
registerMod(addonName, mod, modZip) => Promise<any>必须。mod 加载时调用
afterInit() => Promise<any>可选
afterModLoad() => Promise<any>可选
beforePatchModToGame() => Promise<any>可选
afterPatchModToGame() => Promise<any>可选
exportDataZip(zip: JSZip) => Promise<JSZip>可选,导出 debug 数据
whenSC2StoryReady() => Promise<any>可选,SC2 Story 就绪
whenSC2PassageInit(passage: Passage) => Promise<any>可选
whenSC2PassageStart(passage, content) => Promise<any>可选

AddonPluginManager

方法说明
registerAddonPlugin(modName, addonName, hookPoint)注册 addon,须在 InjectEarlyLoad 时调用
getAddonPlugin(modName, addonName)获取 addon 的 hookPoint

./SC2DataManager

SC2DataManager

Mod 与游戏数据核心管理器。

方法说明
getModUtils()获取 ModUtils
getModLoadController()获取 ModLoadController
getModLoader()获取 ModLoader
getAddonPluginManager()获取 AddonPluginManager
getSC2DataInfoCache()获取原始 SC2Data 缓存
getSC2DataInfoAfterPatch()获取已 patch 的 SC2Data
flushAfterPatchCache()清除 patch 缓存
patchModToGame()将 mod 数据 patch 到游戏

./ModLoader

ModInfo 接口

属性类型说明
namestringmod 名
versionstring版本
aliasstring[]别名
cacheSC2DataInfo缓存数据
imgsModImg[]图片列表
scriptFileList_preload[string, string][]预加载脚本

ModBootJson 接口

mod 的 mod.json 配置结构,包含 styleFileListscriptFileListtweeFileListaddonPlugin 等。


./Utils

ModUtils

方法说明
getModListName()获取所有 mod 名(按加载顺序)
getMod(name)获取指定 mod 的 ModInfo
getModZip(modName)获取 mod 的 ModZipReader
getPassageData(name)获取指定 passage
getAllPassageData()获取所有 passage
createNewSC2DataInfoFromNow()创建当前 SC2DataInfo
updatePassageData(name, content, tags, pid)更新 passage 数据
updatePassageDataMany(pd, replaceForce)批量更新 passage

其他子路径

子路径主要类型
./ModZipReaderModZipReader、LocalLoader、RemoteLoader、IndexDBLoader
./SC2DataInfoCacheSC2DataInfo、PassageDataItem、CacheRecord、StyleTextFileItem
./SugarCube2Passage
./ReplacePatcherReplacePatcher
./ModOrderContainerModOrderContainer、ModOrderItem、ModLoadFromSourceType
./ModPack/*ModPack、ModMeta、ModPackFileReaderInterface
./SemVer/InfiniteSemVerInfiniteSemVer

类型定义来源

INFO