System.register(["__unresolved_0", "cc", "__unresolved_1", "__unresolved_2", "__unresolved_3", "__unresolved_4", "__unresolved_5", "__unresolved_6"], function (_export, _context) { "use strict"; var _reporterNs, _cclegacy, __checkObsolete__, __checkObsoleteInNamespace__, Camera, Layers, Node, ResolutionPolicy, SafeArea, Widget, screen, view, warn, oops, DelegateComponent, LayerDialog, LayerNotify, LayerPopUp, LayerUI, LayerManager, _crd, ScreenAdapterType, LayerType; function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } function _reportPossibleCrUseOfoops(extras) { _reporterNs.report("oops", "../../Oops", _context.meta, extras); } function _reportPossibleCrUseOfUICallbacks(extras) { _reporterNs.report("UICallbacks", "./Defines", _context.meta, extras); } function _reportPossibleCrUseOfDelegateComponent(extras) { _reporterNs.report("DelegateComponent", "./DelegateComponent", _context.meta, extras); } function _reportPossibleCrUseOfLayerDialog(extras) { _reporterNs.report("LayerDialog", "./LayerDialog", _context.meta, extras); } function _reportPossibleCrUseOfLayerNotify(extras) { _reporterNs.report("LayerNotify", "./LayerNotify", _context.meta, extras); } function _reportPossibleCrUseOfLayerPopUp(extras) { _reporterNs.report("LayerPopUp", "./LayerPopup", _context.meta, extras); } function _reportPossibleCrUseOfLayerUI(extras) { _reporterNs.report("LayerUI", "./LayerUI", _context.meta, extras); } _export("LayerManager", void 0); return { setters: [function (_unresolved_) { _reporterNs = _unresolved_; }, function (_cc) { _cclegacy = _cc.cclegacy; __checkObsolete__ = _cc.__checkObsolete__; __checkObsoleteInNamespace__ = _cc.__checkObsoleteInNamespace__; Camera = _cc.Camera; Layers = _cc.Layers; Node = _cc.Node; ResolutionPolicy = _cc.ResolutionPolicy; SafeArea = _cc.SafeArea; Widget = _cc.Widget; screen = _cc.screen; view = _cc.view; warn = _cc.warn; }, function (_unresolved_2) { oops = _unresolved_2.oops; }, function (_unresolved_3) { DelegateComponent = _unresolved_3.DelegateComponent; }, function (_unresolved_4) { LayerDialog = _unresolved_4.LayerDialog; }, function (_unresolved_5) { LayerNotify = _unresolved_5.LayerNotify; }, function (_unresolved_6) { LayerPopUp = _unresolved_6.LayerPopUp; }, function (_unresolved_7) { LayerUI = _unresolved_7.LayerUI; }], execute: function () { _crd = true; _cclegacy._RF.push({}, "7ba675xFGdHqIOykTysNzEu", "LayerManager", undefined); __checkObsolete__(['Camera', 'Layers', 'Node', 'ResolutionPolicy', 'SafeArea', 'Widget', 'screen', 'view', 'warn']); /** 屏幕适配类型 */ _export("ScreenAdapterType", ScreenAdapterType = /*#__PURE__*/function (ScreenAdapterType) { ScreenAdapterType[ScreenAdapterType["Auto"] = 0] = "Auto"; ScreenAdapterType[ScreenAdapterType["Landscape"] = 1] = "Landscape"; ScreenAdapterType[ScreenAdapterType["Portrait"] = 2] = "Portrait"; return ScreenAdapterType; }({})); /** 界面层类型 */ _export("LayerType", LayerType = /*#__PURE__*/function (LayerType) { LayerType["Game"] = "LayerGame"; LayerType["UI"] = "LayerUI"; LayerType["PopUp"] = "LayerPopUp"; LayerType["Dialog"] = "LayerDialog"; LayerType["System"] = "LayerSystem"; LayerType["Notify"] = "LayerNotify"; LayerType["Guide"] = "LayerGuide"; return LayerType; }({})); /** * 界面配置结构体 * @help https://gitee.com/dgflash/oops-framework/wikis/pages?sort_id=12037986&doc_id=2873565 * @example // 界面唯一标识 export enum UIID { Loading = 1, Window, Netinstable } // 打开界面方式的配置数据 export var UIConfigData: { [key: number]: UIConfig } = { [UIID.Loading]: { layer: LayerType.UI, prefab: "loading/prefab/loading", bundle: "resources" }, [UIID.Netinstable]: { layer: LayerType.PopUp, prefab: "common/prefab/netinstable" }, [UIID.Window]: { layer: LayerType.Dialog, prefab: "common/prefab/window" } } */ /** 界面层级管理器 */ _export("LayerManager", LayerManager = class LayerManager { constructor() { /** 界面根节点 */ this.root = void 0; /** 界面摄像机 */ this.camera = void 0; /** 游戏界面特效层 */ this.game = void 0; /** 新手引导层 */ this.guide = void 0; /** 窗口宽高比例 */ this.windowAspectRatio = 0; /** 设计宽高比例 */ this.designAspectRatio = 0; /** 是否开启移动设备安全区域适配 */ this.mobileSafeArea = false; /** 界面层 */ this.ui = void 0; /** 弹窗层 */ this.popup = void 0; /** 只能弹出一个的弹窗 */ this.dialog = void 0; /** 游戏系统提示弹窗 */ this.system = void 0; /** 消息提示控制器,请使用show方法来显示 */ this.notify = void 0; /** UI配置 */ this.configs = {}; } /** * 初始化界面层 * @param root 界面根节点 */ initLayer(root) { this.root = root; this.initScreenAdapter(); this.camera = this.root.getComponentInChildren(Camera); this.game = this.create_node(LayerType.Game); this.ui = new (_crd && LayerUI === void 0 ? (_reportPossibleCrUseOfLayerUI({ error: Error() }), LayerUI) : LayerUI)(LayerType.UI); this.popup = new (_crd && LayerPopUp === void 0 ? (_reportPossibleCrUseOfLayerPopUp({ error: Error() }), LayerPopUp) : LayerPopUp)(LayerType.PopUp); this.dialog = new (_crd && LayerDialog === void 0 ? (_reportPossibleCrUseOfLayerDialog({ error: Error() }), LayerDialog) : LayerDialog)(LayerType.Dialog); this.system = new (_crd && LayerDialog === void 0 ? (_reportPossibleCrUseOfLayerDialog({ error: Error() }), LayerDialog) : LayerDialog)(LayerType.System); this.notify = new (_crd && LayerNotify === void 0 ? (_reportPossibleCrUseOfLayerNotify({ error: Error() }), LayerNotify) : LayerNotify)(LayerType.Notify); this.guide = this.create_node(LayerType.Guide); root.addChild(this.game); root.addChild(this.ui); root.addChild(this.popup); root.addChild(this.dialog); root.addChild(this.system); root.addChild(this.notify); root.addChild(this.guide); } /** 初始化屏幕适配 */ initScreenAdapter() { var drs = view.getDesignResolutionSize(); var ws = screen.windowSize; this.windowAspectRatio = ws.width / ws.height; this.designAspectRatio = drs.width / drs.height; var finalW = 0; var finalH = 0; if (this.windowAspectRatio > this.designAspectRatio) { finalH = drs.height; finalW = finalH * ws.width / ws.height; (_crd && oops === void 0 ? (_reportPossibleCrUseOfoops({ error: Error() }), oops) : oops).log.logView("适配屏幕高度", "【横屏】"); } else { finalW = drs.width; finalH = finalW * ws.height / ws.width; (_crd && oops === void 0 ? (_reportPossibleCrUseOfoops({ error: Error() }), oops) : oops).log.logView("适配屏幕宽度", "【竖屏】"); } view.setDesignResolutionSize(finalW, finalH, ResolutionPolicy.UNKNOWN); if (this.mobileSafeArea) { this.root.addComponent(SafeArea); (_crd && oops === void 0 ? (_reportPossibleCrUseOfoops({ error: Error() }), oops) : oops).log.logView("开启移动设备安全区域适配"); } } /** * 初始化所有UI的配置对象 * @param configs 配置对象 */ init(configs) { this.configs = configs; } /** * 设置窗口打开失败回调 * @param callback 回调方法 */ setOpenFailure(callback) { this.ui.onOpenFailure = this.popup.onOpenFailure = this.dialog.onOpenFailure = this.system.onOpenFailure = callback; } /** * 渐隐飘过提示 * @param content 文本表示 * @param useI18n 是否使用多语言 * @example * oops.gui.toast("提示内容"); */ toast(content, useI18n) { if (useI18n === void 0) { useI18n = false; } this.notify.toast(content, useI18n); } /** 打开等待提示 */ waitOpen() { this.notify.waitOpen(); } /** 关闭等待提示 */ waitClose() { this.notify.waitClose(); } /** * 设置界面配置 * @param uiId 要设置的界面id * @param config 要设置的配置 */ setConfig(uiId, config) { this.configs[uiId] = config; } /** * 同步打开一个窗口 * @param uiId 窗口唯一编号 * @param uiArgs 窗口参数 * @param callbacks 回调对象 * @example var uic: UICallbacks = { onAdded: (node: Node, params: any) => { var comp = node.getComponent(LoadingViewComp) as ecs.Comp; } onRemoved:(node: Node | null, params: any) => { } }; oops.gui.open(UIID.Loading, null, uic); */ open(uiId, uiArgs, callbacks) { if (uiArgs === void 0) { uiArgs = null; } var config = this.configs[uiId]; if (config == null) { warn("\u6253\u5F00\u7F16\u53F7\u4E3A\u3010" + uiId + "\u3011\u7684\u754C\u9762\u5931\u8D25\uFF0C\u914D\u7F6E\u4FE1\u606F\u4E0D\u5B58\u5728"); return; } switch (config.layer) { case LayerType.UI: this.ui.add(config, uiArgs, callbacks); break; case LayerType.PopUp: this.popup.add(config, uiArgs, callbacks); break; case LayerType.Dialog: this.dialog.add(config, uiArgs, callbacks); break; case LayerType.System: this.system.add(config, uiArgs, callbacks); break; } } /** * 异步打开一个窗口 * @param uiId 窗口唯一编号 * @param uiArgs 窗口参数 * @example * var node = await oops.gui.openAsync(UIID.Loading); */ openAsync(uiId, uiArgs) { var _this = this; return _asyncToGenerator(function* () { if (uiArgs === void 0) { uiArgs = null; } return new Promise((resolve, reject) => { var callbacks = { onAdded: (node, params) => { resolve(node); }, onLoadFailure: () => { resolve(null); } }; _this.open(uiId, uiArgs, callbacks); }); })(); } /** * 场景替换 * @param removeUiId 移除场景编号 * @param openUiId 新打开场景编号 * @param uiArgs 新打开场景参数 */ replace(removeUiId, openUiId, uiArgs) { if (uiArgs === void 0) { uiArgs = null; } var callbacks = { onAdded: (node, params) => { this.remove(removeUiId); } }; this.open(openUiId, uiArgs, callbacks); } /** * 异步场景替换 * @param removeUiId 移除场景编号 * @param openUiId 新打开场景编号 * @param uiArgs 新打开场景参数 */ replaceAsync(removeUiId, openUiId, uiArgs) { var _this2 = this; if (uiArgs === void 0) { uiArgs = null; } return new Promise( /*#__PURE__*/_asyncToGenerator(function* (resolve, reject) { var node = yield _this2.openAsync(openUiId, uiArgs); if (node) { _this2.remove(removeUiId); resolve(node); } else { resolve(null); } })); } /** * 缓存中是否存在指定标识的窗口 * @param uiId 窗口唯一标识 * @example * oops.gui.has(UIID.Loading); */ has(uiId) { var config = this.configs[uiId]; if (config == null) { warn("\u7F16\u53F7\u4E3A\u3010" + uiId + "\u3011\u7684\u754C\u9762\u914D\u7F6E\u4E0D\u5B58\u5728\uFF0C\u914D\u7F6E\u4FE1\u606F\u4E0D\u5B58\u5728"); return false; } var result = false; switch (config.layer) { case LayerType.UI: result = this.ui.has(config.prefab); break; case LayerType.PopUp: result = this.popup.has(config.prefab); break; case LayerType.Dialog: result = this.dialog.has(config.prefab); break; case LayerType.System: result = this.system.has(config.prefab); break; } return result; } /** * 缓存中是否存在指定标识的窗口 * @param uiId 窗口唯一标识 * @example * oops.gui.has(UIID.Loading); */ get(uiId) { var config = this.configs[uiId]; if (config == null) { warn("\u7F16\u53F7\u4E3A\u3010" + uiId + "\u3011\u7684\u754C\u9762\u914D\u7F6E\u4E0D\u5B58\u5728\uFF0C\u914D\u7F6E\u4FE1\u606F\u4E0D\u5B58\u5728"); return null; } var result = null; switch (config.layer) { case LayerType.UI: result = this.ui.get(config.prefab); break; case LayerType.PopUp: result = this.popup.get(config.prefab); break; case LayerType.Dialog: result = this.dialog.get(config.prefab); break; case LayerType.System: result = this.system.get(config.prefab); break; } return result; } /** * 移除指定标识的窗口 * @param uiId 窗口唯一标识 * @param isDestroy 移除后是否释放 * @example * oops.gui.remove(UIID.Loading); */ remove(uiId, isDestroy) { var config = this.configs[uiId]; if (config == null) { warn("\u5220\u9664\u7F16\u53F7\u4E3A\u3010" + uiId + "\u3011\u7684\u754C\u9762\u5931\u8D25\uFF0C\u914D\u7F6E\u4FE1\u606F\u4E0D\u5B58\u5728"); return; } switch (config.layer) { case LayerType.UI: this.ui.remove(config.prefab, isDestroy); break; case LayerType.PopUp: this.popup.remove(config.prefab, isDestroy); break; case LayerType.Dialog: this.dialog.remove(config.prefab, isDestroy); break; case LayerType.System: this.system.remove(config.prefab, isDestroy); break; } } /** * 删除一个通过this框架添加进来的节点 * @param node 窗口节点 * @param isDestroy 移除后是否释放资源 * @example * oops.gui.removeByNode(cc.Node); */ removeByNode(node, isDestroy) { if (node instanceof Node) { var comp = node.getComponent(_crd && DelegateComponent === void 0 ? (_reportPossibleCrUseOfDelegateComponent({ error: Error() }), DelegateComponent) : DelegateComponent); if (comp && comp.vp) { // 释放显示的界面 if (node.parent) { node.parent.remove(comp.vp.config.prefab, isDestroy); } // 释放缓存中的界面 else if (isDestroy) { switch (comp.vp.config.layer) { case LayerType.UI: // @ts-ignore 注:不对外使用 this.ui.removeCache(comp.vp.config.prefab); break; case LayerType.PopUp: // @ts-ignore 注:不对外使用 this.popup.removeCache(comp.vp.config.prefab); break; case LayerType.Dialog: // @ts-ignore 注:不对外使用 this.dialog.removeCache(comp.vp.config.prefab); break; case LayerType.System: // @ts-ignore 注:不对外使用 this.system.removeCache(comp.vp.config.prefab); break; } } } else { warn("\u5F53\u524D\u5220\u9664\u7684node\u4E0D\u662F\u901A\u8FC7\u754C\u9762\u7BA1\u7406\u5668\u6DFB\u52A0\u5230\u821E\u53F0\u4E0A"); node.destroy(); } } } /** * 清除所有窗口 * @param isDestroy 移除后是否释放 * @example * oops.gui.clear(); */ clear(isDestroy) { if (isDestroy === void 0) { isDestroy = false; } this.ui.clear(isDestroy); this.popup.clear(isDestroy); this.dialog.clear(isDestroy); this.system.clear(isDestroy); } create_node(name) { var node = new Node(name); node.layer = Layers.Enum.UI_2D; var w = node.addComponent(Widget); w.isAlignLeft = w.isAlignRight = w.isAlignTop = w.isAlignBottom = true; w.left = w.right = w.top = w.bottom = 0; w.alignMode = 2; w.enabled = true; return node; } }); _cclegacy._RF.pop(); _crd = false; } }; }); //# sourceMappingURL=af918a421bbf8d65fc298cc8d8cc4aae5f37ce8e.js.map