feat: 提交资源
This commit is contained in:
88
assets/configs/generated/core/PetConfigManager.ts
Normal file
88
assets/configs/generated/core/PetConfigManager.ts
Normal file
@@ -0,0 +1,88 @@
|
||||
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 { PetConfigData, parsePetConfigData } from "./PetConfigData";
|
||||
|
||||
/**
|
||||
* PetConfig配置管理器
|
||||
*
|
||||
* ⚠️ 此文件由配置表生成器自动生成,请勿手动修改!
|
||||
* 如需修改,请编辑对应的Excel配置文件,然后重新生成
|
||||
*/
|
||||
@singleton()
|
||||
export class PetConfigManager extends Singleton {
|
||||
private configList: readonly PetConfigData[] = [];
|
||||
private configMap = new Map<number, PetConfigData>();
|
||||
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/PetConfig",
|
||||
JsonAsset,
|
||||
"configs",
|
||||
);
|
||||
this.parseConfig(<any>asset.json);
|
||||
this.isLoaded = true;
|
||||
} catch (err) {
|
||||
LogUtils.error(
|
||||
"PetConfigManager",
|
||||
"加载 PetConfig 配置失败:",
|
||||
err,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
private parseConfig(data: any[]): void {
|
||||
this.configList = Object.freeze(
|
||||
data.map((item) => {
|
||||
const config = parsePetConfigData(item);
|
||||
const frozenConfig = ConfigParseUtils.deepFreeze(config);
|
||||
return ConfigParseUtils.createReadonlyProxy(
|
||||
frozenConfig,
|
||||
"PetConfigData配置",
|
||||
);
|
||||
}),
|
||||
);
|
||||
this.configMap.clear();
|
||||
for (const config of this.configList) {
|
||||
this.configMap.set(config.id, config);
|
||||
}
|
||||
// 深度冻结配置映射,防止运行时修改
|
||||
ConfigParseUtils.deepFreeze(this.configMap);
|
||||
}
|
||||
|
||||
public getConfig(id: number): PetConfigData | null {
|
||||
if (!this.isLoaded) {
|
||||
LogUtils.warn(
|
||||
"PetConfigManager",
|
||||
"PetConfig 配置尚未加载完成,请等待加载完成",
|
||||
);
|
||||
return null;
|
||||
}
|
||||
return this.configMap.get(id) || null;
|
||||
}
|
||||
|
||||
public getAllConfigs(): PetConfigData[] {
|
||||
if (!this.isLoaded) {
|
||||
LogUtils.warn(
|
||||
"PetConfigManager",
|
||||
"PetConfig 配置尚未加载完成,请等待加载完成",
|
||||
);
|
||||
return [];
|
||||
}
|
||||
return [...this.configList];
|
||||
}
|
||||
|
||||
public isConfigLoaded(): boolean {
|
||||
return this.isLoaded;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user