ConfigInitiator.ts 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. import ConfigManager from "../configs/ConfigManager";
  2. import { EventDispatcher } from "../events/EventDispatcher";
  3. import IInitiator from "./IInitiator";
  4. import InitiatorEvent from "./InitiatorEvent";
  5. /**
  6. * 配置表初始化
  7. */
  8. export default class ConfigInitiator extends EventDispatcher implements IInitiator{
  9. private __assetBundleName:string;
  10. private __dir:string;
  11. constructor(assetBundleName:string,dir:string){
  12. super();
  13. this.__assetBundleName=assetBundleName;
  14. this.__dir=dir;
  15. }
  16. Start(): void {
  17. let bundle:cc.AssetManager.Bundle=cc.assetManager.getBundle(this.__assetBundleName);
  18. if(bundle==null){
  19. throw new Error("配置表资源包未加载:"+this.__assetBundleName);
  20. }
  21. bundle.loadDir(this.__dir,cc.JsonAsset,this.LoadConfigProgress.bind(this),this.LoadConfigComplete.bind(this));
  22. }
  23. private LoadConfigProgress(index:number,total:number):void{
  24. let progress:number=index/total;
  25. this.DispatchEvent(InitiatorEvent.EVENT_PROGRESS,progress);
  26. }
  27. private LoadConfigComplete(err:Error,asset:cc.JsonAsset[]):void{
  28. if(err){
  29. this.DispatchEvent(InitiatorEvent.EVENT_ERROR,"配置表加载出错:"+err);
  30. return;
  31. }
  32. ConfigManager.single.Init(asset);
  33. this.DispatchEvent(InitiatorEvent.EVENT_COMPLETE);
  34. }
  35. Destroy(): void {
  36. this.__assetBundleName=null;
  37. this.__dir=null;
  38. }
  39. GetName(): string {
  40. return "ConfigInitiator";
  41. }
  42. }