levelManager.ts 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. import GameLogic from "../gameLogic/gameLogic";
  2. import bundleManager from "./bundleManager";
  3. class levelManager {
  4. private _levelPrefab: cc.Node = null;
  5. private _curOpenID: number;
  6. remove() {
  7. if (this._levelPrefab) {
  8. // this._levelPrefab.destroy();
  9. // this._levelPrefab = null
  10. this._levelPrefab.active = false;
  11. }
  12. }
  13. open(id: number, callback?: Function, new_ = false) {
  14. console.log('zh:LM.ts open 1' )
  15. if (this._levelPrefab && this._curOpenID == id && !new_) {
  16. this._levelPrefab.active = true;
  17. callback && callback();
  18. return;
  19. }
  20. let self = this;
  21. self.saveCurOpenID(id);
  22. console.log('zh:LM.ts open 2' )
  23. let bundleName = this.getBundleNameByLevel(id);
  24. setTimeout(() => {
  25. console.log('zh:LM.ts open 3,level=',id,bundleName )
  26. bundleManager.getBundleByName(bundleName).load('level' + id, cc.Prefab, function (err, prefab: cc.Prefab) {
  27. if (prefab) {
  28. let node = cc.instantiate(prefab);
  29. var cavans = cc.director.getScene().getChildByName('world')
  30. node.parent = cavans;
  31. // node.zIndex = 200
  32. // self.remove();
  33. self._levelPrefab && self._levelPrefab.destroy();
  34. self._levelPrefab = node;
  35. cavans.getComponent(GameLogic).init(node,new_);
  36. if (callback) {
  37. callback(node);
  38. }
  39. }
  40. })
  41. }, 50);
  42. }
  43. private getBundleNameByLevel(level) {
  44. if (level <= 2) {
  45. return 'levels'
  46. } else {
  47. return 'level' + level;
  48. }
  49. }
  50. preLoadLevel(level: number) {
  51. console.log('zh:预加载关卡 level=' + level);
  52. bundleManager.getBundleByName('levels').preload('level' + level, cc.Prefab, () => {
  53. console.log('预加载关卡' + level + '完成');
  54. });
  55. }
  56. /**
  57. * 保存当前打开的关卡ID
  58. * @param id 关卡ID
  59. */
  60. saveCurOpenID(id: number) {
  61. this._curOpenID = id;
  62. }
  63. /**
  64. *
  65. * @returns 获取当前打开的关卡ID
  66. */
  67. getCurOpenId() {
  68. return this._curOpenID;
  69. }
  70. }
  71. export default new levelManager();