configMgr.ts 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. import { 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. // if(CC_DEBUG){
  13. let arr = jsonNames.map(v=>{ return 'json/' + v + '.json'});
  14. let task = [];
  15. arr.forEach((v,k)=>{
  16. let p = new Promise((resolve:any)=>{
  17. cc.assetManager.loadRemote(v, (err, res: cc.JsonAsset)=>{
  18. if(res){
  19. this.config.add(jsonNames[k], res.json);
  20. cc.assetManager.releaseAsset(res);
  21. }
  22. resolve();
  23. })
  24. });
  25. task.push(p);
  26. })
  27. return Promise.all(task);
  28. // }
  29. // else{
  30. // let arr = jsonNames.map(v=>{ return 'json/'+ v});
  31. // return new Promise((resolve:any)=>{
  32. // cc.resources.load(arr, cc.JsonAsset, (err, res)=>{
  33. // if(res){
  34. // res.forEach((v, k)=>{
  35. // this.config.add(jsonNames[k], v.json);
  36. // cc.assetManager.releaseAsset(v);
  37. // });
  38. // }
  39. // resolve();
  40. // })
  41. // });
  42. // }
  43. }
  44. getCfgKeys(key){
  45. let cfg = this.config.get(key);
  46. return Object.keys(cfg);
  47. }
  48. getCfgById(key, id){
  49. let cfg = this.config.get(key);
  50. return cfg[id];
  51. }
  52. getCfgClassById<T>(key, id, objType):T {
  53. let cfg = this.config.get(key);
  54. return new objType(id, cfg[id]);
  55. }
  56. }