import { resources, BufferAsset, assetManager, AssetManager, } from "cc"; import * as cfg from "../../schema/schema"; import ByteBuf from "db://assets/Scripts/luban/ByteBuf"; export default class ConfigManager { private static _instance: ConfigManager = null; public static get I(): ConfigManager { if (!this._instance) { this._instance = new ConfigManager(); } return this._instance; } public static tables: cfg.Tables = null; private static dataMap = new Map(); public static jsonFileNames: string[] = []; private constructor() {} public init() { this.loadAllConfig(); } public loadConfigName(): void { ConfigManager.jsonFileNames = cfg.Tables.getTableNames(); } public loadAllConfig() { this.loadConfigName(); let promises: Promise[] = []; for (let curFileName of ConfigManager.jsonFileNames) { let promise = new Promise((resolve, reject) => { let bundle = assetManager.getBundle("DataTable"); if (bundle) { bundle.load(curFileName, BufferAsset, (err, data) => { resolve(data); }); } else { assetManager.loadBundle( "DataTable", (err: Error, _bundle: AssetManager.Bundle) => { if (err) { console.log(err); reject && reject(err); return; } else { _bundle.load(curFileName, BufferAsset, (err, data) => { resolve(data); }); } } ); } }); promise.then((data: BufferAsset) => { if (data) { ConfigManager.dataMap.set( curFileName, new Uint8Array(data.buffer().slice(0, data.buffer().byteLength)) ); } else { console.error("静态配置加载失败" + curFileName); } }); promises.push(promise); } Promise.all(promises).then((values) => { console.log("静态配置加载完成"); ConfigManager.tables = new cfg.Tables(ConfigManager.I.getFileData); for (let item of ConfigManager.tables.TbGirls.getDataList()) { console.log(item); } }); } private getFileData(fileName: string): ByteBuf { if (ConfigManager.dataMap.has(fileName)) { return new ByteBuf(ConfigManager.dataMap.get(fileName)); } return null; } }