configMgr.ts 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import { EConfigConst, jsonNames } from "./ConfigDef";
  2. export class ConfigMgr {
  3. private static _inst: ConfigMgr;
  4. public static get inst(): ConfigMgr {
  5. if (this._inst == null) {
  6. this._inst = new ConfigMgr();
  7. }
  8. return this._inst;
  9. }
  10. config: cc.AssetManager.Cache = new cc.AssetManager.Cache();
  11. init(): Promise<any> {
  12. let arr = jsonNames.map(v=>{ return 'json/' + v + '.json'});
  13. let task = [];
  14. arr.forEach((v,k)=>{
  15. let p = new Promise((resolve:any)=>{
  16. cc.assetManager.loadRemote(v, (err, res: cc.JsonAsset)=>{
  17. if(res){
  18. this.config.add(jsonNames[k], res.json);
  19. cc.assetManager.releaseAsset(res);
  20. }
  21. resolve();
  22. })
  23. });
  24. task.push(p);
  25. })
  26. return Promise.all(task);
  27. }
  28. getCfgKeys(e: EConfigConst){
  29. let key = jsonNames[e];
  30. let cfg = this.config.get(key);
  31. return Object.keys(cfg);
  32. }
  33. getCfgById(e: EConfigConst, id){
  34. let key = jsonNames[e];
  35. let cfg = this.config.get(key);
  36. return cfg[id];
  37. }
  38. getCfgClassById<T>(e: EConfigConst, id, objType: {new(id,data): T}):T {
  39. let key = jsonNames[e];
  40. let cfg = this.config.get(key);
  41. return new objType(id, cfg[id]);
  42. }
  43. }