levelMgr.ts 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. import { LQCollide } from "./Collide/lq_collide_system/lq_collide";
  2. import { ConfigMgr } from "./game/cfg/configMgr";
  3. import { Nest } from "./game/monster/nest";
  4. import { ResMgr } from "./resMgr";
  5. let pass = 5;
  6. enum LevelState {
  7. none,
  8. loading,
  9. playing,
  10. }
  11. /**
  12. * 1 切换关卡
  13. */
  14. export class LevelMgr {
  15. parent: cc.Node;
  16. title: cc.Label;
  17. passCnt: number = 0;
  18. state = LevelState.none;
  19. private static _inst: LevelMgr;
  20. public static get inst(): LevelMgr {
  21. if (this._inst == null) {
  22. this._inst = new LevelMgr();
  23. this._inst.init();
  24. }
  25. return this._inst;
  26. }
  27. init(){
  28. cc.director.getScheduler().enableForTarget(this);
  29. cc.director.getScheduler().schedule(this.update, this, 1, cc.macro.REPEAT_FOREVER, 0, false);
  30. }
  31. update(dt){
  32. if(this.state != LevelState.playing) return;
  33. if(this.parent.getComponentsInChildren(LQCollide).length > 0) return;
  34. this.next();
  35. }
  36. end(){
  37. cc.director.getScheduler().unschedule(this.update,this);
  38. }
  39. async begin(){
  40. this.passCnt = 0;
  41. this.load();
  42. // let level = 1;
  43. // let node = await ResMgr.inst.loadPrefab(`level/levelEmpty`, this.parent);
  44. // let levelView = node.getComponent(levelempty);
  45. // let levelData = ConfigMgr.inst.getCfgById('level', level);
  46. // let nestData = ConfigMgr.inst.getCfgById('nest', levelData.nest);
  47. // let nestCreator = new Nest(nestData, levelView.$top_node);
  48. // nestCreator.begin();
  49. }
  50. next(){
  51. this.passCnt ++;
  52. if(this.passCnt >= pass) return;
  53. this.load();
  54. }
  55. private load() {
  56. this.state = LevelState.loading
  57. this.title.string = `level${this.passCnt + 1}`;
  58. this.parent.destroyAllChildren();
  59. ResMgr.inst.loadPrefab(`level/level${this.passCnt + 1}`, this.parent).then(()=>{
  60. this.state = LevelState.playing;
  61. });
  62. }
  63. }