ViewManager.js 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238
  1. var t = require;
  2. var e = module;
  3. var a = exports;
  4. var i =
  5. (this && this.__awaiter) ||
  6. function (t, n, r, l) {
  7. return new (r = r || Promise)(function (i, e) {
  8. function s(t) {
  9. try {
  10. a(l.next(t));
  11. } catch (t) {
  12. e(t);
  13. }
  14. }
  15. function o(t) {
  16. try {
  17. a(l.throw(t));
  18. } catch (t) {
  19. e(t);
  20. }
  21. }
  22. function a(t) {
  23. var e;
  24. t.done
  25. ? i(t.value)
  26. : ((e = t.value) instanceof r
  27. ? e
  28. : new r(function (t) {
  29. t(e);
  30. })
  31. ).then(s, o);
  32. }
  33. a((l = l.apply(t, n || [])).next());
  34. });
  35. };
  36. Object.defineProperty(a, "__esModule", {value: !0}), (a.ViewManagerEvent = void 0);
  37. const n = t("ViewConst"),
  38. r = t("LayerManager"),
  39. l = t("App"),
  40. h = t("BaseView");
  41. a.ViewManagerEvent = {VIEW_IS_OPEN: "viewIsOpen", VIEW_IS_CLOSE: "viewIsClose"};
  42. class s {
  43. constructor() {
  44. (this._views = {}),
  45. (this._opens = {}),
  46. (this._viewCache = {}),
  47. (this._viewLoadingCache = {}),
  48. (this.uiRoot = null),
  49. (this.curScene = null);
  50. }
  51. reset() {
  52. (this.uiRoot = cc.find("Canvas")), r.default.reset();
  53. }
  54. clear() {
  55. this.closeAll(), (this._views = {});
  56. }
  57. register(t, e) {
  58. null != e && (this._views[t] || (this._views[t] = e));
  59. }
  60. register1(t, e) {
  61. null != t && (this._views[t.key] || ((t.controller = e), (this._views[t.key] = t)));
  62. }
  63. getViewInfoByController(t) {
  64. const e = [];
  65. for (const i in this._views) this._views[i].controller == t && e.push(i);
  66. return e;
  67. }
  68. unregister(t) {
  69. this._views[t] && delete this._views[t];
  70. }
  71. getViewRegisterData(t) {
  72. return this._views[t];
  73. }
  74. removeView(t) {
  75. delete this._viewCache[t], delete this._viewLoadingCache[t], delete this._opens[t], delete this._views[t];
  76. }
  77. hasFullScreenViwe() {
  78. for (const t in this._opens) if (this._opens[t].isFullScreen()) return !0;
  79. return !1;
  80. }
  81. removeByController(t) {}
  82. destroy(t) {
  83. var e = this.getView(t);
  84. e && (this.unregister(t), e.destroyView(), delete this._viewCache[t]);
  85. }
  86. checkIsNeedAddBg() {
  87. for (let e = this.uiRoot.children.length - 1; 1 < e; e--) {
  88. let t = this.uiRoot.children[e].getComponent(h.default);
  89. if (t && 1 === t.bgType) {
  90. r.default.layerBg.parent && r.default.layerBg.parent.removeChild(r.default.layerBg, !1);
  91. var i = t.node.getSiblingIndex();
  92. return (
  93. (r.default.layerBg.zIndex = t.node.zIndex),
  94. this.uiRoot.insertChild(r.default.layerBg, i),
  95. (r.default.layerBg.active = !0),
  96. void (r.default.curBgView = t)
  97. );
  98. }
  99. }
  100. r.default.layerBg &&
  101. r.default.layerBg.parent &&
  102. (r.default.layerBg.parent.removeChild(r.default.layerBg, !1), (r.default.curBgView = null));
  103. }
  104. getTopView() {
  105. for (let t = this.uiRoot.children.length - 1; 0 < t; t--) {
  106. const i = this.uiRoot.children[t];
  107. for (let t = i.children.length - 1; 0 <= t; t--) {
  108. var e = i.children[t].getComponent(h.default);
  109. if (e) return e;
  110. }
  111. }
  112. }
  113. addBg(t) {}
  114. open(o, ...t) {
  115. return i(this, void 0, void 0, function* () {
  116. let e = this._views[o];
  117. if (e) {
  118. Log.trace("开启面板:", e.prefabName),
  119. e.isScene && this.curScene && (yield r.default.ins.showChangeSceneEffect());
  120. var i = this.getView(o);
  121. if (null == i) {
  122. if (!e) return void Log.trace("UI_" + o + "不存在");
  123. if (this._viewLoadingCache[o]) return void Log.warn("面板正在加载预制体", o);
  124. try {
  125. (this._viewLoadingCache[o] = !0),
  126. e.isNotShowLoad || l.default.EasyLoading.showLoadingByTime(20),
  127. e.preLoadFunc && (yield e.preLoadFunc());
  128. var s = yield l.default.ResManager.getResAsync(
  129. "/prefab/view/" + (e.dir ? e.dir + "/" : "") + e.prefabName
  130. );
  131. if (
  132. (e.isNotShowLoad || l.default.EasyLoading.hideLoading(),
  133. Log.trace("开启面板完毕:", e.prefabName),
  134. !this._viewLoadingCache[o])
  135. )
  136. return;
  137. delete this._viewLoadingCache[o];
  138. let t = cc.instantiate(s);
  139. ((i = t.getComponent(h.default)).viewId = o),
  140. (t.zIndex = e.zIndex),
  141. (i.controller = e.controller),
  142. (i.node.active = !1),
  143. (this._viewCache[o] = i),
  144. (e.controller[e.prefabName[0].toLocaleLowerCase() + e.prefabName.slice(1)] = i),
  145. e.controller.onLoadView(i);
  146. } catch (t) {
  147. return (
  148. delete this._viewLoadingCache[o],
  149. void Log.error(
  150. `\u52a0\u8f7d\u8d44\u6e90\u9762\u677f\u51fa\u9519,\u9762\u677fid:${o} ${n.ViewConst[o]} `,
  151. t
  152. )
  153. );
  154. }
  155. }
  156. return (
  157. i.isShow()
  158. ? (Log.warn("面板已经打开了:", o), i.reOpen(...t))
  159. : ((this._opens[o] = i).setVisible(!0),
  160. this.addBg(i),
  161. e.isScene && this.curScene && this.curScene.changeScenePre(),
  162. i.addToParent(this.uiRoot),
  163. i.isInit() || (yield i.loadResource(), (i.enabled = !0), i.initUI(), i.initData()),
  164. e.isScene && (this.curScene && this.closeAll([6, o]), (this.curScene = i)),
  165. yield i.open(...t),
  166. e.controller.onOpenView(i),
  167. e.isScene && r.default.ins.hideChangeSceneEffect(),
  168. l.default.NotificationCenter.dispatch(a.ViewManagerEvent.VIEW_IS_OPEN, i.viewId)),
  169. i
  170. );
  171. }
  172. });
  173. }
  174. close(e, ...i) {
  175. if (this._viewLoadingCache[e]) delete this._viewLoadingCache[e];
  176. else if (this.isShow(e)) {
  177. var s = this.getView(e);
  178. Log.trace("关闭面板:", s.name);
  179. let t = this._views[e];
  180. delete this._opens[e],
  181. s.removeFromParent(),
  182. s.close.apply(s, i),
  183. t.controller.onCloseView && t.controller.onCloseView(s);
  184. }
  185. }
  186. closeView(t, ...e) {
  187. this.close(t.viewId, ...e);
  188. }
  189. getView(t) {
  190. return this._opens[t] || this._viewCache[t];
  191. }
  192. closeAll(t) {
  193. for (const i of Object.values(this._opens)) (t && -1 < t.indexOf(i.viewId)) || this.close(i.viewId);
  194. for (const s in this._viewLoadingCache) {
  195. var e = parseInt(s);
  196. (t && -1 < t.indexOf(e)) || this.close(e);
  197. }
  198. }
  199. destoryAllView(t) {
  200. for (const i in this._viewCache) {
  201. var e = this._viewCache[i];
  202. (t && -1 < t.indexOf(e.viewId)) || this.destoryView(parseInt(i));
  203. }
  204. this._viewLoadingCache = {};
  205. }
  206. destoryView(e) {
  207. if (!this._viewLoadingCache[e]) {
  208. let t = this._viewCache[e];
  209. t &&
  210. (t.node && (t.node.parent && t.node.removeFromParent(), t.node.isValid && t.node.destroy()),
  211. t.destroyView());
  212. }
  213. let t = this._views[e];
  214. delete t.controller[t.prefabName[0].toLocaleLowerCase() + t.prefabName.slice(1)],
  215. delete this._viewCache[e],
  216. delete this._viewLoadingCache[e],
  217. delete this._opens[e];
  218. }
  219. releaseViewRes(t) {
  220. var e = this._views[t];
  221. e &&
  222. (this.destoryView(t),
  223. l.default.ResManager.releaseAsset("/prefab/view/" + (e.dir ? e.dir + "/" : "") + e.prefabName, cc.Prefab));
  224. }
  225. currOpenNum() {
  226. return Object.keys(this._opens).length;
  227. }
  228. isShow(t) {
  229. return this._opens[t];
  230. }
  231. isViewLoading(t) {
  232. return this._viewLoadingCache[t];
  233. }
  234. isViewShowOrLoading(t) {
  235. return this._opens[t] || this._viewLoadingCache[t];
  236. }
  237. }
  238. ((a.default = s).VIEW_IS_OPEN = "viewIsOpen"), (s.VIEW_IS_CLOSE = "viewIsClose");