Files
Max-Cocos-Demo/assets/configs/generated/core/PetPartConfigManager.ts
2025-10-28 21:55:41 +08:00

89 lines
2.8 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { JsonAsset } from "cc";
import { ResManager } from "@max-studio/core/res/ResManager";
import { singleton, Singleton } from "@max-studio/core/Singleton";
import LogUtils from "@max-studio/core/utils/LogUtils";
import { ConfigParseUtils } from "./ConfigParseUtils";
import { PetPartConfigData, parsePetPartConfigData } from "./PetPartConfigData";
/**
* PetPartConfig配置管理器
*
* ⚠️ 此文件由配置表生成器自动生成,请勿手动修改!
* 如需修改请编辑对应的Excel配置文件然后重新生成
*/
@singleton()
export class PetPartConfigManager extends Singleton {
private configList: readonly PetPartConfigData[] = [];
private configMap = new Map<number, PetPartConfigData>();
private isLoaded = false;
protected async onInit(): Promise<void> {
await this.loadConfig();
}
private async loadConfig(): Promise<void> {
try {
const asset = await ResManager.getInstance().loadAsset<JsonAsset>(
"generated/data/PetPartConfig",
JsonAsset,
"configs",
);
this.parseConfig(<any>asset.json);
this.isLoaded = true;
} catch (err) {
LogUtils.error(
"PetPartConfigManager",
"加载 PetPartConfig 配置失败:",
err,
);
}
}
private parseConfig(data: any[]): void {
this.configList = Object.freeze(
data.map((item) => {
const config = parsePetPartConfigData(item);
const frozenConfig = ConfigParseUtils.deepFreeze(config);
return ConfigParseUtils.createReadonlyProxy(
frozenConfig,
"PetPartConfigData配置",
);
}),
);
this.configMap.clear();
for (const config of this.configList) {
this.configMap.set(config.id, config);
}
// 深度冻结配置映射,防止运行时修改
ConfigParseUtils.deepFreeze(this.configMap);
}
public getConfig(id: number): PetPartConfigData | null {
if (!this.isLoaded) {
LogUtils.warn(
"PetPartConfigManager",
"PetPartConfig 配置尚未加载完成,请等待加载完成",
);
return null;
}
return this.configMap.get(id) || null;
}
public getAllConfigs(): PetPartConfigData[] {
if (!this.isLoaded) {
LogUtils.warn(
"PetPartConfigManager",
"PetPartConfig 配置尚未加载完成,请等待加载完成",
);
return [];
}
return [...this.configList];
}
public isConfigLoaded(): boolean {
return this.isLoaded;
}
}