@shimotsuki/core 3.0.40 → 3.0.42
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/shimotsuki_core.js +2527 -1
- package/package.json +1 -1
package/dist/shimotsuki_core.js
CHANGED
|
@@ -1 +1,2527 @@
|
|
|
1
|
-
import e from"@babel/runtime-corejs3/core-js/global-this";import{AudioSource as t,_decorator as i,AudioClip as o,error as n,Node as s,director as r,log as a,Component as c,Prefab as l,instantiate as h,isValid as d,Layers as u,view as p,Widget as f,v3 as m,tween as _,Enum as g,game as y,Label as v,UIOpacity as b,Tween as C,BlockInputEvents as E,Button as S,Game as w,Director as A,assetManager as I,warn as O,AsyncDelegate as T,Asset as k,resources as R,sys as M,SpriteFrame as U,Sprite as N}from"cc";import D from"@babel/runtime-corejs3/core-js-stable/reflect/get";import x from"@babel/runtime-corejs3/core-js-stable/reflect/set";import j from"@babel/runtime-corejs3/core-js-stable/object/assign";import F from"@babel/runtime-corejs3/core-js-stable/promise";import L from"eventemitter3";import B from"@babel/runtime-corejs3/core-js-stable/instance/includes";import P from"@babel/runtime-corejs3/core-js-stable/json/stringify";import G from"@babel/runtime-corejs3/core-js-stable/map";import H from"@babel/runtime-corejs3/core-js-stable/instance/for-each";import $ from"@babel/runtime-corejs3/core-js-stable/instance/filter";import K from"@babel/runtime-corejs3/core-js-stable/array/is-array";import W from"@babel/runtime-corejs3/core-js-stable/reflect/own-keys";import V from"@babel/runtime-corejs3/core-js-stable/instance/bind";import{makeObservable as z,observable as q,autorun as Q,reaction as J}from"@shimotsuki/mobx";import X from"@babel/runtime-corejs3/core-js-stable/set-timeout";import Z from"@babel/runtime-corejs3/core-js-stable/instance/map";import Y from"@babel/runtime-corejs3/core-js-stable/array/from";import ee from"@babel/runtime-corejs3/core-js-stable/date/now";import te from"@babel/runtime-corejs3/core-js-stable/instance/every";import{SocketConnectStatus as ie}from"pitayaclient";import{DEBUG as oe,WECHAT as ne,PREVIEW as se}from"cc/env";import{SocialGameClient as re}from"sgc";import ae from"crypto-es";import ce from"@babel/runtime-corejs3/core-js-stable/set-interval";import le from"@babel/runtime-corejs3/core-js-stable/instance/values";import he from"@babel/runtime-corejs3/core-js-stable/instance/entries";class CommonAudio extends t{cat;initAudio(e){return this.cat=e,this}}const{ccclass:de,menu:ue}=i;let pe=class AudioEffect extends CommonAudio{effects=(()=>new G)();load(e,t){return new F((i,n)=>{let s,r=null;void 0!==t?(r=e,s=t):s=e;const a=(e,t)=>{if(e)return n(e);this.effects.set(s,t),this.playOneShot(t,this.volume),i(t)};r?this.cat.res.load(r,s,o,a):this.cat.res.load(s,o,a)})}release(){for(let e in this.effects)this.cat.res.release(e);this.effects.clear()}};const{ccclass:fe,menu:me}=i;class AudioMusic extends CommonAudio{onComplete=null;_progress=0;_url=null;_isPlay=!1;get progress(){return this.duration>0&&(this._progress=this.currentTime/this.duration),this._progress}set progress(e){this._progress=e,this.currentTime=e*this.duration}load(e,t){return new F((i,s)=>{let r,a=null;void 0!==t?(a=e,r=t):r=e;const c=(e,t)=>{if(e)return n(e),s(e);this.playing&&(this._isPlay=!1,this.stop(),this.cat.res.release(this._url)),this.playOnAwake=!1,this.enabled=!0,this.clip=t,this._url=r,i(t)};a?this.cat.res.load(a,r,o,c):this.cat.res.load(r,o,c)})}update(e){this.currentTime>0&&(this._isPlay=!0),this._isPlay&&0==this.playing&&(this._isPlay=!1,this.enabled=!1,this.onComplete&&this.onComplete())}release(){this._url&&(this.cat.res.release(this._url),this._url=null)}}class BaseManager{cat;constructor(e){this.cat=e}}var _e;!function(e){e.MUSIC_ON="AudioEventConstant/MUSIC_ON",e.MUSIC_OFF="AudioEventConstant/MUSIC_OFF",e.EFFECT_ON="AudioEventConstant/EFFECT_ON",e.EFFECT_OFF="AudioEventConstant/EFFECT_OFF",e.PAUSE_AUDIO="AudioEventConstant/PAUSE_AUDIO",e.RESUME_AUDIO="AudioEventConstant/RESUME_AUDIO"}(_e||(_e={}));class AudioManager extends BaseManager{local_data={};music;effect;_volume_music=1;_volume_effect=1;_switch_music=!0;_switch_effect=!0;local_store_key="game_audio";extra={};constructor(e){super(e),this.local_store_key=this.cat.audio_local_store_key;var t=new s("UIAudioManager");r.addPersistRootNode(t);var i=new s("UIMusic");i.parent=t,this.music=i.addComponent(AudioMusic).initAudio(e);var o=new s("UIEffect");o.parent=t,this.effect=o.addComponent(pe).initAudio(e),this.load()}setMusicComplete(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;this.music.onComplete=e}async playMusic(e,t){let i,o;this.music.loop=!0,void 0!==t?(o=e,i=t):i=e,i.length&&await(o?this.music.load(o,i):this.music.load(i)).then(()=>{this._switch_music&&this.music.play()})}stopMusic(){0!=this.music.state&&this.music?.stop()}pauseMusic(){1==this.music.state&&this.music?.pause()}resumeMusic(){var e;B(e=[0,2]).call(e,this.music.state)&&this.music?.play()}get progressMusic(){return this.music.progress}set progressMusic(e){this.music.progress=e}get volumeMusic(){return this._volume_music}set volumeMusic(e){this._volume_music=e,this.music.volume=e}get switchMusic(){return this._switch_music}set switchMusic(e){if(a("设置背景音乐开关值",e,this._switch_music),e==this._switch_music)return;this._switch_music=e,e?this.resumeMusic():this.pauseMusic();const t=e?_e.MUSIC_ON:_e.MUSIC_OFF;this.cat.event.emit(t),this.save()}async playEffect(e,t){if(!this._switch_effect)return;let i,o;void 0!==t?(o=e,i=t):i=e,i.length&&await(o?this.effect.load(o,i):this.effect.load(i)).then(()=>{this.effect.play()})}stopEffect(){this.effect?.stop()}get volumeEffect(){return this._volume_effect}set volumeEffect(e){this._volume_effect=e,this.effect.volume=e}get switchEffect(){return this._switch_effect}set switchEffect(e){if(e==this._switch_effect)return;this._switch_effect=e,e?this.effect?.play():this.effect?.stop();const t=e?_e.EFFECT_ON:_e.EFFECT_OFF;this.cat.event.emit(t),this.save()}resumeAll(){this.switchMusic&&this.music?.play(),this.switchEffect&&this.effect?.play()}pauseAll(){this.music?.pause(),this.effect?.pause()}stopAll(){this.music?.stop(),this.effect?.stop()}save(){this.local_data.volume_music=this._volume_music,this.local_data.volume_effect=this._volume_effect,this.local_data.switch_music=this._switch_music,this.local_data.switch_effect=this._switch_effect,this.local_data.extra=this.extra;let e=P(this.local_data);return this.cat.storage.set(this.local_store_key,e),this}load(){try{let e=this.cat.storage.get(this.local_store_key);this.local_data=JSON.parse(e),this._volume_music=this.local_data.volume_music,this._volume_effect=this.local_data.volume_effect,this._switch_music=this.local_data.switch_music,this._switch_effect=this.local_data.switch_effect,this.extra=this.local_data.extra}catch(e){this.local_data={},this._volume_music=.6,this._volume_effect=1,this._switch_music=!0,this._switch_effect=!0,this.extra={}}this.music&&(this.music.volume=this._volume_music),this.effect&&(this.effect.volume=this._volume_effect)}}function ge(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r}function ye(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)}"function"==typeof SuppressedError&&SuppressedError;class BaseComponent extends c{props={};data={};cat=(()=>e._cat)();autorunDisposers=[];reactionDisposers=[];eventEmitter=[];hook={destroyed:()=>{},started:()=>{}};initUI(){}__preload(){this.initUI(),this.onAutoObserver()}constructor(){super(),z(this,{props:q,data:q})}onAutoObserver(){}addAutorun(e){const t=K(e)?e:[e];return H(t).call(t,e=>{const t=Q(e);this.autorunDisposers.push(t)}),this}addReaction(e,t,i){const o=J(e,t,i);return this.reactionDisposers.push(o),this}addAudoListener(e){var t;return B(t=this.eventEmitter).call(t,e)||e===this.cat.event||this.eventEmitter.push(e),e}_onPreDestroy(){var e,t;if(H(e=this.autorunDisposers).call(e,e=>{e()}),H(t=this.reactionDisposers).call(t,e=>{e()}),this.autorunDisposers=[],this.reactionDisposers=[],!super._onPreDestroy)throw new Error("_onPreDestroy已弃用");super._onPreDestroy()}onDisable(){var e;this.onHide(),this.deleteAllEventByEmitter(this.cat.event),H(e=this.eventEmitter).call(e,e=>{this.deleteAllEventByEmitter(e)}),this.eventEmitter=[],this.removeListener()}deleteAllEventByEmitter(e){const t=e._events;for(const i in t){let o=t[i];K(o)||(o=[o]),H(o).call(o,t=>{t.context===this&&e.off(i,t.fn,this)})}}onEnable(){this.onShow(),this.addListener(),this.onEventListener()}onEventListener(){}addListener(){}removeListener(){}addToParent(e,t,i){const o=e instanceof l?h(e):e instanceof c?e.node:e;if("number"==typeof t){const e=t,n=i;this.setOptions(n),o.insertChild(this.node,e)}else{const e=t;this.setOptions(e),o.addChild(this.node)}return this}setOptions(e){if(e)for(let t in e)switch(t){case"hook":e.hook&&(this.hook=e.hook);break;case"props":null!==e.props&&"object"==typeof e.props&&(this.props=e.props);break;case"data":null!==e.data&&"object"==typeof e.data&&(this.data=e.data)}}setUpdateData(e){if(this.data)return e&&j(this.data,this.toPlainObject(e)),this}setUpdateProps(e){if(this.props)return e&&j(this.props,this.toPlainObject(e)),this}toPlainObject(e){const t={};for(const i of W(e))if("string"==typeof i)try{t[i]=e[i]}catch{}return t}removeAndDestroy(){d(this?.node)&&(this.node.removeFromParent(),this.node.destroy())}setPosition(e){return this.node.setPosition(e),this}setScale(e){return this.node.setScale(e),this}setAngle(e){return this.node.angle=e,this}setRotation(e){return this.node.setRotation(e),this}setRotationFromEuler(e){return this.node.setRotationFromEuler(e),this}onShow(){}onHide(){}setNodeAndChildrenLayer(e){return ve(this.node,e),this}}const ve=(e,t)=>{var i,o,n;e.layer="string"==typeof t?2**u.nameToLayer(t):t,(null==(i=e)?void 0:V(n=Function.call).call(n,H(o=i.children),o))?.(e=>{ve(e,t)})};class UILayer extends BaseComponent{lastEnterDirection="center";screen;isClosing=!1;root;constructor(){super(),this._init()}_init(){this.root=this.node,this.screen=p.getVisibleSize()}async showTween(e){let{isMotion:t=!0,direction:i="center",duration:o=.1,isBounce:n=!0,bounceDuration:s=.05}=e;if(this.lastEnterDirection=i,t){const e=this.node.getComponent(f);let t,s;e&&(e.updateAlignment(),e.enabled=!1),m(1.1,1.1,1),"center"==i?(t=m(.01,.01,.01),s=m(1,1,1)):(t="left"==i?m(-this.screen.width,0,0):"right"==i?m(this.screen.width,0,0):m(0,"top"==i?this.screen.height:-this.screen.height,0),s=m(0,0,0)),await this.handle(i,o,t,s,n),e&&(e.enabled=!0)}}async hideTween(e){let{isMotion:t=!0,direction:i,duration:o=.1}=e;if(i=i||this.lastEnterDirection,!this.isClosing){if(this.isClosing=!0,_(this.node).removeSelf(),t){const e=this.node.getComponent(f);let t,n;e&&(e.enabled=!1),"center"==i?(t=this.node.scale,n=m(0,0,0)):(n="left"==i?m(-this.screen.width,0,0):"right"==i?m(this.screen.width,0,0):m(0,"top"==i?this.screen.height:-this.screen.height,0),t=this.node.getPosition()),await this.handle(i,o,t,n,!1)}this.removeAndDestroy()}}async handle(e,t,i,o,n){"center"==e?this.node.setScale(i):this.node.setPosition(i),await this.deftween(t,{["center"==e?"scale":"position"]:o},n)}deftween(e,t,i,o){return new F((i,o)=>{_(this.node).to(e,t).call(()=>{i()}).start()})}}var be;const{ccclass:Ce,property:Ee}=i;var Se,we;!function(e){e[e.EFFECT=0]="EFFECT",e[e.BGM=1]="BGM"}(Se||(Se={}));class AudioSourceBaseComponent extends BaseComponent{type=(()=>Se.EFFECT)();clip=null;loop=!1;volume=1;playOnAwake=!1;audioSource=(()=>new t)();onEnable(){super.onEnable(),this.clip&&(this.audioSource.clip=this.clip),this.audioSource.loop=this.loop,this.audioSource.volume=this.volume,this.audioSource.playOnAwake=this.playOnAwake,this.cat.event.on(_e.EFFECT_ON,this.onPlayEffectHandler,this).on(_e.EFFECT_OFF,this.onStopEffectHandler,this).on(_e.MUSIC_ON,this.onPlayMusicHandler,this).on(_e.MUSIC_OFF,this.onStopMusicHandler,this)}__preload(){super.__preload();const{volumeEffect:e,volumeMusic:t}=this.cat.audio;this.audioSource.volume=this.type===Se.BGM?t:e}start(){}stopAudio(){this.audioSource.stop()}playAudio(){const{switchEffect:e,switchMusic:t}=this.cat.audio;this.audioSource.playing||!(this.type===Se.BGM?t:e)||y._paused||this.audioSource.play()}onPlayEffectHandler(){}onStopEffectHandler(){this.stopAudio()}onPlayMusicHandler(){}onStopMusicHandler(){this.stopAudio()}_onPreDestroy(){this.onStopMusicHandler(),super._onPreDestroy()}}ge([Ee({tooltip:"类型:\n EFFECT 音效\n BGM 音乐",type:g(Se)}),ye("design:type",Number)],AudioSourceBaseComponent.prototype,"type",void 0),ge([Ee({tooltip:"音源",type:o}),ye("design:type","function"==typeof(be=void 0!==o&&o)?be:Object)],AudioSourceBaseComponent.prototype,"clip",void 0),ge([Ee({tooltip:"循环"}),ye("design:type",Boolean)],AudioSourceBaseComponent.prototype,"loop",void 0),ge([Ee({tooltip:"音量"}),ye("design:type",Number)],AudioSourceBaseComponent.prototype,"volume",void 0),ge([Ee({tooltip:"是否启用自动播放"}),ye("design:type",Boolean)],AudioSourceBaseComponent.prototype,"playOnAwake",void 0);const{ccclass:Ae,property:Ie}=i;class AudioSourceUILayer extends UILayer{type=(()=>Se.EFFECT)();clip=null;loop=!1;volume=1;playOnAwake=!1;audioSource=(()=>new t)();onEnable(){super.onEnable(),this.cat.event.on(_e.EFFECT_ON,this.onPlayEffectHandler,this).on(_e.EFFECT_OFF,this.onStopEffectHandler,this).on(_e.MUSIC_ON,this.onPlayMusicHandler,this).on(_e.MUSIC_OFF,this.onStopMusicHandler,this)}__preload(){this.clip&&(this.audioSource.clip=this.clip),this.audioSource.loop=this.loop,this.audioSource.volume=this.volume,this.audioSource.playOnAwake=this.playOnAwake,super.__preload();const{volumeEffect:e,volumeMusic:t}=this.cat.audio;this.audioSource.volume=this.type===Se.BGM?t:e}stopAudio(){this.audioSource.stop()}playAudio(){const{switchEffect:e,switchMusic:t}=this.cat.audio;this.audioSource.playing||!(this.type===Se.BGM?t:e)||y._paused||this.audioSource.play()}onPlayEffectHandler(){}onStopEffectHandler(){this.stopAudio()}onPlayMusicHandler(){}onStopMusicHandler(){this.stopAudio()}_onPreDestroy(){this.onStopMusicHandler(),super._onPreDestroy()}}var Oe,Te,ke,Re;ge([Ie({tooltip:"类型:\n EFFECT 音效\n BGM 音乐",type:g(Se)}),ye("design:type",Number)],AudioSourceUILayer.prototype,"type",void 0),ge([Ie({tooltip:"音源",type:o}),ye("design:type","function"==typeof(we=void 0!==o&&o)?we:Object)],AudioSourceUILayer.prototype,"clip",void 0),ge([Ie({tooltip:"循环"}),ye("design:type",Boolean)],AudioSourceUILayer.prototype,"loop",void 0),ge([Ie({tooltip:"音量"}),ye("design:type",Number)],AudioSourceUILayer.prototype,"volume",void 0),ge([Ie({tooltip:"是否启用自动播放"}),ye("design:type",Boolean)],AudioSourceUILayer.prototype,"playOnAwake",void 0);const{ccclass:Me,property:Ue,menu:Ne}=i;var De;!function(e){e[e.FIXED=0]="FIXED",e[e.SLIDE=1]="SLIDE"}(De||(De={}));let xe=class CoreToast extends BaseComponent{fixed_node;slide_node;fixed_label;slide_label;onLoad(){this.fixed_node.active=this.slide_node.active=!1}start(){this.show()}async show(){return new F(async(e,t)=>{const{title:i,type:o,fixed_time:n}=this.props;o==De.FIXED?(this.fixed_node.active=!0,this.fixed_label.string=`${i}`,this.scheduleOnce(()=>{this.node.destroy(),e()},n)):(this.slide_node.active=!0,this.slide_label.string=`${i}`,this.playAnim(this.node).then(()=>{e()}))})}playAnim(e){return new F((t,i)=>{const o=this.node.getComponent(b),n=_(o).delay(1.2).to(.5,{opacity:0}).call(()=>{C.stopAllByTarget(e),this.node.destroy(),t()});_(e).by(.5,{position:m(0,400,0)}).call(()=>{n.start()}).start()})}onDestroy(){C.stopAllByTarget(this.node),this.unscheduleAllCallbacks()}};var je,Fe;ge([Ue({type:s,tooltip:"固定节点"}),ye("design:type","function"==typeof(Oe=void 0!==s&&s)?Oe:Object)],xe.prototype,"fixed_node",void 0),ge([Ue({type:s,tooltip:"滑动节点"}),ye("design:type","function"==typeof(Te=void 0!==s&&s)?Te:Object)],xe.prototype,"slide_node",void 0),ge([Ue({type:v,tooltip:"固定标签节点"}),ye("design:type","function"==typeof(ke=void 0!==v&&v)?ke:Object)],xe.prototype,"fixed_label",void 0),ge([Ue({type:v,tooltip:"滑动标签节点"}),ye("design:type","function"==typeof(Re=void 0!==v&&v)?Re:Object)],xe.prototype,"slide_label",void 0),xe=ge([Me("CoreToast"),Ne("CATCORE/CoreToast")],xe),function(e){e.EVENT_SHOW="GlobalEventConstant/EVENT_SHOW",e.EVENT_HIDE="GlobalEventConstant/EVENT_HIDE",e.GAME_RESIZE="GlobalEventConstant/GAME_RESIZE",e.EVENT_CLOSE="GlobalEventConstant/EVENT_CLOSE",e.ONLINE="GlobalEventConstant/ONLINE",e.OFFLINE="GlobalEventConstant/OFFLINE",e.ROOT_MASK_UPDATE="GlobalEventConstant/ROOT_MASK_UPDATE",e.ROOT_MASK_CHANGE="GlobalEventConstant/ROOT_MASK_CHANGE"}(je||(je={}));const{ccclass:Le,property:Be,menu:Pe}=i;let Ge=class CoreBlackMask extends BaseComponent{tween};var He,$e;ge([Be({type:s,tooltip:"动画节点"}),ye("design:type","function"==typeof(Fe=void 0!==s&&s)?Fe:Object)],Ge.prototype,"tween",void 0),Ge=ge([Le("CoreBlackMask"),Pe("CATCORE/CoreBlackMask")],Ge);const{ccclass:Ke,property:We,menu:Ve}=i;let ze=class CoreUIContainer extends UILayer{scene_mask_node;ui_container;gui=null;onLoad(){this.setSceneMaskActive(!1)}get scene_mask(){return this.scene_mask_node.getComponent(Ge)}get brother(){return this.ui_container.children||[]}get tweenChildren(){return this.scene_mask.tween.children}onEventListener(){this.cat.event.on(je.ROOT_MASK_CHANGE,this.uiMaskChanged,this)}addMask(){const e=this.brother[this.brother.length-1];e&&this.scene_mask.node.setSiblingIndex(e.getSiblingIndex()),this.blockMaskSiblingIndexChanged()}subMask(){const e=this.brother[this.brother.length-2];e&&this.scene_mask.node.setSiblingIndex(e.getSiblingIndex()),this.blockMaskSiblingIndexChanged()}blockMaskSiblingIndexChanged(){this.tweenChildren.length>1||this.brother.length>1?this.show():this.hide()}addNodeToTween(e){return d(this)&&this.scene_mask&&this.scene_mask.tween.addChild(e),this}show(){this.setSceneMaskActive(!0)}hide(){this.setSceneMaskActive(!1)}setGui(e){return this.gui=e,this}uiMaskChanged(){this.blockMaskSiblingIndexChanged()}setSceneMaskActive(e){this.scene_mask.node.active=e}};ge([We({type:s}),ye("design:type","function"==typeof(He=void 0!==s&&s)?He:Object)],ze.prototype,"scene_mask_node",void 0),ge([We({type:s}),ye("design:type","function"==typeof($e=void 0!==s&&s)?$e:Object)],ze.prototype,"ui_container",void 0),ze=ge([Ke("CoreUIContainer"),Ve("CATCORE/CoreUIContainer")],ze);class RootUILayer extends UILayer{onEnable(){super.onEnable(),this.updateMask()}onDisable(){super.onDisable(),this.updateMask()}updateMask(){this.cat.event.emit(je.ROOT_MASK_UPDATE)}}var qe,Qe;const{ccclass:Je,property:Xe,menu:Ze}=i;let Ye=class CoreShowLoading extends RootUILayer{title;loadingTween;loading_rotate=0;onAutoObserver(){this.addAutorun([()=>{this.props?.title&&(this.title.string=`${this.props?.title}`),this.title.node.active=!!this.props?.title?.length},()=>{this.getComponent(E).enabled=!!this.props?.mask}])}update(e){this.loading_rotate+=220*e,this.loadingTween.setRotationFromEuler(0,0,-this.loading_rotate%360),this.loading_rotate>360&&(this.loading_rotate-=360)}};var et,tt,it,ot;ge([Xe({type:v,tooltip:"标题"}),ye("design:type","function"==typeof(qe=void 0!==v&&v)?qe:Object)],Ye.prototype,"title",void 0),ge([Xe({type:s,tooltip:"动画"}),ye("design:type","function"==typeof(Qe=void 0!==s&&s)?Qe:Object)],Ye.prototype,"loadingTween",void 0),Ye=ge([Je("CoreShowLoading"),Ze("CATCORE/CoreShowLoading")],Ye),function(e){e.RECONNECTED="重连成功",e.RECONNECTING="正在重连",e.MAX_RECONNECT="重连次数超出限制,请检查网络",e.RECONNECTED_ERROR="重连失败,请检查网络",e.CONNECT_PARAM_ERROR="游戏参数错误,请重新加载",e.KICK="账号已下线",e.OFFLINE="网络已断开",e.ONLINE="网络已连接",e.GAME_ERROR="连接游戏服错误"}(et||(et={}));const{ccclass:nt,property:st,menu:rt}=i;let at=class CoreReconnection extends RootUILayer{common_prompt_text;btn_confirm;btn_close;is_close=!1;props={content:null};initUI(){}onLoad(){this.btn_confirm.node.on(S.EventType.CLICK,this.onConfirmHandler,this),this.btn_close.node.on(S.EventType.CLICK,this.onConfirmHandler,this),this.addAutorun([()=>{this.common_prompt_text.string=this.props.content??""}])}onDestroy(){this.unscheduleAllCallbacks()}updateProps(e){this.updatePromptText(e,e==et.RECONNECTING)}updatePromptText(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(this.unscheduleAllCallbacks(),this.props.content=e,a("更新提示文案:",e),t){let t=0;const i=()=>{t=(t+1)%4,this.common_prompt_text.string=e+["","·","··","···"][t]};this.schedule(i,.5)}}onConfirmHandler(){this.is_close=!0,this.cat.gui.hideReconnect()}};var ct,lt,ht;ge([st({type:v,tooltip:"通用提示文本"}),ye("design:type","function"==typeof(tt=void 0!==v&&v)?tt:Object)],at.prototype,"common_prompt_text",void 0),ge([st({type:S,tooltip:"确定按钮"}),ye("design:type","function"==typeof(it=void 0!==S&&S)?it:Object)],at.prototype,"btn_confirm",void 0),ge([st({type:S,tooltip:"关闭按钮"}),ye("design:type","function"==typeof(ot=void 0!==S&&S)?ot:Object)],at.prototype,"btn_close",void 0),at=ge([nt("CoreReconnection"),rt("CATCORE/CoreReconnection")],at);const{ccclass:dt,property:ut,menu:pt}=i;let ft=class CoreNotice extends RootUILayer{text;btn_confirm;btn_close;props={text:"",confrim:()=>{}};onLoad(){this.btn_confirm.node.on(S.EventType.CLICK,this.onConfrimHandler,this)}start(){this.props&&this.updateProps(this.props)}onConfrimHandler(){this.props?.confrim?.(),this.cat.gui.hideNotice()}updateProps(e){this.text.string=`${e.text}`,this.btn_confirm.node.active=!!e.confrim}};ge([ut({type:v,tooltip:"提示文本"}),ye("design:type","function"==typeof(ct=void 0!==v&&v)?ct:Object)],ft.prototype,"text",void 0),ge([ut({type:S,tooltip:"确定按钮"}),ye("design:type","function"==typeof(lt=void 0!==S&&S)?lt:Object)],ft.prototype,"btn_confirm",void 0),ge([ut({type:S,tooltip:"关闭按钮"}),ye("design:type","function"==typeof(ht=void 0!==S&&S)?ht:Object)],ft.prototype,"btn_close",void 0),ft=ge([dt("CoreNotice"),pt("CATCORE/CoreNotice")],ft);class SceneLayer extends BaseComponent{isReload}var mt,_t,gt,yt,vt,bt,Ct,Et;const{ccclass:St,property:wt,menu:At}=i;var It;!function(e){e[e.UI=0]="UI",e[e.LOADING=1]="LOADING",e[e.TOAST=2]="TOAST",e[e.RECONNECTTION=3]="RECONNECTTION",e[e.NOTICE=4]="NOTICE"}(It||(It={}));let Ot=class Gui extends BaseComponent{reconnection_ui_prefab;toast_ui_prefab;loading_ui_prefab;notice_ui_prefab;ui_prefab;root_ui;root_toast;root_mask;ui_container_component=null;reconnection_ui_component=null;notice_ui_component=null;loading_ui_component=null;toast_ui_component;currentScene;currentSceneUUID;onEventListener(){this.cat.event.on(je.ROOT_MASK_UPDATE,this.onRootUpdate,this)}initedScene=!1;engineReady=!1;sceneReady=!1;_scene=null;init(e){return this.cat=e,y.once(w.EVENT_ENGINE_INITED,()=>{this.engineReady=!0,this.tryInit()}),r.once(A.EVENT_AFTER_SCENE_LAUNCH,e=>{this.sceneReady=!0,this._scene=e,this.tryInit()}),this}tryInit(){this.engineReady&&this.sceneReady&&(this.initedScene||(this.initedScene=!0,console.log("首场景初始化完成"),this.changeScene(this._scene)))}start(){this.onRootUpdate()}toastQueue=[];isScheduling=!1;minInterval=.2;showToast(e){this.toastQueue.push(e),this.isScheduling||this.processQueueWithInterval()}processQueueWithInterval(){if(0===this.toastQueue.length)return void(this.isScheduling=!1);this.isScheduling=!0;const e=this.toastQueue.shift(),t=()=>{h(this.toast_ui_prefab).getComponent(xe).addToParent(this.root_toast,{props:e}),this.scheduleOnce(()=>{this.processQueueWithInterval()},this.minInterval)};0===this.root_toast.children.length?t():this.scheduleOnce(t,this.minInterval)}hideToast(){var e;this.root_toast&&H(e=this.root_toast.children).call(e,e=>{e.getComponent(xe)?.removeAndDestroy()});return this.toastQueue=[],this.unschedule(this.processQueueWithInterval),this.isScheduling=!1,this}showLoading(){let{title:e="",mask:t=!0,black:i=!0}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(a("showLoading",e),this.loading_ui_component)this.loading_ui_component.setOptions({props:{title:e,mask:t,black:i}});else{const o=h(this.loading_ui_prefab);this.loading_ui_component=o.getComponent(Ye).addToParent(this.root_ui,{props:{title:e,mask:t,black:i}})}return this}hideLoading(){return this.loading_ui_component?.removeAndDestroy(),this.loading_ui_component=null,this}showReconnect(e){if(this.reconnection_ui_component)this.reconnection_ui_component.setUpdateProps({content:e});else{const t=h(this.reconnection_ui_prefab);this.reconnection_ui_component=t.getComponent(at).addToParent(this.root_ui,{props:{content:e}})}return this}hideReconnect(){return this.reconnection_ui_component?.removeAndDestroy(),this.reconnection_ui_component=null,this}showNotice(e){if(this.notice_ui_component)this.notice_ui_component.setUpdateProps(e);else{const t=h(this.notice_ui_prefab);this.notice_ui_component=t.getComponent(ft).addToParent(this.root_ui,{props:e})}return this}hideNotice(){return this.notice_ui_component?.removeAndDestroy(),this.notice_ui_component=null,this}findBundleBySceneUUID(e){const t=I.bundles._map;for(const i in t){const o=t[i],n=o.config?.scenes?._map;if(n)for(const t in n){const i=n[t];if(i?.uuid===e)return o}}return null}findSceneByUUIDFromBundle(e,t){}loadScene(e,t,i,o){let s;a("[加载场景参数]",e,t,i,o);let c,l=!0;const h=[t,i,o];for(const e of h)"boolean"==typeof e?l=e:"function"==typeof e?c=e:e&&"object"==typeof e&&(s=e);if(r.once(A.EVENT_BEFORE_SCENE_LAUNCH,e=>{this.changeScene(e,s??{},l)}),r.once(A.EVENT_AFTER_SCENE_LAUNCH,()=>{c?.()}),"string"==typeof e){const t=this.findBundleBySceneUUID(e);if(t)if("main"!==t.name)t.loadScene(this.currentScene,(e,t)=>{if(e)return n("loadScene err",e);r.runScene(t)});else{const i=t.getAssetInfo(e);i?.url&&r.loadScene(i.url)}else r.loadScene(e)}else r.runScene(e);return this}resetScene(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return e=e||this.currentScene,this.loadScene(e)}cleanScene(){this.resetScene().hideLoading().hideNotice().hideReconnect().hideToast()}changeScene(e,t,i){this.currentScene=e.name,this.currentSceneUUID=e.uuid,this.createUILayer(e);const o=e.getComponentInChildren(SceneLayer);a("给场景传递属性值=======",o),o&&(o.isReload=i??!0),o?.setOptions(t)}createUILayer(e){this.ui_container_component?.removeAndDestroy(),this.ui_container_component=null;const t=h(this.ui_prefab);this.ui_container_component=t.getComponent(ze),this.ui_container_component?.setGui(this).addToParent(e,this.node.getSiblingIndex())}reloadScene(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:()=>{};a("重新加载当前场景"),this.loadScene(this.currentSceneUUID,!0,e)}async closeUI(e,t){const{component:i}=this.findUIBaseLayer(e,!1);i&&(i.setOptions({...t?.hook??{},...t?.props??{}}),await i.hideTween(t||{}),this.ui_container_component?.subMask())}async openUI(e,t){const{rootNode:i,component:o}=this.findUIBaseLayer(e,!0);i.getComponent(UILayer),o?.setOptions(t),i&&this.ui_container_component?.addNodeToTween(i).addMask(),o&&await o.showTween(t||{}),this.ui_container_component?.ui_container&&o?.addToParent(this.ui_container_component.ui_container)}findUIBaseLayer(e,t){let i,o=null;if(e instanceof s){var r;i=e;const t=$(r=e.components).call(r,e=>e instanceof UILayer);if(!t.length)return n(`${e.name}节点未找到继承自BaseLayer的组件`),{rootNode:i,component:o};1==t.length?o=t[0]:O(`${e.name}节点存在多个继承自BaseLayer的组件`)}else if(i=e.node,o=e,t){for(;i.parent;)i=i.parent;o.root=i}else i=e.root;return{rootNode:i,component:o}}onRootUpdate(){const e=this.root_ui.children.findLastIndex(e=>e.active&&e!=this.root_mask);if(this.root_mask.active=-1!=e,e>-1){const t=this.root_ui.children[e].getSiblingIndex()-1;this.root_mask.setSiblingIndex(t<0?0:t)}this.cat.event.emit(je.ROOT_MASK_CHANGE)}};var Tt;ge([wt({type:l,tooltip:"断线重连UI预制体"}),ye("design:type","function"==typeof(mt=void 0!==l&&l)?mt:Object)],Ot.prototype,"reconnection_ui_prefab",void 0),ge([wt({type:l,tooltip:"提示UI预制体"}),ye("design:type","function"==typeof(_t=void 0!==l&&l)?_t:Object)],Ot.prototype,"toast_ui_prefab",void 0),ge([wt({type:l,tooltip:"加载UI预制体"}),ye("design:type","function"==typeof(gt=void 0!==l&&l)?gt:Object)],Ot.prototype,"loading_ui_prefab",void 0),ge([wt({type:l,tooltip:"公告UI预制体"}),ye("design:type","function"==typeof(yt=void 0!==l&&l)?yt:Object)],Ot.prototype,"notice_ui_prefab",void 0),ge([wt({type:l,tooltip:"UI层预制体"}),ye("design:type","function"==typeof(vt=void 0!==l&&l)?vt:Object)],Ot.prototype,"ui_prefab",void 0),ge([wt({type:s,tooltip:"root-UI层"}),ye("design:type","function"==typeof(bt=void 0!==s&&s)?bt:Object)],Ot.prototype,"root_ui",void 0),ge([wt({type:s,tooltip:"root-组件层"}),ye("design:type","function"==typeof(Ct=void 0!==s&&s)?Ct:Object)],Ot.prototype,"root_toast",void 0),ge([wt({type:s,tooltip:"root-mask"}),ye("design:type","function"==typeof(Et=void 0!==s&&s)?Et:Object)],Ot.prototype,"root_mask",void 0),Ot=ge([St("Gui"),At("CATCORE/Gui")],Ot),function(e){e.Root="prefabs/root",e.Toast="prefabs/toast",e.BlackMask="prefabs/black-mask",e.Loading="prefabs/loading",e.Notice="prefabs/notice",e.Reconnection="prefabs/reconnection"}(Tt||(Tt={}));class GuiManager extends BaseManager{gui;#e="core";getGuiPrefabByType=(e,t)=>new F((i,o)=>{a(e,`${t}`),this.cat.res.load(e,t,(e,t)=>{e?o(e):i(t)})});async init(){this.cat.gui_bundle_name&&(this.#e=this.cat.gui_bundle_name);const e=await this.getGuiPrefabByType(this.#e,Tt.Root),t=h(e);return this.gui=t.getComponent(Ot).init(this.cat),r.addPersistRootNode(t),this}}class WrapperSocialGameClient extends re{showRequestErrInfo=!1;logBlackList=[];ignore=e=>{var t;return B(t=this.logBlackList).call(t,e)};constructor(e,t,i,o){super(t,i,o,e),this.showRequestErrInfo=o?.showRequestErrInfo??!1}destroy(){this.disconnect(!0),e._cat.socialGameClient.unregister(this)}async GameRequest(t,i,o){let{forwardReq:s=!1,forwardResp:r=!1}=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return new F((c,l)=>{super.GameRequest(t,i,o,{forwardReq:s,forwardResp:r}).then(e=>{oe&&a(`%c ws服务端消息 %c [Response][${new Date}] %c ${t} %c`,"background:#ff00ff ; padding: 1px; border-radius: 3px 0 0 3px; color: #fff","background:#3d7daa ; padding: 1px; color: #fff","background:#ff00ff ; padding: 1px; border-radius: 0 3px 3px 0; color: #fff","background:transparent",i),c(e)},t=>{n(t),this.showRequestErrInfo&&t?.msg&&e._cat.gui.showToast({title:t.msg}),l(t)})})}subscribe(t,i,o){return super.subscribe(t,i,i=>{oe&&!this.ignore(t)&&a(`%c ws服务端消息:[subscribe][${new Date}] %c ${t} %c`,"background:#35495e ; padding: 1px; border-radius: 3px 0 0 3px; color: #fff","background:#410083 ; padding: 1px; border-radius: 0 3px 3px 0; color: #fff","background:transparent",i),e._cat.event.emit(t,i),o?.(i)}),this}}class SocialGameClientManager extends BaseManager{managedClients=(()=>new G)();isGlobalOnline=!0;isInBackground=!1;reconnecting=!1;onEventHideDelegate=(()=>new T)();onEventShowDelegate=(()=>new T)();onEventReloadSceneDelegate=(()=>new T)();reconnectTimer=null;pendingShowOptions=[];scheduleReconnect(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:2e3;this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null),this.reconnectTimer=X(()=>{this.reconnectTimer=null,this.triggerReconnectAll()},e)}get activeClients(){var e,t;return $(e=Z(t=Y(this.managedClients)).call(t,e=>{let[t,i]=e;return i})).call(e,e=>e.socket)}constructor(e){super(e),this.initGlobalListeners()}createWebSocket(e,t,i,o){if(this.managedClients.has(e)){this.managedClients.get(e).destroy(),a(`清理旧的 ${e} 客户端`)}const n=new WrapperSocialGameClient(e,i,o,j({reconnectMaxAttempts:1/0},{isAutoConnect:!1,isArrayBuffer:ne,...t}));return this.register(n),n}register(e){e.on("reconnected",this.handleSingleReconnect),e.on("close",this.handleSingleClose),e.on("kick",this.handleSingleKick),this.managedClients.set(e.name,e)}unregister(e){e.off("reconnected",this.handleSingleReconnect),e.off("close",this.handleSingleClose),e.off("kick",this.handleSingleKick),this.managedClients.delete(e.name)}initGlobalListeners(){this.cat.event.on(je.ONLINE,()=>this.handleGlobalStateChange("online"),this).on(je.OFFLINE,()=>this.handleGlobalStateChange("offline"),this),ne?(wx.onShow(e=>{this.handleGlobalStateChange("show",e)}),wx.onHide(e=>{this.handleGlobalStateChange("hide",e)})):(y.on(w.EVENT_SHOW,()=>this.handleGlobalStateChange("show")),y.on(w.EVENT_HIDE,()=>this.handleGlobalStateChange("hide")))}async handleGlobalStateChange(e,t){switch(e){case"online":this.cat.gui.hideLoading().showToast({title:et.ONLINE}),this.isGlobalOnline=!0,this.safeTriggerReconnectAll();break;case"offline":this.isGlobalOnline=!1,this.disconnectAll(!0),this.cat.gui.showLoading({title:et.OFFLINE});break;case"show":this.isInBackground=!1,a("监听前台 show",t),t&&this.pendingShowOptions.push(t),await this.safeTriggerReconnectAll();break;case"hide":a("监听前台 hide"),await this.onEventHideDelegate.dispatch(t),this.isInBackground=!0,this.disconnectAll(!0)}}async safeTriggerReconnectAll(){if(ee(),this.reconnecting||!this.isGlobalOnline||this.isInBackground||0===this.managedClients.size)return console.log("[safeTriggerReconnectAll] 没有需要重连的客户端,直接 dispatch"),void await this.dispatchReloadAndShow();this.reconnecting?console.log("[safeTriggerReconnectAll] 正在重连中,跳过本次"):await this.triggerReconnectAll()}async dispatchReloadAndShow(){for(await this.onEventReloadSceneDelegate.dispatch();this.pendingShowOptions.length>0;){const e=this.pendingShowOptions.shift();this.onEventShowDelegate.dispatch(e)}}async triggerReconnectAll(){if(console.log("触发所有客户端重连[正在重连][在线][后台][ws数量]",this.reconnecting,this.isGlobalOnline,this.isInBackground,this.managedClients.size),this.reconnecting||!this.isGlobalOnline||this.isInBackground||0===this.managedClients.size)await this.dispatchReloadAndShow();else{this.reconnecting=!0,this.cat.gui.showLoading({title:"正在重连"});try{var e,t;await F.allSettled(Z(e=this.activeClients).call(e,async e=>{try{await e.reconnectPromise()}catch(t){n(`${e.name}服重连失败`,t)}}));const i=$(t=this.activeClients).call(t,e=>e.socketConnectStatus!==ie.CONNECTED);i.length>0?(Z(i).call(i,e=>{console.error("部分WS重连失败:",e)}),a("2s后重连所有客户端"),this.reconnecting=!1,this.scheduleReconnect()):this.reconnecting=!1}catch(e){throw this.reconnecting=!1,e}}}disconnectAll(e){var t,i;te(t=this.activeClients).call(t,e=>e.socket?.readyState!==WebSocket.OPEN)||H(i=this.managedClients).call(i,t=>{a("断开连接",t.name,e,t.socket),t.disconnect(e)})}handleSingleClose=()=>{this.reconnecting||(a("3s后重连所有客户端"),this.scheduleReconnect(3e3))};handleSingleReconnect=async()=>{var e,t;te(e=this.activeClients).call(e,e=>e.socketConnectStatus===ie.CONNECTED)&&(a("单个WS重连成功回调===",this.managedClients),await F.allSettled(Z(t=this.activeClients).call(t,async e=>{try{await e.connectRequest()}catch(t){n(`${e.name}服登录错误`,t),this.cat.gui.showToast({title:`登录${e.name}服错误`})}})),this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null),await this.onEventReloadSceneDelegate.dispatch(),this.cat.gui.hideLoading(),r.getScene()?.getComponentInChildren(SceneLayer)?.isReload&&this.cat.gui.reloadScene(()=>{for(;this.pendingShowOptions.length>0;){const e=this.pendingShowOptions.shift();this.onEventShowDelegate.dispatch(e)}}))};handleSingleKick=()=>{this.cat.gui.showNotice({text:et.KICK})}}class ResLoader{get=(()=>function(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"resources";return I.getBundle(i).get(e,t)})();isAssetType=e=>"function"==typeof e&&e.prototype instanceof k;async load(){let e=null,t=null,i=null;for(var o=arguments.length,n=new Array(o),s=0;s<o;s++)n[s]=arguments[s];"string"==typeof n[0]&&"string"==typeof n[1]&&(e=n.shift());let r=n.shift();this.isAssetType(n[0])&&(t=n.shift()),2==n.length&&(i=n.shift());const a=n.shift();let c=R;if(e&&"resources"!=e){I.bundles.has(e)||await this.loadBundle(e);let t=I.bundles.get(e);t&&(c=t)}i&&a?c.load(r,t,i,a):a?c.load(r,t,a):c.load(r,t)}async loadDir(){let e=null,t=null,i=null,o=null;for(var n=arguments.length,s=new Array(n),r=0;r<n;r++)s[r]=arguments[r];"string"==typeof s[0]&&"string"==typeof s[1]&&(e=s.shift());let a=s.shift();this.isAssetType(s[0])&&(t=s.shift()),2==s.length&&(i=s.shift()),o=s.shift();let c=R;if(e&&"resources"!=e){I.bundles.has(e)||await this.loadBundle(e);let t=I.bundles.get(e);t&&(c=t)}i&&o?c.loadDir(a,t,i,o):o?c.loadDir(a,t,o):c.loadDir(a,t)}loadRemote(e){for(var t,i=null,o=arguments.length,n=new Array(o>1?o-1:0),s=1;s<o;s++)n[s-1]=arguments[s];2==n.length&&(i=n.shift()),t=n.shift(),I.loadRemote(e,{ext:".png",...i},t)}loadBundle=(e,t)=>new F((i,o)=>{const n=(e,t)=>{if(e)return o(e);i(t)};t?I.loadBundle(e,{version:t},n):I.loadBundle(e,n)});releasePrefabtDepsRecursively=e=>{var t=I.assets.get(e);if(I.releaseAsset(t),t instanceof l){var i=I.dependUtil.getDepsRecursively(e);H(i).call(i,e=>{I.assets.get(e).decRef()})}};release=(()=>{var e=this;return function(t){let i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"resources";var o=I.getBundle(i);if(o){var n=o.get(t);n&&e.releasePrefabtDepsRecursively(n._uuid)}}})();releaseDir=(()=>{var e=this;return function(t){var i,o;let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"resources";var s=I.getBundle(n),r=s?.getDirWithPath(t);(null==(i=r)?void 0:V(o=Function.call).call(o,Z(i),i))?.(t=>{e.releasePrefabtDepsRecursively(t.uuid)}),!t&&"resources"!=n&&s&&I.removeBundle(s)}})();dump=()=>{var e;H(e=I.assets).call(e,(e,t)=>{a(I.assets.get(t))}),a(`当前资源总数:${I.assets.count}`)};loadAssetsWithProgress(e,t){return new F((i,o)=>{const n=e.getDirWithPath(""),s=n.length;let r=0;if(0===s)return t(1),void i();H(n).call(n,n=>{e.load(n.path,e=>{e?o(e):(r++,t(r/s),r===s&&i())})})})}}class BaseStore{rootStore;constructor(e){this.rootStore=e}}class CoreStore extends BaseManager{}let kt=null;const Rt={stringify:e=>{const t={ct:e.ciphertext.toString(ae.enc.Base64)};return e.iv&&(t.iv=e.iv.toString()),e.salt&&(t.s=e.salt.toString()),P(t)},parse:e=>{const t=JSON.parse(e),i=ae.lib.CipherParams.create({ciphertext:ae.enc.Base64.parse(t.ct)});return t.iv&&(i.iv=ae.enc.Hex.parse(t.iv)),t.s&&(i.salt=ae.enc.Hex.parse(t.s)),i}};var Mt,Ut,Nt,Dt,xt,jt,Ft,Lt,Bt,Pt=Object.freeze({__proto__:null,JsonFormatter:Rt,aesDecrypt:(e,t,i)=>ae.AES.decrypt(e,t,{iv:kt,format:Rt}).toString(ae.enc.Utf8),aesEncrypt:(e,t,i)=>ae.AES.encrypt(e,t,{iv:kt,format:Rt}).toString(),initCrypto:(e,t)=>{kt=ae.enc.Hex.parse(t)},md5:e=>ae.MD5(e).toString()});class CoreUtil extends BaseManager{encryptUtil=(()=>Pt)()}class StorageManager extends BaseManager{_key=null;_iv=null;_id="";init(e,t){this.cat.util.encryptUtil.initCrypto(e,t),this._key=this.cat.util.encryptUtil.md5(e),this._iv=this.cat.util.encryptUtil.md5(t)}setUser(e){this._id=e}set(e,t){if(null!=(e=`${e}_${this._id}`)){if(se||(e=this.cat.util.encryptUtil.md5(e)),null==t)return console.warn("存储的值为空,则直接移除该存储"),void this.remove(e);if("function"!=typeof t){if("object"==typeof t)try{t=P(t)}catch(e){return void console.error(`解析失败,str = ${t}`)}else"number"==typeof t&&(t+="");se||null==this._key||null==this._iv||(t=this.cat.util.encryptUtil.aesEncrypt(`${t}`,this._key,this._iv)),M.localStorage.setItem(e,t)}else console.error("储存的值不能为方法")}else console.error("存储的key不能为空")}get(e,t){if(null==e)return console.error("存储的key不能为空"),null;e=`${e}_${this._id}`,se||(e=this.cat.util.encryptUtil.md5(e));let i=M.localStorage.getItem(e);return null==i||""===i||se||null==this._key||null==this._iv||(i=this.cat.util.encryptUtil.aesDecrypt(i,this._key,this._iv)),null===i?t:i}getNumber(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;var i=this.get(e);return Number(i)||t}getBoolean(e){var t=this.get(e);return Boolean(t)||!1}getJson(e,t){var i=this.get(e);return i&&JSON.parse(i)||t}remove(e){null!=e?(e=`${e}_${this._id}`,se||(e=this.cat.util.encryptUtil.md5(e)),M.localStorage.removeItem(e)):console.error("存储的key不能为空")}clear(){M.localStorage.clear()}}class Manager{static#t=null;#i=!1;static get instance(){return this.#t??(this.#t=new Manager)}onAppInitDelegate=(()=>new T)();onPlugInInitDelegate=(()=>new T)();#o=null;get audio(){return this.#o}#n=null;get event(){return this.#n}#s=null;get gui(){return this.#s}#r=null;get storage(){return this.#r}#a=null;get res(){return this.#a}#c=null;get util(){return this.#c}#l=null;get socialGameClient(){return this.#l}#h=null;get store(){return this.#h}#d="";get gui_bundle_name(){return this.#d}#u="";get audio_local_store_key(){return this.#u}#p="";get default_audio_effect(){return this.#p}setConfig=(()=>{var e=this;return function(){let{default_audio_effect:t="",gui_bundleName:i="resources",audio_local_store_key:o="game_audio"}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(e.#i)throw new Error("[CAT] 已初始化,无法修改配置");return e.#d=i,e.#u=o,e.#p=t,e}})();async boot(){if(this.#i)throw new Error("[CAT] 已初始化");try{this.#h=new CoreStore(this),this.#a=new ResLoader,this.#c=new CoreUtil(this),this.#r=new StorageManager(this),this.#n=new L,this.#o=new AudioManager(this),this.#l=new SocialGameClientManager(this),this.#s=(await new GuiManager(this).init()).gui,this.#i=!0}catch(e){throw console.error("[CAT] 初始化失败:",e),e}}merge(e,t){if(!this.#i)throw new Error("[CAT] 未初始化");if("string"!=typeof e)throw new Error("merge方法第一个参数应该为string类型");return D(this,e)||x(this,e,t),j(D(this,e),t),this}appendPlugInInitDelegate(e){return this.#i?F.resolve().then(e).catch(e=>{console.error("[CAT] appendPlugInInitDelegate 回调执行失败:",e)}):this.onPlugInInitDelegate.add(e),this}}const{ccclass:Gt,property:Ht,menu:$t}=i;let Kt=class CoreUIModal extends UILayer{default_title=null;title;prompt_content_str;prompt_content_spriteFrame;btn_confirm;confirm_spriteFrame;btn_cancel;cancel_spriteFrame;btn_close;isConfirm=!1;props={title:this.default_title,content:null,confirmCB:()=>{},cancelCB:()=>{},style:null};onLoad(){this.btn_cancel.node.on(S.EventType.CLICK,this.onCancelHandler,this),this.btn_confirm.node.on(S.EventType.CLICK,this.onConfirmHandler,this),this.btn_close.node.on(S.EventType.CLICK,this.onCloseHandler,this),this.addAutorun([()=>{this.title.spriteFrame=this.props?.title||this.default_title},()=>{this.props.content&&(this.props.content instanceof U?this.prompt_content_spriteFrame.spriteFrame=this.props.content:"string"==typeof this.props.content?this.prompt_content_str.string=this.props.content:console.error("未知类型的【UIModal】内容"))},()=>{null===this.props?.style?.confirm?this.btn_confirm.node.active=!1:(this.btn_confirm.node.active=!0,this.btn_confirm.getComponent(N).spriteFrame=this.props.style?.confirm||this.confirm_spriteFrame),null===this.props?.style?.cancel?this.btn_cancel.node.active=!1:(this.btn_cancel.node.active=!0,this.btn_cancel.getComponent(N).spriteFrame=this.props.style?.cancel||this.cancel_spriteFrame)}])}close(){this.props.cancelCB?.(),this.cat.gui.closeUI(this)}onCancelHandler(){this.close()}onConfirmHandler(){this.props.confirmCB?.()}onDestroy(){this.isConfirm&&this.props.onDestroy?.()}onCloseHandler(){this.close()}};var Wt;ge([Ht({type:U,tooltip:"默认标题"}),ye("design:type","function"==typeof(Mt=void 0!==U&&U)?Mt:Object)],Kt.prototype,"default_title",void 0),ge([Ht({type:N,tooltip:"标题节点"}),ye("design:type","function"==typeof(Ut=void 0!==N&&N)?Ut:Object)],Kt.prototype,"title",void 0),ge([Ht({type:v,tooltip:"字符串内容按钮"}),ye("design:type","function"==typeof(Nt=void 0!==v&&v)?Nt:Object)],Kt.prototype,"prompt_content_str",void 0),ge([Ht({type:N,tooltip:"图片精灵内容按钮"}),ye("design:type","function"==typeof(Dt=void 0!==N&&N)?Dt:Object)],Kt.prototype,"prompt_content_spriteFrame",void 0),ge([Ht({type:S,tooltip:"确认按钮"}),ye("design:type","function"==typeof(xt=void 0!==S&&S)?xt:Object)],Kt.prototype,"btn_confirm",void 0),ge([Ht({type:U,tooltip:"确认按钮精灵图"}),ye("design:type","function"==typeof(jt=void 0!==U&&U)?jt:Object)],Kt.prototype,"confirm_spriteFrame",void 0),ge([Ht({type:S,tooltip:"取消按钮"}),ye("design:type","function"==typeof(Ft=void 0!==S&&S)?Ft:Object)],Kt.prototype,"btn_cancel",void 0),ge([Ht({type:U,tooltip:"取消按钮精灵图"}),ye("design:type","function"==typeof(Lt=void 0!==U&&U)?Lt:Object)],Kt.prototype,"cancel_spriteFrame",void 0),ge([Ht({type:S,tooltip:"关闭按钮"}),ye("design:type","function"==typeof(Bt=void 0!==S&&S)?Bt:Object)],Kt.prototype,"btn_close",void 0),Kt=ge([Gt("CoreUIModal"),$t("CATCORE/CoreUIModal")],Kt),function(e){e[e.Delay=0]="Delay",e[e.Interval=1]="Interval"}(Wt||(Wt={}));class TimerEntry{tag;type;callback;remainingTime;executionTime=0;initialTime;constructor(e,t,i,o){this.tag=e,this.type=t,this.remainingTime=i,this.initialTime=i,this.callback=o}}class TimerManager extends BaseManager{timers=(()=>new G)();lastUpdateTime=(()=>ee())();constructor(e){var t;super(e),e.event.on(je.EVENT_HIDE,this.onHandleAppBackground,this),e.event.on(je.EVENT_SHOW,this.onHandleAppForeground,this),ce(V(t=this.update).call(t,this),1e3)}onHandleAppBackground(){this.lastUpdateTime=ee()}onHandleAppForeground(){const e=ee(),t=e-this.lastUpdateTime;a("elapsedTime",t);for(const e of le(i=this.timers).call(i)){var i;e.remainingTime>0&&(e.remainingTime-=t,e.executionTime+=t)}this.lastUpdateTime=e}registerInterval(e,t,i){if(this.has(e))return n(`${e}定时器已存在,请勿重复注册`);const o=new TimerEntry(e,Wt.Interval,t,i);this.timers.set(e,o)}registerDelay(e,t,i){if(this.has(e))return n(`${e}延时器已存在,请勿重复注册`);const o=new TimerEntry(e,Wt.Delay,t,i);this.timers.set(e,o)}unregister(e){this.has(e)&&this.timers.delete(e)}has(e){return this.timers.has(e)}update(){const e=[];for(const[i,o]of he(t=this.timers).call(t)){var t;o.remainingTime-=1e3,o.remainingTime<=0&&(o.type===Wt.Interval&&(o.executionTime+=o.initialTime),o.callback(o.executionTime),o.type===Wt.Interval?o.remainingTime=o.initialTime:e.push(i))}for(const t of e)this.timers.delete(t)}}const Vt=(t,i)=>(o,n,s)=>{let r=s.value;return s.value=function(){const o=t??e._cat.default_audio_effect;o?e._cat.audio.playEffect(o):console.warn("请添加音效路径参数"),i&&i();for(var n=arguments.length,s=new Array(n),a=0;a<n;a++)s[a]=arguments[a];r.apply(this,s)},s},zt=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,t=arguments.length>1?arguments[1]:void 0;return function(i,o,n){let s=n.value,r=!1;return n.value=function(){if(r)t&&t();else{r=!0,X(()=>{r=!1},1e3*e);for(var i=arguments.length,o=new Array(i),n=0;n<i;n++)o[n]=arguments[n];s.apply(this,o)}},n}},qt=e._cat??=Manager.instance;y.onPostProjectInitDelegate.add(async()=>{console.time("[Init App]");try{await qt.boot(),await qt.onAppInitDelegate.dispatch(),await qt.onPlugInInitDelegate.dispatch()}catch(e){throw n(`[Init App] 初始化失败: ${e instanceof Error?e.message:String(e)}`),e}finally{console.timeEnd("[Init App]")}});export{Vt as AudioEffect,_e as AudioEventConstant,AudioManager,AudioSourceBaseComponent,AudioSourceUILayer,Se as AudioTypeEnum,BaseComponent,BaseManager,Tt as BasePrefab,BaseStore,zt as ButtonLock,Ge as CoreBlackMask,ft as CoreNotice,at as CoreReconnection,Ye as CoreShowLoading,CoreStore,xe as CoreToast,ze as CoreUIContainer,Kt as CoreUIModal,CoreUtil,je as GlobalEventConstant,Ot as Gui,GuiManager,It as LayerType,Manager,et as ReconnectPrompt,RootUILayer,SceneLayer,TimerManager,De as ToastType,UILayer,WrapperSocialGameClient,qt as cat};
|
|
1
|
+
import e from "@babel/runtime-corejs3/core-js/global-this";
|
|
2
|
+
|
|
3
|
+
import { AudioSource as t, _decorator as i, AudioClip as n, error as o, Node as s, director as r, log as a, Component as l, Prefab as c, instantiate as h, isValid as u, Layers as d, view as p, Widget as f, v3 as m, tween as _, Enum as y, game as g, Label as b, UIOpacity as v, Tween as C, BlockInputEvents as E, Button as S, Game as w, Director as A, assetManager as I, warn as O, AsyncDelegate as T, Asset as k, resources as R, sys as M, SpriteFrame as U, Sprite as N } from "cc";
|
|
4
|
+
|
|
5
|
+
import D from "@babel/runtime-corejs3/core-js-stable/reflect/get";
|
|
6
|
+
|
|
7
|
+
import x from "@babel/runtime-corejs3/core-js-stable/reflect/set";
|
|
8
|
+
|
|
9
|
+
import j from "@babel/runtime-corejs3/core-js-stable/object/assign";
|
|
10
|
+
|
|
11
|
+
import F from "@babel/runtime-corejs3/core-js-stable/promise";
|
|
12
|
+
|
|
13
|
+
import L from "eventemitter3";
|
|
14
|
+
|
|
15
|
+
import B from "@babel/runtime-corejs3/core-js-stable/instance/includes";
|
|
16
|
+
|
|
17
|
+
import P from "@babel/runtime-corejs3/core-js-stable/json/stringify";
|
|
18
|
+
|
|
19
|
+
import G from "@babel/runtime-corejs3/core-js-stable/map";
|
|
20
|
+
|
|
21
|
+
import H from "@babel/runtime-corejs3/core-js-stable/instance/for-each";
|
|
22
|
+
|
|
23
|
+
import $ from "@babel/runtime-corejs3/core-js-stable/instance/filter";
|
|
24
|
+
|
|
25
|
+
import K from "@babel/runtime-corejs3/core-js-stable/array/is-array";
|
|
26
|
+
|
|
27
|
+
import W from "@babel/runtime-corejs3/core-js-stable/reflect/own-keys";
|
|
28
|
+
|
|
29
|
+
import V from "@babel/runtime-corejs3/core-js-stable/instance/bind";
|
|
30
|
+
|
|
31
|
+
import { makeObservable as z, observable as q, autorun as Q, reaction as J } from "@shimotsuki/mobx";
|
|
32
|
+
|
|
33
|
+
import X from "@babel/runtime-corejs3/core-js-stable/set-timeout";
|
|
34
|
+
|
|
35
|
+
import Z from "@babel/runtime-corejs3/core-js-stable/instance/map";
|
|
36
|
+
|
|
37
|
+
import Y from "@babel/runtime-corejs3/core-js-stable/array/from";
|
|
38
|
+
|
|
39
|
+
import ee from "@babel/runtime-corejs3/core-js-stable/date/now";
|
|
40
|
+
|
|
41
|
+
import te from "@babel/runtime-corejs3/core-js-stable/instance/every";
|
|
42
|
+
|
|
43
|
+
import { SocketConnectStatus as ie } from "pitayaclient";
|
|
44
|
+
|
|
45
|
+
import { DEBUG as ne, WECHAT as oe, PREVIEW as se } from "cc/env";
|
|
46
|
+
|
|
47
|
+
import { SocialGameClient as re } from "sgc";
|
|
48
|
+
|
|
49
|
+
import ae from "crypto-es";
|
|
50
|
+
|
|
51
|
+
import le from "@babel/runtime-corejs3/core-js-stable/set-interval";
|
|
52
|
+
|
|
53
|
+
import ce from "@babel/runtime-corejs3/core-js-stable/instance/values";
|
|
54
|
+
|
|
55
|
+
import he from "@babel/runtime-corejs3/core-js-stable/instance/entries";
|
|
56
|
+
|
|
57
|
+
class CommonAudio extends t {
|
|
58
|
+
cat;
|
|
59
|
+
initAudio(e) {
|
|
60
|
+
this.cat = e;
|
|
61
|
+
return this;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
const {ccclass: ue, menu: de} = i;
|
|
66
|
+
|
|
67
|
+
let pe = class AudioEffect extends CommonAudio {
|
|
68
|
+
effects=(() => new G)();
|
|
69
|
+
load(e, t) {
|
|
70
|
+
return new F((i, o) => {
|
|
71
|
+
let s = null;
|
|
72
|
+
let r;
|
|
73
|
+
if (t !== undefined) {
|
|
74
|
+
s = e;
|
|
75
|
+
r = t;
|
|
76
|
+
} else {
|
|
77
|
+
r = e;
|
|
78
|
+
}
|
|
79
|
+
const a = (e, t) => {
|
|
80
|
+
if (e) {
|
|
81
|
+
return o(e);
|
|
82
|
+
}
|
|
83
|
+
this.effects.set(r, t);
|
|
84
|
+
this.playOneShot(t, this.volume);
|
|
85
|
+
i(t);
|
|
86
|
+
};
|
|
87
|
+
s ? this.cat.res.load(s, r, n, a) : this.cat.res.load(r, n, a);
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
release() {
|
|
91
|
+
for (let e in this.effects) {
|
|
92
|
+
this.cat.res.release(e);
|
|
93
|
+
}
|
|
94
|
+
this.effects.clear();
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
const {ccclass: fe, menu: me} = i;
|
|
99
|
+
|
|
100
|
+
class AudioMusic extends CommonAudio {
|
|
101
|
+
onComplete=null;
|
|
102
|
+
_progress=0;
|
|
103
|
+
_url=null;
|
|
104
|
+
_isPlay=false;
|
|
105
|
+
get progress() {
|
|
106
|
+
if (this.duration > 0) this._progress = this.currentTime / this.duration;
|
|
107
|
+
return this._progress;
|
|
108
|
+
}
|
|
109
|
+
set progress(e) {
|
|
110
|
+
this._progress = e;
|
|
111
|
+
this.currentTime = e * this.duration;
|
|
112
|
+
}
|
|
113
|
+
load(e, t) {
|
|
114
|
+
return new F((i, s) => {
|
|
115
|
+
let r = null;
|
|
116
|
+
let a;
|
|
117
|
+
if (t !== undefined) {
|
|
118
|
+
r = e;
|
|
119
|
+
a = t;
|
|
120
|
+
} else {
|
|
121
|
+
a = e;
|
|
122
|
+
}
|
|
123
|
+
const l = (e, t) => {
|
|
124
|
+
if (e) {
|
|
125
|
+
o(e);
|
|
126
|
+
return s(e);
|
|
127
|
+
}
|
|
128
|
+
if (this.playing) {
|
|
129
|
+
this._isPlay = false;
|
|
130
|
+
this.stop();
|
|
131
|
+
this.cat.res.release(this._url);
|
|
132
|
+
}
|
|
133
|
+
this.playOnAwake = false;
|
|
134
|
+
this.enabled = true;
|
|
135
|
+
this.clip = t;
|
|
136
|
+
this._url = a;
|
|
137
|
+
i(t);
|
|
138
|
+
};
|
|
139
|
+
r ? this.cat.res.load(r, a, n, l) : this.cat.res.load(a, n, l);
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
update(e) {
|
|
143
|
+
if (this.currentTime > 0) {
|
|
144
|
+
this._isPlay = true;
|
|
145
|
+
}
|
|
146
|
+
if (this._isPlay && this.playing == false) {
|
|
147
|
+
this._isPlay = false;
|
|
148
|
+
this.enabled = false;
|
|
149
|
+
this.onComplete && this.onComplete();
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
release() {
|
|
153
|
+
if (this._url) {
|
|
154
|
+
this.cat.res.release(this._url);
|
|
155
|
+
this._url = null;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
class BaseManager {
|
|
161
|
+
cat;
|
|
162
|
+
constructor(e) {
|
|
163
|
+
this.cat = e;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
var _e;
|
|
168
|
+
|
|
169
|
+
(function(e) {
|
|
170
|
+
e["MUSIC_ON"] = "AudioEventConstant/MUSIC_ON";
|
|
171
|
+
e["MUSIC_OFF"] = "AudioEventConstant/MUSIC_OFF";
|
|
172
|
+
e["EFFECT_ON"] = "AudioEventConstant/EFFECT_ON";
|
|
173
|
+
e["EFFECT_OFF"] = "AudioEventConstant/EFFECT_OFF";
|
|
174
|
+
e["PAUSE_AUDIO"] = "AudioEventConstant/PAUSE_AUDIO";
|
|
175
|
+
e["RESUME_AUDIO"] = "AudioEventConstant/RESUME_AUDIO";
|
|
176
|
+
})(_e || (_e = {}));
|
|
177
|
+
|
|
178
|
+
class AudioManager extends BaseManager {
|
|
179
|
+
local_data={};
|
|
180
|
+
music;
|
|
181
|
+
effect;
|
|
182
|
+
_volume_music=1;
|
|
183
|
+
_volume_effect=1;
|
|
184
|
+
_switch_music=true;
|
|
185
|
+
_switch_effect=true;
|
|
186
|
+
local_store_key="game_audio";
|
|
187
|
+
extra={};
|
|
188
|
+
constructor(e) {
|
|
189
|
+
super(e);
|
|
190
|
+
this.local_store_key = this.cat.audio_local_store_key;
|
|
191
|
+
var t = new s("UIAudioManager");
|
|
192
|
+
r.addPersistRootNode(t);
|
|
193
|
+
var i = new s("UIMusic");
|
|
194
|
+
i.parent = t;
|
|
195
|
+
this.music = i.addComponent(AudioMusic).initAudio(e);
|
|
196
|
+
var n = new s("UIEffect");
|
|
197
|
+
n.parent = t;
|
|
198
|
+
this.effect = n.addComponent(pe).initAudio(e);
|
|
199
|
+
this.load();
|
|
200
|
+
}
|
|
201
|
+
setMusicComplete() {
|
|
202
|
+
let e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
|
|
203
|
+
this.music.onComplete = e;
|
|
204
|
+
}
|
|
205
|
+
async playMusic(e, t) {
|
|
206
|
+
this.music.loop = true;
|
|
207
|
+
let i;
|
|
208
|
+
let n;
|
|
209
|
+
if (t !== undefined) {
|
|
210
|
+
n = e;
|
|
211
|
+
i = t;
|
|
212
|
+
} else {
|
|
213
|
+
i = e;
|
|
214
|
+
}
|
|
215
|
+
if (!i.length) return;
|
|
216
|
+
await (n ? this.music.load(n, i) : this.music.load(i)).then(() => {
|
|
217
|
+
if (this._switch_music) {
|
|
218
|
+
this.music.play();
|
|
219
|
+
}
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
stopMusic() {
|
|
223
|
+
if (this.music.state != 0) this.music?.stop();
|
|
224
|
+
}
|
|
225
|
+
pauseMusic() {
|
|
226
|
+
if (this.music.state == 1) this.music?.pause();
|
|
227
|
+
}
|
|
228
|
+
resumeMusic() {
|
|
229
|
+
var e;
|
|
230
|
+
if (B(e = [ 0, 2 ]).call(e, this.music.state)) this.music?.play();
|
|
231
|
+
}
|
|
232
|
+
get progressMusic() {
|
|
233
|
+
return this.music.progress;
|
|
234
|
+
}
|
|
235
|
+
set progressMusic(e) {
|
|
236
|
+
this.music.progress = e;
|
|
237
|
+
}
|
|
238
|
+
get volumeMusic() {
|
|
239
|
+
return this._volume_music;
|
|
240
|
+
}
|
|
241
|
+
set volumeMusic(e) {
|
|
242
|
+
this._volume_music = e;
|
|
243
|
+
this.music.volume = e;
|
|
244
|
+
}
|
|
245
|
+
get switchMusic() {
|
|
246
|
+
return this._switch_music;
|
|
247
|
+
}
|
|
248
|
+
set switchMusic(e) {
|
|
249
|
+
a("设置背景音乐开关值", e, this._switch_music);
|
|
250
|
+
if (e == this._switch_music) return;
|
|
251
|
+
this._switch_music = e;
|
|
252
|
+
e ? this.resumeMusic() : this.pauseMusic();
|
|
253
|
+
const t = e ? _e.MUSIC_ON : _e.MUSIC_OFF;
|
|
254
|
+
this.cat.event.emit(t);
|
|
255
|
+
this.save();
|
|
256
|
+
}
|
|
257
|
+
async playEffect(e, t) {
|
|
258
|
+
if (!this._switch_effect) return;
|
|
259
|
+
let i;
|
|
260
|
+
let n;
|
|
261
|
+
if (t !== undefined) {
|
|
262
|
+
n = e;
|
|
263
|
+
i = t;
|
|
264
|
+
} else {
|
|
265
|
+
i = e;
|
|
266
|
+
}
|
|
267
|
+
if (!i.length) return;
|
|
268
|
+
await (n ? this.effect.load(n, i) : this.effect.load(i)).then(() => {
|
|
269
|
+
this.effect.play();
|
|
270
|
+
});
|
|
271
|
+
}
|
|
272
|
+
stopEffect() {
|
|
273
|
+
this.effect?.stop();
|
|
274
|
+
}
|
|
275
|
+
get volumeEffect() {
|
|
276
|
+
return this._volume_effect;
|
|
277
|
+
}
|
|
278
|
+
set volumeEffect(e) {
|
|
279
|
+
this._volume_effect = e;
|
|
280
|
+
this.effect.volume = e;
|
|
281
|
+
}
|
|
282
|
+
get switchEffect() {
|
|
283
|
+
return this._switch_effect;
|
|
284
|
+
}
|
|
285
|
+
set switchEffect(e) {
|
|
286
|
+
if (e == this._switch_effect) return;
|
|
287
|
+
this._switch_effect = e;
|
|
288
|
+
e ? this.effect?.play() : this.effect?.stop();
|
|
289
|
+
const t = e ? _e.EFFECT_ON : _e.EFFECT_OFF;
|
|
290
|
+
this.cat.event.emit(t);
|
|
291
|
+
this.save();
|
|
292
|
+
}
|
|
293
|
+
resumeAll() {
|
|
294
|
+
this.switchMusic && this.music?.play();
|
|
295
|
+
this.switchEffect && this.effect?.play();
|
|
296
|
+
}
|
|
297
|
+
pauseAll() {
|
|
298
|
+
this.music?.pause();
|
|
299
|
+
this.effect?.pause();
|
|
300
|
+
}
|
|
301
|
+
stopAll() {
|
|
302
|
+
this.music?.stop();
|
|
303
|
+
this.effect?.stop();
|
|
304
|
+
}
|
|
305
|
+
save() {
|
|
306
|
+
this.local_data.volume_music = this._volume_music;
|
|
307
|
+
this.local_data.volume_effect = this._volume_effect;
|
|
308
|
+
this.local_data.switch_music = this._switch_music;
|
|
309
|
+
this.local_data.switch_effect = this._switch_effect;
|
|
310
|
+
this.local_data.extra = this.extra;
|
|
311
|
+
let e = P(this.local_data);
|
|
312
|
+
this.cat.storage.set(this.local_store_key, e);
|
|
313
|
+
return this;
|
|
314
|
+
}
|
|
315
|
+
load() {
|
|
316
|
+
try {
|
|
317
|
+
let e = this.cat.storage.get(this.local_store_key);
|
|
318
|
+
this.local_data = JSON.parse(e);
|
|
319
|
+
this._volume_music = this.local_data.volume_music;
|
|
320
|
+
this._volume_effect = this.local_data.volume_effect;
|
|
321
|
+
this._switch_music = this.local_data.switch_music;
|
|
322
|
+
this._switch_effect = this.local_data.switch_effect;
|
|
323
|
+
this.extra = this.local_data.extra;
|
|
324
|
+
} catch (e) {
|
|
325
|
+
this.local_data = {};
|
|
326
|
+
this._volume_music = .6;
|
|
327
|
+
this._volume_effect = 1;
|
|
328
|
+
this._switch_music = true;
|
|
329
|
+
this._switch_effect = true;
|
|
330
|
+
this.extra = {};
|
|
331
|
+
}
|
|
332
|
+
if (this.music) this.music.volume = this._volume_music;
|
|
333
|
+
if (this.effect) this.effect.volume = this._volume_effect;
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
function ye(e, t, i, n) {
|
|
338
|
+
var o = arguments.length, s = o < 3 ? t : n === null ? n = Object.getOwnPropertyDescriptor(t, i) : n, r;
|
|
339
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") s = Reflect.decorate(e, t, i, n); else for (var a = e.length - 1; a >= 0; a--) if (r = e[a]) s = (o < 3 ? r(s) : o > 3 ? r(t, i, s) : r(t, i)) || s;
|
|
340
|
+
return o > 3 && s && Object.defineProperty(t, i, s), s;
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
function ge(e, t) {
|
|
344
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(e, t);
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
typeof SuppressedError === "function" ? SuppressedError : function(e, t, i) {
|
|
348
|
+
var n = new Error(i);
|
|
349
|
+
return n.name = "SuppressedError", n.error = e, n.suppressed = t, n;
|
|
350
|
+
};
|
|
351
|
+
|
|
352
|
+
class BaseComponent extends l {
|
|
353
|
+
props={};
|
|
354
|
+
data={};
|
|
355
|
+
cat=(() => e._cat)();
|
|
356
|
+
autorunDisposers=[];
|
|
357
|
+
reactionDisposers=[];
|
|
358
|
+
eventEmitter=[];
|
|
359
|
+
hook={
|
|
360
|
+
destroyed: () => {},
|
|
361
|
+
started: () => {}
|
|
362
|
+
};
|
|
363
|
+
initUI() {}
|
|
364
|
+
__preload() {
|
|
365
|
+
this.initUI();
|
|
366
|
+
this.onAutoObserver();
|
|
367
|
+
}
|
|
368
|
+
constructor() {
|
|
369
|
+
super();
|
|
370
|
+
z(this, {
|
|
371
|
+
props: q,
|
|
372
|
+
data: q
|
|
373
|
+
});
|
|
374
|
+
}
|
|
375
|
+
onAutoObserver() {}
|
|
376
|
+
addAutorun(e) {
|
|
377
|
+
const t = K(e) ? e : [ e ];
|
|
378
|
+
H(t).call(t, e => {
|
|
379
|
+
const t = Q(e);
|
|
380
|
+
this.autorunDisposers.push(t);
|
|
381
|
+
});
|
|
382
|
+
return this;
|
|
383
|
+
}
|
|
384
|
+
addReaction(e, t, i) {
|
|
385
|
+
const n = J(e, t, i);
|
|
386
|
+
this.reactionDisposers.push(n);
|
|
387
|
+
return this;
|
|
388
|
+
}
|
|
389
|
+
addAudoListener(e) {
|
|
390
|
+
var t;
|
|
391
|
+
if (!B(t = this.eventEmitter).call(t, e) && e !== this.cat.event) {
|
|
392
|
+
this.eventEmitter.push(e);
|
|
393
|
+
}
|
|
394
|
+
return e;
|
|
395
|
+
}
|
|
396
|
+
_onPreDestroy() {
|
|
397
|
+
var e, t;
|
|
398
|
+
H(e = this.autorunDisposers).call(e, e => {
|
|
399
|
+
e();
|
|
400
|
+
});
|
|
401
|
+
H(t = this.reactionDisposers).call(t, e => {
|
|
402
|
+
e();
|
|
403
|
+
});
|
|
404
|
+
this.autorunDisposers = [];
|
|
405
|
+
this.reactionDisposers = [];
|
|
406
|
+
if (!super._onPreDestroy) {
|
|
407
|
+
throw new Error("_onPreDestroy已弃用");
|
|
408
|
+
} else {
|
|
409
|
+
super._onPreDestroy();
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
onDisable() {
|
|
413
|
+
var e;
|
|
414
|
+
this.onHide();
|
|
415
|
+
this.deleteAllEventByEmitter(this.cat.event);
|
|
416
|
+
H(e = this.eventEmitter).call(e, e => {
|
|
417
|
+
this.deleteAllEventByEmitter(e);
|
|
418
|
+
});
|
|
419
|
+
this.eventEmitter = [];
|
|
420
|
+
this.removeListener();
|
|
421
|
+
}
|
|
422
|
+
deleteAllEventByEmitter(e) {
|
|
423
|
+
const t = e["_events"];
|
|
424
|
+
for (const i in t) {
|
|
425
|
+
let n = t[i];
|
|
426
|
+
if (!K(n)) {
|
|
427
|
+
n = [ n ];
|
|
428
|
+
}
|
|
429
|
+
H(n).call(n, t => {
|
|
430
|
+
if (t.context === this) {
|
|
431
|
+
e.off(i, t.fn, this);
|
|
432
|
+
}
|
|
433
|
+
});
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
onEnable() {
|
|
437
|
+
this.onShow();
|
|
438
|
+
this.addListener();
|
|
439
|
+
this.onEventListener();
|
|
440
|
+
}
|
|
441
|
+
onEventListener() {}
|
|
442
|
+
addListener() {}
|
|
443
|
+
removeListener() {}
|
|
444
|
+
addToParent(e, t, i) {
|
|
445
|
+
const n = e instanceof c ? h(e) : e instanceof l ? e.node : e;
|
|
446
|
+
if (typeof t === "number") {
|
|
447
|
+
const e = t;
|
|
448
|
+
const o = i;
|
|
449
|
+
this.setOptions(o);
|
|
450
|
+
n.insertChild(this.node, e);
|
|
451
|
+
} else {
|
|
452
|
+
const e = t;
|
|
453
|
+
this.setOptions(e);
|
|
454
|
+
n.addChild(this.node);
|
|
455
|
+
}
|
|
456
|
+
return this;
|
|
457
|
+
}
|
|
458
|
+
setOptions(e) {
|
|
459
|
+
if (!e) return;
|
|
460
|
+
for (let t in e) {
|
|
461
|
+
switch (t) {
|
|
462
|
+
case "hook":
|
|
463
|
+
e.hook && (this.hook = e.hook);
|
|
464
|
+
break;
|
|
465
|
+
|
|
466
|
+
case "props":
|
|
467
|
+
if (e.props !== null && typeof e.props === "object") {
|
|
468
|
+
this.props = e.props;
|
|
469
|
+
}
|
|
470
|
+
break;
|
|
471
|
+
|
|
472
|
+
case "data":
|
|
473
|
+
if (e.data !== null && typeof e.data === "object") {
|
|
474
|
+
this.data = e.data;
|
|
475
|
+
}
|
|
476
|
+
break;
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
}
|
|
480
|
+
setUpdateData(e) {
|
|
481
|
+
if (!this.data) return;
|
|
482
|
+
e && j(this.data, this.toPlainObject(e));
|
|
483
|
+
return this;
|
|
484
|
+
}
|
|
485
|
+
setUpdateProps(e) {
|
|
486
|
+
if (!this.props) return;
|
|
487
|
+
e && j(this.props, this.toPlainObject(e));
|
|
488
|
+
return this;
|
|
489
|
+
}
|
|
490
|
+
toPlainObject(e) {
|
|
491
|
+
const t = {};
|
|
492
|
+
for (const i of W(e)) {
|
|
493
|
+
if (typeof i === "string") {
|
|
494
|
+
try {
|
|
495
|
+
t[i] = e[i];
|
|
496
|
+
} catch {}
|
|
497
|
+
}
|
|
498
|
+
}
|
|
499
|
+
return t;
|
|
500
|
+
}
|
|
501
|
+
removeAndDestroy() {
|
|
502
|
+
if (u(this?.node)) {
|
|
503
|
+
this.node.removeFromParent();
|
|
504
|
+
this.node.destroy();
|
|
505
|
+
}
|
|
506
|
+
}
|
|
507
|
+
setPosition(e) {
|
|
508
|
+
this.node.setPosition(e);
|
|
509
|
+
return this;
|
|
510
|
+
}
|
|
511
|
+
setScale(e) {
|
|
512
|
+
this.node.setScale(e);
|
|
513
|
+
return this;
|
|
514
|
+
}
|
|
515
|
+
setAngle(e) {
|
|
516
|
+
this.node.angle = e;
|
|
517
|
+
return this;
|
|
518
|
+
}
|
|
519
|
+
setRotation(e) {
|
|
520
|
+
this.node.setRotation(e);
|
|
521
|
+
return this;
|
|
522
|
+
}
|
|
523
|
+
setRotationFromEuler(e) {
|
|
524
|
+
this.node.setRotationFromEuler(e);
|
|
525
|
+
return this;
|
|
526
|
+
}
|
|
527
|
+
onShow() {}
|
|
528
|
+
onHide() {}
|
|
529
|
+
setNodeAndChildrenLayer(e) {
|
|
530
|
+
be(this.node, e);
|
|
531
|
+
return this;
|
|
532
|
+
}
|
|
533
|
+
}
|
|
534
|
+
|
|
535
|
+
const be = (e, t) => {
|
|
536
|
+
var i, n, o;
|
|
537
|
+
e.layer = typeof t === "string" ? 2 ** d.nameToLayer(t) : t;
|
|
538
|
+
((i = e) == null ? void 0 : V(o = Function.call).call(o, H(n = i.children), n))?.(e => {
|
|
539
|
+
be(e, t);
|
|
540
|
+
});
|
|
541
|
+
};
|
|
542
|
+
|
|
543
|
+
class UILayer extends BaseComponent {
|
|
544
|
+
lastEnterDirection="center";
|
|
545
|
+
screen;
|
|
546
|
+
isClosing=false;
|
|
547
|
+
root;
|
|
548
|
+
constructor() {
|
|
549
|
+
super();
|
|
550
|
+
this._init();
|
|
551
|
+
}
|
|
552
|
+
_init() {
|
|
553
|
+
this.root = this.node;
|
|
554
|
+
this.screen = p.getVisibleSize();
|
|
555
|
+
}
|
|
556
|
+
async showTween(e) {
|
|
557
|
+
let {isMotion: t = true, direction: i = "center", duration: n = .1, isBounce: o = true, bounceDuration: s = .05} = e;
|
|
558
|
+
this.lastEnterDirection = i;
|
|
559
|
+
if (t) {
|
|
560
|
+
const e = this.node.getComponent(f);
|
|
561
|
+
if (e) {
|
|
562
|
+
e.updateAlignment();
|
|
563
|
+
e.enabled = false;
|
|
564
|
+
}
|
|
565
|
+
let t;
|
|
566
|
+
let s;
|
|
567
|
+
m(1.1, 1.1, 1);
|
|
568
|
+
if (i == "center") {
|
|
569
|
+
t = m(.01, .01, .01);
|
|
570
|
+
s = m(1, 1, 1);
|
|
571
|
+
} else {
|
|
572
|
+
if (i == "left") {
|
|
573
|
+
t = m(-this.screen.width, 0, 0);
|
|
574
|
+
} else if (i == "right") {
|
|
575
|
+
t = m(this.screen.width, 0, 0);
|
|
576
|
+
} else if (i == "top") {
|
|
577
|
+
t = m(0, this.screen.height, 0);
|
|
578
|
+
} else {
|
|
579
|
+
t = m(0, -this.screen.height, 0);
|
|
580
|
+
}
|
|
581
|
+
s = m(0, 0, 0);
|
|
582
|
+
}
|
|
583
|
+
await this.handle(i, n, t, s, o);
|
|
584
|
+
if (e) e.enabled = true;
|
|
585
|
+
}
|
|
586
|
+
}
|
|
587
|
+
async hideTween(e) {
|
|
588
|
+
let {isMotion: t = true, direction: i, duration: n = .1} = e;
|
|
589
|
+
i = i || this.lastEnterDirection;
|
|
590
|
+
if (this.isClosing) return;
|
|
591
|
+
this.isClosing = true;
|
|
592
|
+
_(this.node).removeSelf();
|
|
593
|
+
if (t) {
|
|
594
|
+
const e = this.node.getComponent(f);
|
|
595
|
+
if (e) e.enabled = false;
|
|
596
|
+
let t;
|
|
597
|
+
let o;
|
|
598
|
+
if (i == "center") {
|
|
599
|
+
t = this.node.scale;
|
|
600
|
+
o = m(0, 0, 0);
|
|
601
|
+
} else {
|
|
602
|
+
if (i == "left") {
|
|
603
|
+
o = m(-this.screen.width, 0, 0);
|
|
604
|
+
} else if (i == "right") {
|
|
605
|
+
o = m(this.screen.width, 0, 0);
|
|
606
|
+
} else if (i == "top") {
|
|
607
|
+
o = m(0, this.screen.height, 0);
|
|
608
|
+
} else {
|
|
609
|
+
o = m(0, -this.screen.height, 0);
|
|
610
|
+
}
|
|
611
|
+
t = this.node.getPosition();
|
|
612
|
+
}
|
|
613
|
+
await this.handle(i, n, t, o, false);
|
|
614
|
+
}
|
|
615
|
+
this.removeAndDestroy();
|
|
616
|
+
}
|
|
617
|
+
async handle(e, t, i, n, o) {
|
|
618
|
+
if (e == "center") {
|
|
619
|
+
this.node.setScale(i);
|
|
620
|
+
} else {
|
|
621
|
+
this.node.setPosition(i);
|
|
622
|
+
}
|
|
623
|
+
await this.deftween(t, {
|
|
624
|
+
[e == "center" ? "scale" : "position"]: n
|
|
625
|
+
}, o);
|
|
626
|
+
}
|
|
627
|
+
deftween(e, t, i, n) {
|
|
628
|
+
return new F((i, n) => {
|
|
629
|
+
_(this.node).to(e, t).call(() => {
|
|
630
|
+
i();
|
|
631
|
+
}).start();
|
|
632
|
+
});
|
|
633
|
+
}
|
|
634
|
+
}
|
|
635
|
+
|
|
636
|
+
var ve;
|
|
637
|
+
|
|
638
|
+
const {ccclass: Ce, property: Ee} = i;
|
|
639
|
+
|
|
640
|
+
var Se;
|
|
641
|
+
|
|
642
|
+
(function(e) {
|
|
643
|
+
e[e["EFFECT"] = 0] = "EFFECT";
|
|
644
|
+
e[e["BGM"] = 1] = "BGM";
|
|
645
|
+
})(Se || (Se = {}));
|
|
646
|
+
|
|
647
|
+
class AudioSourceBaseComponent extends BaseComponent {
|
|
648
|
+
type=(() => Se.EFFECT)();
|
|
649
|
+
clip=null;
|
|
650
|
+
loop=false;
|
|
651
|
+
volume=1;
|
|
652
|
+
playOnAwake=false;
|
|
653
|
+
audioSource=(() => new t)();
|
|
654
|
+
onEnable() {
|
|
655
|
+
super.onEnable();
|
|
656
|
+
this.clip && (this.audioSource.clip = this.clip);
|
|
657
|
+
this.audioSource.loop = this.loop;
|
|
658
|
+
this.audioSource.volume = this.volume;
|
|
659
|
+
this.audioSource.playOnAwake = this.playOnAwake;
|
|
660
|
+
this.cat.event.on(_e.EFFECT_ON, this.onPlayEffectHandler, this).on(_e.EFFECT_OFF, this.onStopEffectHandler, this).on(_e.MUSIC_ON, this.onPlayMusicHandler, this).on(_e.MUSIC_OFF, this.onStopMusicHandler, this);
|
|
661
|
+
}
|
|
662
|
+
__preload() {
|
|
663
|
+
super.__preload();
|
|
664
|
+
const {volumeEffect: e, volumeMusic: t} = this.cat.audio;
|
|
665
|
+
this.audioSource.volume = this.type === Se.BGM ? t : e;
|
|
666
|
+
}
|
|
667
|
+
start() {}
|
|
668
|
+
stopAudio() {
|
|
669
|
+
this.audioSource.stop();
|
|
670
|
+
}
|
|
671
|
+
playAudio() {
|
|
672
|
+
const {switchEffect: e, switchMusic: t} = this.cat.audio;
|
|
673
|
+
if (!this.audioSource.playing && (this.type === Se.BGM ? t : e) && !g._paused) this.audioSource.play();
|
|
674
|
+
}
|
|
675
|
+
onPlayEffectHandler() {}
|
|
676
|
+
onStopEffectHandler() {
|
|
677
|
+
this.stopAudio();
|
|
678
|
+
}
|
|
679
|
+
onPlayMusicHandler() {}
|
|
680
|
+
onStopMusicHandler() {
|
|
681
|
+
this.stopAudio();
|
|
682
|
+
}
|
|
683
|
+
_onPreDestroy() {
|
|
684
|
+
this.onStopMusicHandler();
|
|
685
|
+
super._onPreDestroy();
|
|
686
|
+
}
|
|
687
|
+
}
|
|
688
|
+
|
|
689
|
+
ye([ Ee({
|
|
690
|
+
tooltip: `类型:\n EFFECT 音效\n BGM 音乐`,
|
|
691
|
+
type: y(Se)
|
|
692
|
+
}), ge("design:type", Number) ], AudioSourceBaseComponent.prototype, "type", void 0);
|
|
693
|
+
|
|
694
|
+
ye([ Ee({
|
|
695
|
+
tooltip: "音源",
|
|
696
|
+
type: n
|
|
697
|
+
}), ge("design:type", typeof (ve = typeof n !== "undefined" && n) === "function" ? ve : Object) ], AudioSourceBaseComponent.prototype, "clip", void 0);
|
|
698
|
+
|
|
699
|
+
ye([ Ee({
|
|
700
|
+
tooltip: "循环"
|
|
701
|
+
}), ge("design:type", Boolean) ], AudioSourceBaseComponent.prototype, "loop", void 0);
|
|
702
|
+
|
|
703
|
+
ye([ Ee({
|
|
704
|
+
tooltip: "音量"
|
|
705
|
+
}), ge("design:type", Number) ], AudioSourceBaseComponent.prototype, "volume", void 0);
|
|
706
|
+
|
|
707
|
+
ye([ Ee({
|
|
708
|
+
tooltip: "是否启用自动播放"
|
|
709
|
+
}), ge("design:type", Boolean) ], AudioSourceBaseComponent.prototype, "playOnAwake", void 0);
|
|
710
|
+
|
|
711
|
+
var we;
|
|
712
|
+
|
|
713
|
+
const {ccclass: Ae, property: Ie} = i;
|
|
714
|
+
|
|
715
|
+
class AudioSourceUILayer extends UILayer {
|
|
716
|
+
type=(() => Se.EFFECT)();
|
|
717
|
+
clip=null;
|
|
718
|
+
loop=false;
|
|
719
|
+
volume=1;
|
|
720
|
+
playOnAwake=false;
|
|
721
|
+
audioSource=(() => new t)();
|
|
722
|
+
onEnable() {
|
|
723
|
+
super.onEnable();
|
|
724
|
+
this.cat.event.on(_e.EFFECT_ON, this.onPlayEffectHandler, this).on(_e.EFFECT_OFF, this.onStopEffectHandler, this).on(_e.MUSIC_ON, this.onPlayMusicHandler, this).on(_e.MUSIC_OFF, this.onStopMusicHandler, this);
|
|
725
|
+
}
|
|
726
|
+
__preload() {
|
|
727
|
+
this.clip && (this.audioSource.clip = this.clip);
|
|
728
|
+
this.audioSource.loop = this.loop;
|
|
729
|
+
this.audioSource.volume = this.volume;
|
|
730
|
+
this.audioSource.playOnAwake = this.playOnAwake;
|
|
731
|
+
super.__preload();
|
|
732
|
+
const {volumeEffect: e, volumeMusic: t} = this.cat.audio;
|
|
733
|
+
this.audioSource.volume = this.type === Se.BGM ? t : e;
|
|
734
|
+
}
|
|
735
|
+
stopAudio() {
|
|
736
|
+
this.audioSource.stop();
|
|
737
|
+
}
|
|
738
|
+
playAudio() {
|
|
739
|
+
const {switchEffect: e, switchMusic: t} = this.cat.audio;
|
|
740
|
+
if (!this.audioSource.playing && (this.type === Se.BGM ? t : e) && !g._paused) this.audioSource.play();
|
|
741
|
+
}
|
|
742
|
+
onPlayEffectHandler() {}
|
|
743
|
+
onStopEffectHandler() {
|
|
744
|
+
this.stopAudio();
|
|
745
|
+
}
|
|
746
|
+
onPlayMusicHandler() {}
|
|
747
|
+
onStopMusicHandler() {
|
|
748
|
+
this.stopAudio();
|
|
749
|
+
}
|
|
750
|
+
_onPreDestroy() {
|
|
751
|
+
this.onStopMusicHandler();
|
|
752
|
+
super._onPreDestroy();
|
|
753
|
+
}
|
|
754
|
+
}
|
|
755
|
+
|
|
756
|
+
ye([ Ie({
|
|
757
|
+
tooltip: `类型:\n EFFECT 音效\n BGM 音乐`,
|
|
758
|
+
type: y(Se)
|
|
759
|
+
}), ge("design:type", Number) ], AudioSourceUILayer.prototype, "type", void 0);
|
|
760
|
+
|
|
761
|
+
ye([ Ie({
|
|
762
|
+
tooltip: "音源",
|
|
763
|
+
type: n
|
|
764
|
+
}), ge("design:type", typeof (we = typeof n !== "undefined" && n) === "function" ? we : Object) ], AudioSourceUILayer.prototype, "clip", void 0);
|
|
765
|
+
|
|
766
|
+
ye([ Ie({
|
|
767
|
+
tooltip: "循环"
|
|
768
|
+
}), ge("design:type", Boolean) ], AudioSourceUILayer.prototype, "loop", void 0);
|
|
769
|
+
|
|
770
|
+
ye([ Ie({
|
|
771
|
+
tooltip: "音量"
|
|
772
|
+
}), ge("design:type", Number) ], AudioSourceUILayer.prototype, "volume", void 0);
|
|
773
|
+
|
|
774
|
+
ye([ Ie({
|
|
775
|
+
tooltip: "是否启用自动播放"
|
|
776
|
+
}), ge("design:type", Boolean) ], AudioSourceUILayer.prototype, "playOnAwake", void 0);
|
|
777
|
+
|
|
778
|
+
var Oe, Te, ke, Re;
|
|
779
|
+
|
|
780
|
+
const {ccclass: Me, property: Ue, menu: Ne} = i;
|
|
781
|
+
|
|
782
|
+
var De;
|
|
783
|
+
|
|
784
|
+
(function(e) {
|
|
785
|
+
e[e["FIXED"] = 0] = "FIXED";
|
|
786
|
+
e[e["SLIDE"] = 1] = "SLIDE";
|
|
787
|
+
})(De || (De = {}));
|
|
788
|
+
|
|
789
|
+
let xe = class CoreToast extends BaseComponent {
|
|
790
|
+
fixed_node;
|
|
791
|
+
slide_node;
|
|
792
|
+
fixed_label;
|
|
793
|
+
slide_label;
|
|
794
|
+
onLoad() {
|
|
795
|
+
this.fixed_node.active = this.slide_node.active = false;
|
|
796
|
+
}
|
|
797
|
+
start() {
|
|
798
|
+
this.show();
|
|
799
|
+
}
|
|
800
|
+
async show() {
|
|
801
|
+
return new F(async (e, t) => {
|
|
802
|
+
const {title: i, type: n, fixed_time: o} = this.props;
|
|
803
|
+
if (n == De.FIXED) {
|
|
804
|
+
this.fixed_node.active = true;
|
|
805
|
+
this.fixed_label.string = `${i}`;
|
|
806
|
+
this.scheduleOnce(() => {
|
|
807
|
+
this.node.destroy();
|
|
808
|
+
e();
|
|
809
|
+
}, o);
|
|
810
|
+
} else {
|
|
811
|
+
this.slide_node.active = true;
|
|
812
|
+
this.slide_label.string = `${i}`;
|
|
813
|
+
this.playAnim(this.node).then(() => {
|
|
814
|
+
e();
|
|
815
|
+
});
|
|
816
|
+
}
|
|
817
|
+
});
|
|
818
|
+
}
|
|
819
|
+
playAnim(e) {
|
|
820
|
+
return new F((t, i) => {
|
|
821
|
+
const n = 1.2;
|
|
822
|
+
const o = .5;
|
|
823
|
+
const s = this.node.getComponent(v);
|
|
824
|
+
const r = _(s).delay(n).to(o, {
|
|
825
|
+
opacity: 0
|
|
826
|
+
}).call(() => {
|
|
827
|
+
C.stopAllByTarget(e);
|
|
828
|
+
this.node.destroy();
|
|
829
|
+
t();
|
|
830
|
+
});
|
|
831
|
+
_(e).by(o, {
|
|
832
|
+
position: m(0, 400, 0)
|
|
833
|
+
}).call(() => {
|
|
834
|
+
r.start();
|
|
835
|
+
}).start();
|
|
836
|
+
});
|
|
837
|
+
}
|
|
838
|
+
onDestroy() {
|
|
839
|
+
C.stopAllByTarget(this.node);
|
|
840
|
+
this.unscheduleAllCallbacks();
|
|
841
|
+
}
|
|
842
|
+
};
|
|
843
|
+
|
|
844
|
+
ye([ Ue({
|
|
845
|
+
type: s,
|
|
846
|
+
tooltip: "固定节点"
|
|
847
|
+
}), ge("design:type", typeof (Oe = typeof s !== "undefined" && s) === "function" ? Oe : Object) ], xe.prototype, "fixed_node", void 0);
|
|
848
|
+
|
|
849
|
+
ye([ Ue({
|
|
850
|
+
type: s,
|
|
851
|
+
tooltip: "滑动节点"
|
|
852
|
+
}), ge("design:type", typeof (Te = typeof s !== "undefined" && s) === "function" ? Te : Object) ], xe.prototype, "slide_node", void 0);
|
|
853
|
+
|
|
854
|
+
ye([ Ue({
|
|
855
|
+
type: b,
|
|
856
|
+
tooltip: "固定标签节点"
|
|
857
|
+
}), ge("design:type", typeof (ke = typeof b !== "undefined" && b) === "function" ? ke : Object) ], xe.prototype, "fixed_label", void 0);
|
|
858
|
+
|
|
859
|
+
ye([ Ue({
|
|
860
|
+
type: b,
|
|
861
|
+
tooltip: "滑动标签节点"
|
|
862
|
+
}), ge("design:type", typeof (Re = typeof b !== "undefined" && b) === "function" ? Re : Object) ], xe.prototype, "slide_label", void 0);
|
|
863
|
+
|
|
864
|
+
xe = ye([ Me("CoreToast"), Ne("CATCORE/CoreToast") ], xe);
|
|
865
|
+
|
|
866
|
+
var je;
|
|
867
|
+
|
|
868
|
+
(function(e) {
|
|
869
|
+
e["EVENT_SHOW"] = "GlobalEventConstant/EVENT_SHOW";
|
|
870
|
+
e["EVENT_HIDE"] = "GlobalEventConstant/EVENT_HIDE";
|
|
871
|
+
e["GAME_RESIZE"] = "GlobalEventConstant/GAME_RESIZE";
|
|
872
|
+
e["EVENT_CLOSE"] = "GlobalEventConstant/EVENT_CLOSE";
|
|
873
|
+
e["ONLINE"] = "GlobalEventConstant/ONLINE";
|
|
874
|
+
e["OFFLINE"] = "GlobalEventConstant/OFFLINE";
|
|
875
|
+
e["ROOT_MASK_UPDATE"] = "GlobalEventConstant/ROOT_MASK_UPDATE";
|
|
876
|
+
e["ROOT_MASK_CHANGE"] = "GlobalEventConstant/ROOT_MASK_CHANGE";
|
|
877
|
+
})(je || (je = {}));
|
|
878
|
+
|
|
879
|
+
var Fe;
|
|
880
|
+
|
|
881
|
+
const {ccclass: Le, property: Be, menu: Pe} = i;
|
|
882
|
+
|
|
883
|
+
let Ge = class CoreBlackMask extends BaseComponent {
|
|
884
|
+
tween;
|
|
885
|
+
};
|
|
886
|
+
|
|
887
|
+
ye([ Be({
|
|
888
|
+
type: s,
|
|
889
|
+
tooltip: "动画节点"
|
|
890
|
+
}), ge("design:type", typeof (Fe = typeof s !== "undefined" && s) === "function" ? Fe : Object) ], Ge.prototype, "tween", void 0);
|
|
891
|
+
|
|
892
|
+
Ge = ye([ Le("CoreBlackMask"), Pe("CATCORE/CoreBlackMask") ], Ge);
|
|
893
|
+
|
|
894
|
+
var He, $e;
|
|
895
|
+
|
|
896
|
+
const {ccclass: Ke, property: We, menu: Ve} = i;
|
|
897
|
+
|
|
898
|
+
let ze = class CoreUIContainer extends UILayer {
|
|
899
|
+
scene_mask_node;
|
|
900
|
+
ui_container;
|
|
901
|
+
gui=null;
|
|
902
|
+
onLoad() {
|
|
903
|
+
this.setSceneMaskActive(false);
|
|
904
|
+
}
|
|
905
|
+
get scene_mask() {
|
|
906
|
+
return this.scene_mask_node.getComponent(Ge);
|
|
907
|
+
}
|
|
908
|
+
get brother() {
|
|
909
|
+
return this.ui_container.children || [];
|
|
910
|
+
}
|
|
911
|
+
get tweenChildren() {
|
|
912
|
+
return this.scene_mask.tween.children;
|
|
913
|
+
}
|
|
914
|
+
onEventListener() {
|
|
915
|
+
this.cat.event.on(je.ROOT_MASK_CHANGE, this.uiMaskChanged, this);
|
|
916
|
+
}
|
|
917
|
+
addMask() {
|
|
918
|
+
const e = this.brother[this.brother.length - 1];
|
|
919
|
+
e && this.scene_mask.node.setSiblingIndex(e.getSiblingIndex());
|
|
920
|
+
this.blockMaskSiblingIndexChanged();
|
|
921
|
+
}
|
|
922
|
+
subMask() {
|
|
923
|
+
const e = this.brother[this.brother.length - 2];
|
|
924
|
+
e && this.scene_mask.node.setSiblingIndex(e.getSiblingIndex());
|
|
925
|
+
this.blockMaskSiblingIndexChanged();
|
|
926
|
+
}
|
|
927
|
+
blockMaskSiblingIndexChanged() {
|
|
928
|
+
this.tweenChildren.length > 1 || this.brother.length > 1 ? this.show() : this.hide();
|
|
929
|
+
}
|
|
930
|
+
addNodeToTween(e) {
|
|
931
|
+
if (u(this) && this.scene_mask) {
|
|
932
|
+
this.scene_mask.tween.addChild(e);
|
|
933
|
+
}
|
|
934
|
+
return this;
|
|
935
|
+
}
|
|
936
|
+
show() {
|
|
937
|
+
this.setSceneMaskActive(true);
|
|
938
|
+
}
|
|
939
|
+
hide() {
|
|
940
|
+
this.setSceneMaskActive(false);
|
|
941
|
+
}
|
|
942
|
+
setGui(e) {
|
|
943
|
+
this.gui = e;
|
|
944
|
+
return this;
|
|
945
|
+
}
|
|
946
|
+
uiMaskChanged() {
|
|
947
|
+
this.blockMaskSiblingIndexChanged();
|
|
948
|
+
}
|
|
949
|
+
setSceneMaskActive(e) {
|
|
950
|
+
this.scene_mask.node.active = e;
|
|
951
|
+
}
|
|
952
|
+
};
|
|
953
|
+
|
|
954
|
+
ye([ We({
|
|
955
|
+
type: s
|
|
956
|
+
}), ge("design:type", typeof (He = typeof s !== "undefined" && s) === "function" ? He : Object) ], ze.prototype, "scene_mask_node", void 0);
|
|
957
|
+
|
|
958
|
+
ye([ We({
|
|
959
|
+
type: s
|
|
960
|
+
}), ge("design:type", typeof ($e = typeof s !== "undefined" && s) === "function" ? $e : Object) ], ze.prototype, "ui_container", void 0);
|
|
961
|
+
|
|
962
|
+
ze = ye([ Ke("CoreUIContainer"), Ve("CATCORE/CoreUIContainer") ], ze);
|
|
963
|
+
|
|
964
|
+
class RootUILayer extends UILayer {
|
|
965
|
+
onEnable() {
|
|
966
|
+
super.onEnable();
|
|
967
|
+
this.updateMask();
|
|
968
|
+
}
|
|
969
|
+
onDisable() {
|
|
970
|
+
super.onDisable();
|
|
971
|
+
this.updateMask();
|
|
972
|
+
}
|
|
973
|
+
updateMask() {
|
|
974
|
+
this.cat.event.emit(je.ROOT_MASK_UPDATE);
|
|
975
|
+
}
|
|
976
|
+
}
|
|
977
|
+
|
|
978
|
+
var qe, Qe;
|
|
979
|
+
|
|
980
|
+
const {ccclass: Je, property: Xe, menu: Ze} = i;
|
|
981
|
+
|
|
982
|
+
let Ye = class CoreShowLoading extends RootUILayer {
|
|
983
|
+
title;
|
|
984
|
+
loadingTween;
|
|
985
|
+
loading_rotate=0;
|
|
986
|
+
onAutoObserver() {
|
|
987
|
+
this.addAutorun([ () => {
|
|
988
|
+
if (this.props?.title) {
|
|
989
|
+
this.title.string = `${this.props?.title}`;
|
|
990
|
+
}
|
|
991
|
+
this.title.node.active = !!this.props?.title?.length;
|
|
992
|
+
}, () => {
|
|
993
|
+
this.getComponent(E).enabled = !!this.props?.mask;
|
|
994
|
+
} ]);
|
|
995
|
+
}
|
|
996
|
+
update(e) {
|
|
997
|
+
this.loading_rotate += e * 220;
|
|
998
|
+
this.loadingTween.setRotationFromEuler(0, 0, -this.loading_rotate % 360);
|
|
999
|
+
if (this.loading_rotate > 360) {
|
|
1000
|
+
this.loading_rotate -= 360;
|
|
1001
|
+
}
|
|
1002
|
+
}
|
|
1003
|
+
};
|
|
1004
|
+
|
|
1005
|
+
ye([ Xe({
|
|
1006
|
+
type: b,
|
|
1007
|
+
tooltip: "标题"
|
|
1008
|
+
}), ge("design:type", typeof (qe = typeof b !== "undefined" && b) === "function" ? qe : Object) ], Ye.prototype, "title", void 0);
|
|
1009
|
+
|
|
1010
|
+
ye([ Xe({
|
|
1011
|
+
type: s,
|
|
1012
|
+
tooltip: "动画"
|
|
1013
|
+
}), ge("design:type", typeof (Qe = typeof s !== "undefined" && s) === "function" ? Qe : Object) ], Ye.prototype, "loadingTween", void 0);
|
|
1014
|
+
|
|
1015
|
+
Ye = ye([ Je("CoreShowLoading"), Ze("CATCORE/CoreShowLoading") ], Ye);
|
|
1016
|
+
|
|
1017
|
+
var et;
|
|
1018
|
+
|
|
1019
|
+
(function(e) {
|
|
1020
|
+
e["RECONNECTED"] = "重连成功";
|
|
1021
|
+
e["RECONNECTING"] = "正在重连";
|
|
1022
|
+
e["MAX_RECONNECT"] = "重连次数超出限制,请检查网络";
|
|
1023
|
+
e["RECONNECTED_ERROR"] = "重连失败,请检查网络";
|
|
1024
|
+
e["CONNECT_PARAM_ERROR"] = "游戏参数错误,请重新加载";
|
|
1025
|
+
e["KICK"] = "账号已下线";
|
|
1026
|
+
e["OFFLINE"] = "网络已断开";
|
|
1027
|
+
e["ONLINE"] = "网络已连接";
|
|
1028
|
+
e["GAME_ERROR"] = "连接游戏服错误";
|
|
1029
|
+
})(et || (et = {}));
|
|
1030
|
+
|
|
1031
|
+
var tt, it, nt;
|
|
1032
|
+
|
|
1033
|
+
const {ccclass: ot, property: st, menu: rt} = i;
|
|
1034
|
+
|
|
1035
|
+
let at = class CoreReconnection extends RootUILayer {
|
|
1036
|
+
common_prompt_text;
|
|
1037
|
+
btn_confirm;
|
|
1038
|
+
btn_close;
|
|
1039
|
+
is_close=false;
|
|
1040
|
+
props={
|
|
1041
|
+
content: null
|
|
1042
|
+
};
|
|
1043
|
+
initUI() {}
|
|
1044
|
+
onLoad() {
|
|
1045
|
+
this.btn_confirm.node.on(S.EventType.CLICK, this.onConfirmHandler, this);
|
|
1046
|
+
this.btn_close.node.on(S.EventType.CLICK, this.onConfirmHandler, this);
|
|
1047
|
+
this.addAutorun([ () => {
|
|
1048
|
+
this.common_prompt_text.string = this.props.content ?? "";
|
|
1049
|
+
} ]);
|
|
1050
|
+
}
|
|
1051
|
+
onDestroy() {
|
|
1052
|
+
this.unscheduleAllCallbacks();
|
|
1053
|
+
}
|
|
1054
|
+
updateProps(e) {
|
|
1055
|
+
this.updatePromptText(e, e == et.RECONNECTING);
|
|
1056
|
+
}
|
|
1057
|
+
updatePromptText(e) {
|
|
1058
|
+
let t = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
1059
|
+
this.unscheduleAllCallbacks();
|
|
1060
|
+
this.props.content = e;
|
|
1061
|
+
a("更新提示文案:", e);
|
|
1062
|
+
if (t) {
|
|
1063
|
+
let t = 0;
|
|
1064
|
+
const i = () => {
|
|
1065
|
+
t = (t + 1) % 4;
|
|
1066
|
+
this.common_prompt_text.string = e + [ "", "·", "··", "···" ][t];
|
|
1067
|
+
};
|
|
1068
|
+
this.schedule(i, .5);
|
|
1069
|
+
}
|
|
1070
|
+
}
|
|
1071
|
+
onConfirmHandler() {
|
|
1072
|
+
this.is_close = true;
|
|
1073
|
+
this.cat.gui.hideReconnect();
|
|
1074
|
+
}
|
|
1075
|
+
};
|
|
1076
|
+
|
|
1077
|
+
ye([ st({
|
|
1078
|
+
type: b,
|
|
1079
|
+
tooltip: "通用提示文本"
|
|
1080
|
+
}), ge("design:type", typeof (tt = typeof b !== "undefined" && b) === "function" ? tt : Object) ], at.prototype, "common_prompt_text", void 0);
|
|
1081
|
+
|
|
1082
|
+
ye([ st({
|
|
1083
|
+
type: S,
|
|
1084
|
+
tooltip: "确定按钮"
|
|
1085
|
+
}), ge("design:type", typeof (it = typeof S !== "undefined" && S) === "function" ? it : Object) ], at.prototype, "btn_confirm", void 0);
|
|
1086
|
+
|
|
1087
|
+
ye([ st({
|
|
1088
|
+
type: S,
|
|
1089
|
+
tooltip: "关闭按钮"
|
|
1090
|
+
}), ge("design:type", typeof (nt = typeof S !== "undefined" && S) === "function" ? nt : Object) ], at.prototype, "btn_close", void 0);
|
|
1091
|
+
|
|
1092
|
+
at = ye([ ot("CoreReconnection"), rt("CATCORE/CoreReconnection") ], at);
|
|
1093
|
+
|
|
1094
|
+
var lt, ct, ht;
|
|
1095
|
+
|
|
1096
|
+
const {ccclass: ut, property: dt, menu: pt} = i;
|
|
1097
|
+
|
|
1098
|
+
let ft = class CoreNotice extends RootUILayer {
|
|
1099
|
+
text;
|
|
1100
|
+
btn_confirm;
|
|
1101
|
+
btn_close;
|
|
1102
|
+
props={
|
|
1103
|
+
text: "",
|
|
1104
|
+
confrim: () => {}
|
|
1105
|
+
};
|
|
1106
|
+
onLoad() {
|
|
1107
|
+
this.btn_confirm.node.on(S.EventType.CLICK, this.onConfrimHandler, this);
|
|
1108
|
+
}
|
|
1109
|
+
start() {
|
|
1110
|
+
this.props && this.updateProps(this.props);
|
|
1111
|
+
}
|
|
1112
|
+
onConfrimHandler() {
|
|
1113
|
+
this.props?.confrim?.();
|
|
1114
|
+
this.cat.gui.hideNotice();
|
|
1115
|
+
}
|
|
1116
|
+
updateProps(e) {
|
|
1117
|
+
this.text.string = `${e.text}`;
|
|
1118
|
+
this.btn_confirm.node.active = !!e.confrim;
|
|
1119
|
+
}
|
|
1120
|
+
};
|
|
1121
|
+
|
|
1122
|
+
ye([ dt({
|
|
1123
|
+
type: b,
|
|
1124
|
+
tooltip: "提示文本"
|
|
1125
|
+
}), ge("design:type", typeof (lt = typeof b !== "undefined" && b) === "function" ? lt : Object) ], ft.prototype, "text", void 0);
|
|
1126
|
+
|
|
1127
|
+
ye([ dt({
|
|
1128
|
+
type: S,
|
|
1129
|
+
tooltip: "确定按钮"
|
|
1130
|
+
}), ge("design:type", typeof (ct = typeof S !== "undefined" && S) === "function" ? ct : Object) ], ft.prototype, "btn_confirm", void 0);
|
|
1131
|
+
|
|
1132
|
+
ye([ dt({
|
|
1133
|
+
type: S,
|
|
1134
|
+
tooltip: "关闭按钮"
|
|
1135
|
+
}), ge("design:type", typeof (ht = typeof S !== "undefined" && S) === "function" ? ht : Object) ], ft.prototype, "btn_close", void 0);
|
|
1136
|
+
|
|
1137
|
+
ft = ye([ ut("CoreNotice"), pt("CATCORE/CoreNotice") ], ft);
|
|
1138
|
+
|
|
1139
|
+
class SceneLayer extends BaseComponent {
|
|
1140
|
+
isReload;
|
|
1141
|
+
}
|
|
1142
|
+
|
|
1143
|
+
var mt, _t, yt, gt, bt, vt, Ct, Et;
|
|
1144
|
+
|
|
1145
|
+
const {ccclass: St, property: wt, menu: At} = i;
|
|
1146
|
+
|
|
1147
|
+
var It;
|
|
1148
|
+
|
|
1149
|
+
(function(e) {
|
|
1150
|
+
e[e["UI"] = 0] = "UI";
|
|
1151
|
+
e[e["LOADING"] = 1] = "LOADING";
|
|
1152
|
+
e[e["TOAST"] = 2] = "TOAST";
|
|
1153
|
+
e[e["RECONNECTTION"] = 3] = "RECONNECTTION";
|
|
1154
|
+
e[e["NOTICE"] = 4] = "NOTICE";
|
|
1155
|
+
})(It || (It = {}));
|
|
1156
|
+
|
|
1157
|
+
let Ot = class Gui extends BaseComponent {
|
|
1158
|
+
reconnection_ui_prefab;
|
|
1159
|
+
toast_ui_prefab;
|
|
1160
|
+
loading_ui_prefab;
|
|
1161
|
+
notice_ui_prefab;
|
|
1162
|
+
ui_prefab;
|
|
1163
|
+
root_ui;
|
|
1164
|
+
root_toast;
|
|
1165
|
+
root_mask;
|
|
1166
|
+
ui_container_component=null;
|
|
1167
|
+
reconnection_ui_component=null;
|
|
1168
|
+
notice_ui_component=null;
|
|
1169
|
+
loading_ui_component=null;
|
|
1170
|
+
toast_ui_component;
|
|
1171
|
+
currentScene;
|
|
1172
|
+
currentSceneUUID;
|
|
1173
|
+
onEventListener() {
|
|
1174
|
+
this.cat.event.on(je.ROOT_MASK_UPDATE, this.onRootUpdate, this);
|
|
1175
|
+
}
|
|
1176
|
+
initedScene=false;
|
|
1177
|
+
engineReady=false;
|
|
1178
|
+
sceneReady=false;
|
|
1179
|
+
_scene=null;
|
|
1180
|
+
init(e) {
|
|
1181
|
+
this.cat = e;
|
|
1182
|
+
g.once(w.EVENT_ENGINE_INITED, () => {
|
|
1183
|
+
this.engineReady = true;
|
|
1184
|
+
this.tryInit();
|
|
1185
|
+
});
|
|
1186
|
+
r.once(A.EVENT_AFTER_SCENE_LAUNCH, e => {
|
|
1187
|
+
this.sceneReady = true;
|
|
1188
|
+
this._scene = e;
|
|
1189
|
+
this.tryInit();
|
|
1190
|
+
});
|
|
1191
|
+
return this;
|
|
1192
|
+
}
|
|
1193
|
+
tryInit() {
|
|
1194
|
+
if (!this.engineReady || !this.sceneReady) return;
|
|
1195
|
+
if (this.initedScene) return;
|
|
1196
|
+
this.initedScene = true;
|
|
1197
|
+
console.log("首场景初始化完成");
|
|
1198
|
+
this.changeScene(this._scene);
|
|
1199
|
+
}
|
|
1200
|
+
start() {
|
|
1201
|
+
this.onRootUpdate();
|
|
1202
|
+
}
|
|
1203
|
+
toastQueue=[];
|
|
1204
|
+
isScheduling=false;
|
|
1205
|
+
minInterval=.2;
|
|
1206
|
+
showToast(e) {
|
|
1207
|
+
this.toastQueue.push(e);
|
|
1208
|
+
if (!this.isScheduling) {
|
|
1209
|
+
this.processQueueWithInterval();
|
|
1210
|
+
}
|
|
1211
|
+
}
|
|
1212
|
+
processQueueWithInterval() {
|
|
1213
|
+
if (this.toastQueue.length === 0) {
|
|
1214
|
+
this.isScheduling = false;
|
|
1215
|
+
return;
|
|
1216
|
+
}
|
|
1217
|
+
this.isScheduling = true;
|
|
1218
|
+
const e = this.toastQueue.shift();
|
|
1219
|
+
const t = () => {
|
|
1220
|
+
const t = h(this.toast_ui_prefab);
|
|
1221
|
+
const i = t.getComponent(xe);
|
|
1222
|
+
i.addToParent(this.root_toast, {
|
|
1223
|
+
props: e
|
|
1224
|
+
});
|
|
1225
|
+
this.scheduleOnce(() => {
|
|
1226
|
+
this.processQueueWithInterval();
|
|
1227
|
+
}, this.minInterval);
|
|
1228
|
+
};
|
|
1229
|
+
if (this.root_toast.children.length === 0) {
|
|
1230
|
+
t();
|
|
1231
|
+
} else {
|
|
1232
|
+
this.scheduleOnce(t, this.minInterval);
|
|
1233
|
+
}
|
|
1234
|
+
}
|
|
1235
|
+
hideToast() {
|
|
1236
|
+
if (this.root_toast) {
|
|
1237
|
+
var e;
|
|
1238
|
+
H(e = this.root_toast.children).call(e, e => {
|
|
1239
|
+
e.getComponent(xe)?.removeAndDestroy();
|
|
1240
|
+
});
|
|
1241
|
+
}
|
|
1242
|
+
this.toastQueue = [];
|
|
1243
|
+
this.unschedule(this.processQueueWithInterval);
|
|
1244
|
+
this.isScheduling = false;
|
|
1245
|
+
return this;
|
|
1246
|
+
}
|
|
1247
|
+
showLoading() {
|
|
1248
|
+
let {title: e = "", mask: t = true, black: i = true} = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
1249
|
+
a("showLoading", e);
|
|
1250
|
+
if (this.loading_ui_component) {
|
|
1251
|
+
this.loading_ui_component.setOptions({
|
|
1252
|
+
props: {
|
|
1253
|
+
title: e,
|
|
1254
|
+
mask: t,
|
|
1255
|
+
black: i
|
|
1256
|
+
}
|
|
1257
|
+
});
|
|
1258
|
+
} else {
|
|
1259
|
+
const n = h(this.loading_ui_prefab);
|
|
1260
|
+
this.loading_ui_component = n.getComponent(Ye).addToParent(this.root_ui, {
|
|
1261
|
+
props: {
|
|
1262
|
+
title: e,
|
|
1263
|
+
mask: t,
|
|
1264
|
+
black: i
|
|
1265
|
+
}
|
|
1266
|
+
});
|
|
1267
|
+
}
|
|
1268
|
+
return this;
|
|
1269
|
+
}
|
|
1270
|
+
hideLoading() {
|
|
1271
|
+
this.loading_ui_component?.removeAndDestroy();
|
|
1272
|
+
this.loading_ui_component = null;
|
|
1273
|
+
return this;
|
|
1274
|
+
}
|
|
1275
|
+
showReconnect(e) {
|
|
1276
|
+
if (!this.reconnection_ui_component) {
|
|
1277
|
+
const t = h(this.reconnection_ui_prefab);
|
|
1278
|
+
this.reconnection_ui_component = t.getComponent(at).addToParent(this.root_ui, {
|
|
1279
|
+
props: {
|
|
1280
|
+
content: e
|
|
1281
|
+
}
|
|
1282
|
+
});
|
|
1283
|
+
} else {
|
|
1284
|
+
this.reconnection_ui_component.setUpdateProps({
|
|
1285
|
+
content: e
|
|
1286
|
+
});
|
|
1287
|
+
}
|
|
1288
|
+
return this;
|
|
1289
|
+
}
|
|
1290
|
+
hideReconnect() {
|
|
1291
|
+
this.reconnection_ui_component?.removeAndDestroy();
|
|
1292
|
+
this.reconnection_ui_component = null;
|
|
1293
|
+
return this;
|
|
1294
|
+
}
|
|
1295
|
+
showNotice(e) {
|
|
1296
|
+
if (!this.notice_ui_component) {
|
|
1297
|
+
const t = h(this.notice_ui_prefab);
|
|
1298
|
+
this.notice_ui_component = t.getComponent(ft).addToParent(this.root_ui, {
|
|
1299
|
+
props: e
|
|
1300
|
+
});
|
|
1301
|
+
} else {
|
|
1302
|
+
this.notice_ui_component.setUpdateProps(e);
|
|
1303
|
+
}
|
|
1304
|
+
return this;
|
|
1305
|
+
}
|
|
1306
|
+
hideNotice() {
|
|
1307
|
+
this.notice_ui_component?.removeAndDestroy();
|
|
1308
|
+
this.notice_ui_component = null;
|
|
1309
|
+
return this;
|
|
1310
|
+
}
|
|
1311
|
+
findBundleBySceneUUID(e) {
|
|
1312
|
+
const t = I.bundles._map;
|
|
1313
|
+
for (const i in t) {
|
|
1314
|
+
const n = t[i];
|
|
1315
|
+
const o = n.config?.scenes?._map;
|
|
1316
|
+
if (!o) continue;
|
|
1317
|
+
for (const t in o) {
|
|
1318
|
+
const i = o[t];
|
|
1319
|
+
if (i?.uuid === e) {
|
|
1320
|
+
return n;
|
|
1321
|
+
}
|
|
1322
|
+
}
|
|
1323
|
+
}
|
|
1324
|
+
return null;
|
|
1325
|
+
}
|
|
1326
|
+
findSceneByUUIDFromBundle(e, t) {
|
|
1327
|
+
return;
|
|
1328
|
+
}
|
|
1329
|
+
loadScene(e, t, i, n) {
|
|
1330
|
+
a("[加载场景参数]", e, t, i, n);
|
|
1331
|
+
let s;
|
|
1332
|
+
let l = true;
|
|
1333
|
+
let c;
|
|
1334
|
+
const h = [ t, i, n ];
|
|
1335
|
+
for (const e of h) {
|
|
1336
|
+
if (typeof e === "boolean") l = e; else if (typeof e === "function") c = e; else if (e && typeof e === "object") s = e;
|
|
1337
|
+
}
|
|
1338
|
+
r.once(A.EVENT_BEFORE_SCENE_LAUNCH, e => {
|
|
1339
|
+
this.changeScene(e, s ?? {}, l);
|
|
1340
|
+
});
|
|
1341
|
+
r.once(A.EVENT_AFTER_SCENE_LAUNCH, () => {
|
|
1342
|
+
c?.();
|
|
1343
|
+
});
|
|
1344
|
+
if (typeof e === "string") {
|
|
1345
|
+
const t = this.findBundleBySceneUUID(e);
|
|
1346
|
+
if (t) {
|
|
1347
|
+
if (t.name !== "main") {
|
|
1348
|
+
t.loadScene(this.currentScene, (e, t) => {
|
|
1349
|
+
if (e) return o("loadScene err", e);
|
|
1350
|
+
r.runScene(t);
|
|
1351
|
+
});
|
|
1352
|
+
} else {
|
|
1353
|
+
const i = t.getAssetInfo(e);
|
|
1354
|
+
if (i?.url) r.loadScene(i.url);
|
|
1355
|
+
}
|
|
1356
|
+
} else {
|
|
1357
|
+
r.loadScene(e);
|
|
1358
|
+
}
|
|
1359
|
+
} else {
|
|
1360
|
+
r.runScene(e);
|
|
1361
|
+
}
|
|
1362
|
+
return this;
|
|
1363
|
+
}
|
|
1364
|
+
resetScene() {
|
|
1365
|
+
let e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "";
|
|
1366
|
+
e = e || this.currentScene;
|
|
1367
|
+
return this.loadScene(e);
|
|
1368
|
+
}
|
|
1369
|
+
cleanScene() {
|
|
1370
|
+
this.resetScene().hideLoading().hideNotice().hideReconnect().hideToast();
|
|
1371
|
+
}
|
|
1372
|
+
changeScene(e, t, i) {
|
|
1373
|
+
this.currentScene = e.name;
|
|
1374
|
+
this.currentSceneUUID = e.uuid;
|
|
1375
|
+
this.createUILayer(e);
|
|
1376
|
+
const n = e.getComponentInChildren(SceneLayer);
|
|
1377
|
+
a("给场景传递属性值=======", n);
|
|
1378
|
+
if (n) {
|
|
1379
|
+
n.isReload = i ?? true;
|
|
1380
|
+
}
|
|
1381
|
+
n?.setOptions(t);
|
|
1382
|
+
}
|
|
1383
|
+
createUILayer(e) {
|
|
1384
|
+
this.ui_container_component?.removeAndDestroy();
|
|
1385
|
+
this.ui_container_component = null;
|
|
1386
|
+
const t = h(this.ui_prefab);
|
|
1387
|
+
if (u(this.node)) {
|
|
1388
|
+
this.ui_container_component = t.getComponent(ze);
|
|
1389
|
+
this.ui_container_component?.setGui(this).addToParent(e, this.node.getSiblingIndex());
|
|
1390
|
+
}
|
|
1391
|
+
}
|
|
1392
|
+
reloadScene() {
|
|
1393
|
+
let e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : () => {};
|
|
1394
|
+
a("重新加载当前场景");
|
|
1395
|
+
this.loadScene(this.currentSceneUUID, true, e);
|
|
1396
|
+
}
|
|
1397
|
+
async closeUI(e, t) {
|
|
1398
|
+
const {component: i} = this.findUIBaseLayer(e, false);
|
|
1399
|
+
if (i) {
|
|
1400
|
+
i.setOptions({
|
|
1401
|
+
...t?.hook ?? {},
|
|
1402
|
+
...t?.props ?? {}
|
|
1403
|
+
});
|
|
1404
|
+
await i.hideTween(t || {});
|
|
1405
|
+
this.ui_container_component?.subMask();
|
|
1406
|
+
}
|
|
1407
|
+
}
|
|
1408
|
+
async openUI(e, t) {
|
|
1409
|
+
const {rootNode: i, component: n} = this.findUIBaseLayer(e, true);
|
|
1410
|
+
i.getComponent(UILayer);
|
|
1411
|
+
n?.setOptions(t);
|
|
1412
|
+
if (i) {
|
|
1413
|
+
this.ui_container_component?.addNodeToTween(i).addMask();
|
|
1414
|
+
}
|
|
1415
|
+
if (n) {
|
|
1416
|
+
await n.showTween(t || {});
|
|
1417
|
+
}
|
|
1418
|
+
this.ui_container_component?.ui_container && n?.addToParent(this.ui_container_component.ui_container);
|
|
1419
|
+
}
|
|
1420
|
+
findUIBaseLayer(e, t) {
|
|
1421
|
+
let i;
|
|
1422
|
+
let n = null;
|
|
1423
|
+
if (e instanceof s) {
|
|
1424
|
+
var r;
|
|
1425
|
+
i = e;
|
|
1426
|
+
const t = $(r = e.components).call(r, e => e instanceof UILayer);
|
|
1427
|
+
if (t.length) {
|
|
1428
|
+
if (t.length == 1) {
|
|
1429
|
+
n = t[0];
|
|
1430
|
+
} else {
|
|
1431
|
+
O(`${e.name}节点存在多个继承自BaseLayer的组件`);
|
|
1432
|
+
}
|
|
1433
|
+
} else {
|
|
1434
|
+
o(`${e.name}节点未找到继承自BaseLayer的组件`);
|
|
1435
|
+
return {
|
|
1436
|
+
rootNode: i,
|
|
1437
|
+
component: n
|
|
1438
|
+
};
|
|
1439
|
+
}
|
|
1440
|
+
} else {
|
|
1441
|
+
i = e.node;
|
|
1442
|
+
n = e;
|
|
1443
|
+
if (t) {
|
|
1444
|
+
while (i.parent) {
|
|
1445
|
+
i = i.parent;
|
|
1446
|
+
}
|
|
1447
|
+
n.root = i;
|
|
1448
|
+
} else {
|
|
1449
|
+
i = e.root;
|
|
1450
|
+
}
|
|
1451
|
+
}
|
|
1452
|
+
return {
|
|
1453
|
+
rootNode: i,
|
|
1454
|
+
component: n
|
|
1455
|
+
};
|
|
1456
|
+
}
|
|
1457
|
+
onRootUpdate() {
|
|
1458
|
+
const e = this.root_ui.children.findLastIndex(e => e.active && e != this.root_mask);
|
|
1459
|
+
this.root_mask.active = e != -1;
|
|
1460
|
+
if (e > -1) {
|
|
1461
|
+
const t = this.root_ui.children[e];
|
|
1462
|
+
const i = t.getSiblingIndex() - 1;
|
|
1463
|
+
this.root_mask.setSiblingIndex(i < 0 ? 0 : i);
|
|
1464
|
+
}
|
|
1465
|
+
this.cat.event.emit(je.ROOT_MASK_CHANGE);
|
|
1466
|
+
}
|
|
1467
|
+
};
|
|
1468
|
+
|
|
1469
|
+
ye([ wt({
|
|
1470
|
+
type: c,
|
|
1471
|
+
tooltip: "断线重连UI预制体"
|
|
1472
|
+
}), ge("design:type", typeof (mt = typeof c !== "undefined" && c) === "function" ? mt : Object) ], Ot.prototype, "reconnection_ui_prefab", void 0);
|
|
1473
|
+
|
|
1474
|
+
ye([ wt({
|
|
1475
|
+
type: c,
|
|
1476
|
+
tooltip: "提示UI预制体"
|
|
1477
|
+
}), ge("design:type", typeof (_t = typeof c !== "undefined" && c) === "function" ? _t : Object) ], Ot.prototype, "toast_ui_prefab", void 0);
|
|
1478
|
+
|
|
1479
|
+
ye([ wt({
|
|
1480
|
+
type: c,
|
|
1481
|
+
tooltip: "加载UI预制体"
|
|
1482
|
+
}), ge("design:type", typeof (yt = typeof c !== "undefined" && c) === "function" ? yt : Object) ], Ot.prototype, "loading_ui_prefab", void 0);
|
|
1483
|
+
|
|
1484
|
+
ye([ wt({
|
|
1485
|
+
type: c,
|
|
1486
|
+
tooltip: "公告UI预制体"
|
|
1487
|
+
}), ge("design:type", typeof (gt = typeof c !== "undefined" && c) === "function" ? gt : Object) ], Ot.prototype, "notice_ui_prefab", void 0);
|
|
1488
|
+
|
|
1489
|
+
ye([ wt({
|
|
1490
|
+
type: c,
|
|
1491
|
+
tooltip: "UI层预制体"
|
|
1492
|
+
}), ge("design:type", typeof (bt = typeof c !== "undefined" && c) === "function" ? bt : Object) ], Ot.prototype, "ui_prefab", void 0);
|
|
1493
|
+
|
|
1494
|
+
ye([ wt({
|
|
1495
|
+
type: s,
|
|
1496
|
+
tooltip: "root-UI层"
|
|
1497
|
+
}), ge("design:type", typeof (vt = typeof s !== "undefined" && s) === "function" ? vt : Object) ], Ot.prototype, "root_ui", void 0);
|
|
1498
|
+
|
|
1499
|
+
ye([ wt({
|
|
1500
|
+
type: s,
|
|
1501
|
+
tooltip: "root-组件层"
|
|
1502
|
+
}), ge("design:type", typeof (Ct = typeof s !== "undefined" && s) === "function" ? Ct : Object) ], Ot.prototype, "root_toast", void 0);
|
|
1503
|
+
|
|
1504
|
+
ye([ wt({
|
|
1505
|
+
type: s,
|
|
1506
|
+
tooltip: "root-mask"
|
|
1507
|
+
}), ge("design:type", typeof (Et = typeof s !== "undefined" && s) === "function" ? Et : Object) ], Ot.prototype, "root_mask", void 0);
|
|
1508
|
+
|
|
1509
|
+
Ot = ye([ St("Gui"), At("CATCORE/Gui") ], Ot);
|
|
1510
|
+
|
|
1511
|
+
var Tt;
|
|
1512
|
+
|
|
1513
|
+
(function(e) {
|
|
1514
|
+
e["Root"] = "prefabs/root";
|
|
1515
|
+
e["Toast"] = "prefabs/toast";
|
|
1516
|
+
e["BlackMask"] = "prefabs/black-mask";
|
|
1517
|
+
e["Loading"] = "prefabs/loading";
|
|
1518
|
+
e["Notice"] = "prefabs/notice";
|
|
1519
|
+
e["Reconnection"] = "prefabs/reconnection";
|
|
1520
|
+
})(Tt || (Tt = {}));
|
|
1521
|
+
|
|
1522
|
+
class GuiManager extends BaseManager {
|
|
1523
|
+
gui;
|
|
1524
|
+
#e="core";
|
|
1525
|
+
getGuiPrefabByType=(e, t) => new F((i, n) => {
|
|
1526
|
+
a(e, `${t}`);
|
|
1527
|
+
this.cat.res.load(e, t, (e, t) => {
|
|
1528
|
+
if (e) {
|
|
1529
|
+
n(e);
|
|
1530
|
+
} else {
|
|
1531
|
+
i(t);
|
|
1532
|
+
}
|
|
1533
|
+
});
|
|
1534
|
+
});
|
|
1535
|
+
async init() {
|
|
1536
|
+
this.cat.gui_bundle_name && (this.#e = this.cat.gui_bundle_name);
|
|
1537
|
+
const e = await this.getGuiPrefabByType(this.#e, Tt.Root);
|
|
1538
|
+
const t = h(e);
|
|
1539
|
+
this.gui = t.getComponent(Ot).init(this.cat);
|
|
1540
|
+
r.addPersistRootNode(t);
|
|
1541
|
+
return this;
|
|
1542
|
+
}
|
|
1543
|
+
}
|
|
1544
|
+
|
|
1545
|
+
class WrapperSocialGameClient extends re {
|
|
1546
|
+
showRequestErrInfo=false;
|
|
1547
|
+
logBlackList=[];
|
|
1548
|
+
ignore=e => {
|
|
1549
|
+
var t;
|
|
1550
|
+
return B(t = this.logBlackList).call(t, e);
|
|
1551
|
+
};
|
|
1552
|
+
constructor(e, t, i, n) {
|
|
1553
|
+
super(t, i, n, e);
|
|
1554
|
+
this.showRequestErrInfo = n?.showRequestErrInfo ?? false;
|
|
1555
|
+
}
|
|
1556
|
+
destroy() {
|
|
1557
|
+
this.disconnect(true);
|
|
1558
|
+
e._cat.socialGameClient.unregister(this);
|
|
1559
|
+
}
|
|
1560
|
+
async GameRequest(t, i, n) {
|
|
1561
|
+
let {forwardReq: s = false, forwardResp: r = false} = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
|
|
1562
|
+
return new F((l, c) => {
|
|
1563
|
+
super.GameRequest(t, i, n, {
|
|
1564
|
+
forwardReq: s,
|
|
1565
|
+
forwardResp: r
|
|
1566
|
+
}).then(e => {
|
|
1567
|
+
if (ne) {
|
|
1568
|
+
a(`%c ws服务端消息 %c [Response][${new Date}] %c ${t} %c`, "background:#ff00ff ; padding: 1px; border-radius: 3px 0 0 3px; color: #fff", "background:#3d7daa ; padding: 1px; color: #fff", "background:#ff00ff ; padding: 1px; border-radius: 0 3px 3px 0; color: #fff", "background:transparent", i);
|
|
1569
|
+
}
|
|
1570
|
+
l(e);
|
|
1571
|
+
}, t => {
|
|
1572
|
+
o(t);
|
|
1573
|
+
this.showRequestErrInfo && t?.msg && e._cat.gui.showToast({
|
|
1574
|
+
title: t.msg
|
|
1575
|
+
});
|
|
1576
|
+
c(t);
|
|
1577
|
+
});
|
|
1578
|
+
});
|
|
1579
|
+
}
|
|
1580
|
+
subscribe(t, i, n) {
|
|
1581
|
+
super.subscribe(t, i, i => {
|
|
1582
|
+
if (ne && !this.ignore(t)) {
|
|
1583
|
+
a(`%c ws服务端消息:[subscribe][${new Date}] %c ${t} %c`, "background:#35495e ; padding: 1px; border-radius: 3px 0 0 3px; color: #fff", "background:#410083 ; padding: 1px; border-radius: 0 3px 3px 0; color: #fff", "background:transparent", i);
|
|
1584
|
+
}
|
|
1585
|
+
e._cat.event.emit(t, i);
|
|
1586
|
+
n?.(i);
|
|
1587
|
+
});
|
|
1588
|
+
return this;
|
|
1589
|
+
}
|
|
1590
|
+
}
|
|
1591
|
+
|
|
1592
|
+
class SocialGameClientManager extends BaseManager {
|
|
1593
|
+
managedClients=(() => new G)();
|
|
1594
|
+
isGlobalOnline=true;
|
|
1595
|
+
isInBackground=false;
|
|
1596
|
+
reconnecting=false;
|
|
1597
|
+
onEventHideDelegate=(() => new T)();
|
|
1598
|
+
onEventShowDelegate=(() => new T)();
|
|
1599
|
+
onEventReloadSceneDelegate=(() => new T)();
|
|
1600
|
+
reconnectTimer=null;
|
|
1601
|
+
pendingShowOptions=[];
|
|
1602
|
+
scheduleReconnect() {
|
|
1603
|
+
let e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 2e3;
|
|
1604
|
+
if (this.reconnectTimer) {
|
|
1605
|
+
clearTimeout(this.reconnectTimer);
|
|
1606
|
+
this.reconnectTimer = null;
|
|
1607
|
+
}
|
|
1608
|
+
this.reconnectTimer = X(() => {
|
|
1609
|
+
this.reconnectTimer = null;
|
|
1610
|
+
this.triggerReconnectAll();
|
|
1611
|
+
}, e);
|
|
1612
|
+
}
|
|
1613
|
+
get activeClients() {
|
|
1614
|
+
var e, t;
|
|
1615
|
+
return $(e = Z(t = Y(this.managedClients)).call(t, e => {
|
|
1616
|
+
let [t, i] = e;
|
|
1617
|
+
return i;
|
|
1618
|
+
})).call(e, e => e.socket);
|
|
1619
|
+
}
|
|
1620
|
+
constructor(e) {
|
|
1621
|
+
super(e);
|
|
1622
|
+
this.initGlobalListeners();
|
|
1623
|
+
}
|
|
1624
|
+
createWebSocket(e, t, i, n) {
|
|
1625
|
+
if (this.managedClients.has(e)) {
|
|
1626
|
+
const t = this.managedClients.get(e);
|
|
1627
|
+
t.destroy();
|
|
1628
|
+
a(`清理旧的 ${e} 客户端`);
|
|
1629
|
+
}
|
|
1630
|
+
const o = new WrapperSocialGameClient(e, i, n, j({
|
|
1631
|
+
reconnectMaxAttempts: Infinity
|
|
1632
|
+
}, {
|
|
1633
|
+
isAutoConnect: false,
|
|
1634
|
+
isArrayBuffer: oe,
|
|
1635
|
+
...t
|
|
1636
|
+
}));
|
|
1637
|
+
this.register(o);
|
|
1638
|
+
return o;
|
|
1639
|
+
}
|
|
1640
|
+
register(e) {
|
|
1641
|
+
e.on("reconnected", this.handleSingleReconnect);
|
|
1642
|
+
e.on("close", this.handleSingleClose);
|
|
1643
|
+
e.on("kick", this.handleSingleKick);
|
|
1644
|
+
this.managedClients.set(e.name, e);
|
|
1645
|
+
}
|
|
1646
|
+
unregister(e) {
|
|
1647
|
+
e.off("reconnected", this.handleSingleReconnect);
|
|
1648
|
+
e.off("close", this.handleSingleClose);
|
|
1649
|
+
e.off("kick", this.handleSingleKick);
|
|
1650
|
+
this.managedClients.delete(e.name);
|
|
1651
|
+
}
|
|
1652
|
+
initGlobalListeners() {
|
|
1653
|
+
this.cat.event.on(je.ONLINE, () => this.handleGlobalStateChange("online"), this).on(je.OFFLINE, () => this.handleGlobalStateChange("offline"), this);
|
|
1654
|
+
if (oe) {
|
|
1655
|
+
wx.onShow(e => {
|
|
1656
|
+
this.handleGlobalStateChange("show", e);
|
|
1657
|
+
});
|
|
1658
|
+
wx.onHide(e => {
|
|
1659
|
+
this.handleGlobalStateChange("hide", e);
|
|
1660
|
+
});
|
|
1661
|
+
} else {
|
|
1662
|
+
g.on(w.EVENT_SHOW, () => this.handleGlobalStateChange("show"));
|
|
1663
|
+
g.on(w.EVENT_HIDE, () => this.handleGlobalStateChange("hide"));
|
|
1664
|
+
}
|
|
1665
|
+
}
|
|
1666
|
+
async handleGlobalStateChange(e, t) {
|
|
1667
|
+
switch (e) {
|
|
1668
|
+
case "online":
|
|
1669
|
+
this.cat.gui.hideLoading().showToast({
|
|
1670
|
+
title: et.ONLINE
|
|
1671
|
+
});
|
|
1672
|
+
this.isGlobalOnline = true;
|
|
1673
|
+
this.safeTriggerReconnectAll();
|
|
1674
|
+
break;
|
|
1675
|
+
|
|
1676
|
+
case "offline":
|
|
1677
|
+
this.isGlobalOnline = false;
|
|
1678
|
+
this.disconnectAll(true);
|
|
1679
|
+
this.cat.gui.showLoading({
|
|
1680
|
+
title: et.OFFLINE
|
|
1681
|
+
});
|
|
1682
|
+
break;
|
|
1683
|
+
|
|
1684
|
+
case "show":
|
|
1685
|
+
this.isInBackground = false;
|
|
1686
|
+
a("监听前台 show", t);
|
|
1687
|
+
if (t) this.pendingShowOptions.push(t);
|
|
1688
|
+
await this.safeTriggerReconnectAll();
|
|
1689
|
+
break;
|
|
1690
|
+
|
|
1691
|
+
case "hide":
|
|
1692
|
+
a("监听前台 hide");
|
|
1693
|
+
await this.onEventHideDelegate.dispatch(t);
|
|
1694
|
+
this.isInBackground = true;
|
|
1695
|
+
this.disconnectAll(true);
|
|
1696
|
+
break;
|
|
1697
|
+
}
|
|
1698
|
+
}
|
|
1699
|
+
async safeTriggerReconnectAll() {
|
|
1700
|
+
ee();
|
|
1701
|
+
if (this.reconnecting || !this.isGlobalOnline || this.isInBackground || this.managedClients.size === 0) {
|
|
1702
|
+
console.log("[safeTriggerReconnectAll] 没有需要重连的客户端,直接 dispatch");
|
|
1703
|
+
await this.dispatchReloadAndShow();
|
|
1704
|
+
return;
|
|
1705
|
+
}
|
|
1706
|
+
if (this.reconnecting) {
|
|
1707
|
+
console.log("[safeTriggerReconnectAll] 正在重连中,跳过本次");
|
|
1708
|
+
return;
|
|
1709
|
+
}
|
|
1710
|
+
await this.triggerReconnectAll();
|
|
1711
|
+
}
|
|
1712
|
+
async dispatchReloadAndShow() {
|
|
1713
|
+
await this.onEventReloadSceneDelegate.dispatch();
|
|
1714
|
+
while (this.pendingShowOptions.length > 0) {
|
|
1715
|
+
const e = this.pendingShowOptions.shift();
|
|
1716
|
+
this.onEventShowDelegate.dispatch(e);
|
|
1717
|
+
}
|
|
1718
|
+
}
|
|
1719
|
+
async triggerReconnectAll() {
|
|
1720
|
+
console.log("触发所有客户端重连[正在重连][在线][后台][ws数量]", this.reconnecting, this.isGlobalOnline, this.isInBackground, this.managedClients.size);
|
|
1721
|
+
if (this.reconnecting || !this.isGlobalOnline || this.isInBackground || this.managedClients.size === 0) {
|
|
1722
|
+
await this.dispatchReloadAndShow();
|
|
1723
|
+
return;
|
|
1724
|
+
}
|
|
1725
|
+
this.reconnecting = true;
|
|
1726
|
+
this.cat.gui.showLoading({
|
|
1727
|
+
title: "正在重连"
|
|
1728
|
+
});
|
|
1729
|
+
try {
|
|
1730
|
+
var e, t;
|
|
1731
|
+
await F.allSettled(Z(e = this.activeClients).call(e, async e => {
|
|
1732
|
+
try {
|
|
1733
|
+
await e.reconnectPromise();
|
|
1734
|
+
} catch (t) {
|
|
1735
|
+
o(`${e.name}服重连失败`, t);
|
|
1736
|
+
}
|
|
1737
|
+
}));
|
|
1738
|
+
const i = $(t = this.activeClients).call(t, e => e.socketConnectStatus !== ie.CONNECTED);
|
|
1739
|
+
if (i.length > 0) {
|
|
1740
|
+
Z(i).call(i, e => {
|
|
1741
|
+
console.error("部分WS重连失败:", e);
|
|
1742
|
+
});
|
|
1743
|
+
a("2s后重连所有客户端");
|
|
1744
|
+
this.reconnecting = false;
|
|
1745
|
+
this.scheduleReconnect();
|
|
1746
|
+
} else {
|
|
1747
|
+
this.reconnecting = false;
|
|
1748
|
+
}
|
|
1749
|
+
} catch (e) {
|
|
1750
|
+
this.reconnecting = false;
|
|
1751
|
+
throw e;
|
|
1752
|
+
}
|
|
1753
|
+
}
|
|
1754
|
+
disconnectAll(e) {
|
|
1755
|
+
var t, i;
|
|
1756
|
+
if (te(t = this.activeClients).call(t, e => e.socket?.readyState !== WebSocket.OPEN)) return;
|
|
1757
|
+
H(i = this.managedClients).call(i, t => {
|
|
1758
|
+
a("断开连接", t.name, e, t.socket);
|
|
1759
|
+
t.disconnect(e);
|
|
1760
|
+
});
|
|
1761
|
+
}
|
|
1762
|
+
handleSingleClose=() => {
|
|
1763
|
+
if (!this.reconnecting) {
|
|
1764
|
+
a("3s后重连所有客户端");
|
|
1765
|
+
this.scheduleReconnect(3e3);
|
|
1766
|
+
}
|
|
1767
|
+
};
|
|
1768
|
+
handleSingleReconnect=async () => {
|
|
1769
|
+
var e;
|
|
1770
|
+
if (te(e = this.activeClients).call(e, e => e.socketConnectStatus === ie.CONNECTED)) {
|
|
1771
|
+
var t;
|
|
1772
|
+
a("单个WS重连成功回调===", this.managedClients);
|
|
1773
|
+
await F.allSettled(Z(t = this.activeClients).call(t, async e => {
|
|
1774
|
+
try {
|
|
1775
|
+
await e.connectRequest();
|
|
1776
|
+
} catch (t) {
|
|
1777
|
+
o(`${e.name}服登录错误`, t);
|
|
1778
|
+
this.cat.gui.showToast({
|
|
1779
|
+
title: `登录${e.name}服错误`
|
|
1780
|
+
});
|
|
1781
|
+
}
|
|
1782
|
+
}));
|
|
1783
|
+
if (this.reconnectTimer) {
|
|
1784
|
+
clearTimeout(this.reconnectTimer);
|
|
1785
|
+
this.reconnectTimer = null;
|
|
1786
|
+
}
|
|
1787
|
+
await this.onEventReloadSceneDelegate.dispatch();
|
|
1788
|
+
this.cat.gui.hideLoading();
|
|
1789
|
+
if (r.getScene()?.getComponentInChildren(SceneLayer)?.isReload) this.cat.gui.reloadScene(() => {
|
|
1790
|
+
while (this.pendingShowOptions.length > 0) {
|
|
1791
|
+
const e = this.pendingShowOptions.shift();
|
|
1792
|
+
this.onEventShowDelegate.dispatch(e);
|
|
1793
|
+
}
|
|
1794
|
+
});
|
|
1795
|
+
}
|
|
1796
|
+
};
|
|
1797
|
+
handleSingleKick=() => {
|
|
1798
|
+
this.cat.gui.showNotice({
|
|
1799
|
+
text: et.KICK
|
|
1800
|
+
});
|
|
1801
|
+
};
|
|
1802
|
+
}
|
|
1803
|
+
|
|
1804
|
+
class ResLoader {
|
|
1805
|
+
get=(() => function(e, t) {
|
|
1806
|
+
let i = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "resources";
|
|
1807
|
+
var n = I.getBundle(i);
|
|
1808
|
+
return n.get(e, t);
|
|
1809
|
+
})();
|
|
1810
|
+
isAssetType=e => typeof e === "function" && e.prototype instanceof k;
|
|
1811
|
+
async load() {
|
|
1812
|
+
let e = null;
|
|
1813
|
+
let t = null;
|
|
1814
|
+
let i = null;
|
|
1815
|
+
for (var n = arguments.length, o = new Array(n), s = 0; s < n; s++) {
|
|
1816
|
+
o[s] = arguments[s];
|
|
1817
|
+
}
|
|
1818
|
+
if (typeof o[0] === "string" && typeof o[1] === "string") {
|
|
1819
|
+
e = o.shift();
|
|
1820
|
+
}
|
|
1821
|
+
let r = o.shift();
|
|
1822
|
+
if (this.isAssetType(o[0])) {
|
|
1823
|
+
t = o.shift();
|
|
1824
|
+
}
|
|
1825
|
+
if (o.length == 2) {
|
|
1826
|
+
i = o.shift();
|
|
1827
|
+
}
|
|
1828
|
+
const a = o.shift();
|
|
1829
|
+
let l = R;
|
|
1830
|
+
if (e && e != "resources") {
|
|
1831
|
+
if (!I.bundles.has(e)) {
|
|
1832
|
+
await this.loadBundle(e);
|
|
1833
|
+
}
|
|
1834
|
+
let t = I.bundles.get(e);
|
|
1835
|
+
if (t) {
|
|
1836
|
+
l = t;
|
|
1837
|
+
}
|
|
1838
|
+
}
|
|
1839
|
+
if (i && a) {
|
|
1840
|
+
l.load(r, t, i, a);
|
|
1841
|
+
} else if (a) {
|
|
1842
|
+
l.load(r, t, a);
|
|
1843
|
+
} else {
|
|
1844
|
+
l.load(r, t);
|
|
1845
|
+
}
|
|
1846
|
+
}
|
|
1847
|
+
async loadDir() {
|
|
1848
|
+
let e = null;
|
|
1849
|
+
let t = null;
|
|
1850
|
+
let i = null;
|
|
1851
|
+
let n = null;
|
|
1852
|
+
for (var o = arguments.length, s = new Array(o), r = 0; r < o; r++) {
|
|
1853
|
+
s[r] = arguments[r];
|
|
1854
|
+
}
|
|
1855
|
+
if (typeof s[0] === "string" && typeof s[1] === "string") {
|
|
1856
|
+
e = s.shift();
|
|
1857
|
+
}
|
|
1858
|
+
let a = s.shift();
|
|
1859
|
+
if (this.isAssetType(s[0])) {
|
|
1860
|
+
t = s.shift();
|
|
1861
|
+
}
|
|
1862
|
+
if (s.length == 2) {
|
|
1863
|
+
i = s.shift();
|
|
1864
|
+
}
|
|
1865
|
+
n = s.shift();
|
|
1866
|
+
let l = R;
|
|
1867
|
+
if (e && e != "resources") {
|
|
1868
|
+
if (!I.bundles.has(e)) {
|
|
1869
|
+
await this.loadBundle(e);
|
|
1870
|
+
}
|
|
1871
|
+
let t = I.bundles.get(e);
|
|
1872
|
+
if (t) {
|
|
1873
|
+
l = t;
|
|
1874
|
+
}
|
|
1875
|
+
}
|
|
1876
|
+
if (i && n) {
|
|
1877
|
+
l.loadDir(a, t, i, n);
|
|
1878
|
+
} else if (n) {
|
|
1879
|
+
l.loadDir(a, t, n);
|
|
1880
|
+
} else {
|
|
1881
|
+
l.loadDir(a, t);
|
|
1882
|
+
}
|
|
1883
|
+
}
|
|
1884
|
+
loadRemote(e) {
|
|
1885
|
+
var t = null;
|
|
1886
|
+
var i = null;
|
|
1887
|
+
for (var n = arguments.length, o = new Array(n > 1 ? n - 1 : 0), s = 1; s < n; s++) {
|
|
1888
|
+
o[s - 1] = arguments[s];
|
|
1889
|
+
}
|
|
1890
|
+
if (o.length == 2) {
|
|
1891
|
+
t = o.shift();
|
|
1892
|
+
}
|
|
1893
|
+
i = o.shift();
|
|
1894
|
+
I.loadRemote(e, {
|
|
1895
|
+
ext: ".png",
|
|
1896
|
+
...t
|
|
1897
|
+
}, i);
|
|
1898
|
+
}
|
|
1899
|
+
loadBundle=(e, t) => new F((i, n) => {
|
|
1900
|
+
const o = (e, t) => {
|
|
1901
|
+
if (e) {
|
|
1902
|
+
return n(e);
|
|
1903
|
+
}
|
|
1904
|
+
i(t);
|
|
1905
|
+
};
|
|
1906
|
+
t ? I.loadBundle(e, {
|
|
1907
|
+
version: t
|
|
1908
|
+
}, o) : I.loadBundle(e, o);
|
|
1909
|
+
});
|
|
1910
|
+
releasePrefabtDepsRecursively=e => {
|
|
1911
|
+
var t = I.assets.get(e);
|
|
1912
|
+
I.releaseAsset(t);
|
|
1913
|
+
if (t instanceof c) {
|
|
1914
|
+
var i = I.dependUtil.getDepsRecursively(e);
|
|
1915
|
+
H(i).call(i, e => {
|
|
1916
|
+
var t = I.assets.get(e);
|
|
1917
|
+
t.decRef();
|
|
1918
|
+
});
|
|
1919
|
+
}
|
|
1920
|
+
};
|
|
1921
|
+
release=(() => {
|
|
1922
|
+
var e = this;
|
|
1923
|
+
return function(t) {
|
|
1924
|
+
let i = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "resources";
|
|
1925
|
+
var n = I.getBundle(i);
|
|
1926
|
+
if (n) {
|
|
1927
|
+
var o = n.get(t);
|
|
1928
|
+
if (o) {
|
|
1929
|
+
e.releasePrefabtDepsRecursively(o._uuid);
|
|
1930
|
+
}
|
|
1931
|
+
}
|
|
1932
|
+
};
|
|
1933
|
+
})();
|
|
1934
|
+
releaseDir=(() => {
|
|
1935
|
+
var e = this;
|
|
1936
|
+
return function(t) {
|
|
1937
|
+
var i, n;
|
|
1938
|
+
let o = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "resources";
|
|
1939
|
+
var s = I.getBundle(o);
|
|
1940
|
+
var r = s?.getDirWithPath(t);
|
|
1941
|
+
((i = r) == null ? void 0 : V(n = Function.call).call(n, Z(i), i))?.(t => {
|
|
1942
|
+
e.releasePrefabtDepsRecursively(t.uuid);
|
|
1943
|
+
});
|
|
1944
|
+
if (!t && o != "resources" && s) {
|
|
1945
|
+
I.removeBundle(s);
|
|
1946
|
+
}
|
|
1947
|
+
};
|
|
1948
|
+
})();
|
|
1949
|
+
dump=() => {
|
|
1950
|
+
var e;
|
|
1951
|
+
H(e = I.assets).call(e, (e, t) => {
|
|
1952
|
+
a(I.assets.get(t));
|
|
1953
|
+
});
|
|
1954
|
+
a(`当前资源总数:${I.assets.count}`);
|
|
1955
|
+
};
|
|
1956
|
+
loadAssetsWithProgress(e, t) {
|
|
1957
|
+
return new F((i, n) => {
|
|
1958
|
+
const o = e.getDirWithPath("");
|
|
1959
|
+
const s = o.length;
|
|
1960
|
+
let r = 0;
|
|
1961
|
+
if (s === 0) {
|
|
1962
|
+
t(1);
|
|
1963
|
+
i();
|
|
1964
|
+
return;
|
|
1965
|
+
}
|
|
1966
|
+
H(o).call(o, o => {
|
|
1967
|
+
e.load(o.path, e => {
|
|
1968
|
+
if (e) {
|
|
1969
|
+
n(e);
|
|
1970
|
+
return;
|
|
1971
|
+
}
|
|
1972
|
+
r++;
|
|
1973
|
+
t(r / s);
|
|
1974
|
+
if (r === s) {
|
|
1975
|
+
i();
|
|
1976
|
+
}
|
|
1977
|
+
});
|
|
1978
|
+
});
|
|
1979
|
+
});
|
|
1980
|
+
}
|
|
1981
|
+
}
|
|
1982
|
+
|
|
1983
|
+
class BaseStore {
|
|
1984
|
+
rootStore;
|
|
1985
|
+
constructor(e) {
|
|
1986
|
+
this.rootStore = e;
|
|
1987
|
+
}
|
|
1988
|
+
}
|
|
1989
|
+
|
|
1990
|
+
class CoreStore extends BaseManager {}
|
|
1991
|
+
|
|
1992
|
+
let kt = null;
|
|
1993
|
+
|
|
1994
|
+
const Rt = e => ae.MD5(e).toString();
|
|
1995
|
+
|
|
1996
|
+
const Mt = (e, t) => {
|
|
1997
|
+
kt = ae.enc.Hex.parse(t);
|
|
1998
|
+
};
|
|
1999
|
+
|
|
2000
|
+
const Ut = (e, t, i) => ae.AES.encrypt(e, t, {
|
|
2001
|
+
iv: kt,
|
|
2002
|
+
format: Dt
|
|
2003
|
+
}).toString();
|
|
2004
|
+
|
|
2005
|
+
const Nt = (e, t, i) => {
|
|
2006
|
+
const n = ae.AES.decrypt(e, t, {
|
|
2007
|
+
iv: kt,
|
|
2008
|
+
format: Dt
|
|
2009
|
+
});
|
|
2010
|
+
return n.toString(ae.enc.Utf8);
|
|
2011
|
+
};
|
|
2012
|
+
|
|
2013
|
+
const Dt = {
|
|
2014
|
+
stringify: e => {
|
|
2015
|
+
const t = {
|
|
2016
|
+
ct: e.ciphertext.toString(ae.enc.Base64)
|
|
2017
|
+
};
|
|
2018
|
+
if (e.iv) {
|
|
2019
|
+
t.iv = e.iv.toString();
|
|
2020
|
+
}
|
|
2021
|
+
if (e.salt) {
|
|
2022
|
+
t.s = e.salt.toString();
|
|
2023
|
+
}
|
|
2024
|
+
return P(t);
|
|
2025
|
+
},
|
|
2026
|
+
parse: e => {
|
|
2027
|
+
const t = JSON.parse(e);
|
|
2028
|
+
const i = ae.lib.CipherParams.create({
|
|
2029
|
+
ciphertext: ae.enc.Base64.parse(t.ct)
|
|
2030
|
+
});
|
|
2031
|
+
if (t.iv) {
|
|
2032
|
+
i.iv = ae.enc.Hex.parse(t.iv);
|
|
2033
|
+
}
|
|
2034
|
+
if (t.s) {
|
|
2035
|
+
i.salt = ae.enc.Hex.parse(t.s);
|
|
2036
|
+
}
|
|
2037
|
+
return i;
|
|
2038
|
+
}
|
|
2039
|
+
};
|
|
2040
|
+
|
|
2041
|
+
var xt = Object.freeze({
|
|
2042
|
+
__proto__: null,
|
|
2043
|
+
JsonFormatter: Dt,
|
|
2044
|
+
aesDecrypt: Nt,
|
|
2045
|
+
aesEncrypt: Ut,
|
|
2046
|
+
initCrypto: Mt,
|
|
2047
|
+
md5: Rt
|
|
2048
|
+
});
|
|
2049
|
+
|
|
2050
|
+
class CoreUtil extends BaseManager {
|
|
2051
|
+
encryptUtil=(() => xt)();
|
|
2052
|
+
}
|
|
2053
|
+
|
|
2054
|
+
class StorageManager extends BaseManager {
|
|
2055
|
+
_key=null;
|
|
2056
|
+
_iv=null;
|
|
2057
|
+
_id="";
|
|
2058
|
+
init(e, t) {
|
|
2059
|
+
this.cat.util.encryptUtil.initCrypto(e, t);
|
|
2060
|
+
this._key = this.cat.util.encryptUtil.md5(e);
|
|
2061
|
+
this._iv = this.cat.util.encryptUtil.md5(t);
|
|
2062
|
+
}
|
|
2063
|
+
setUser(e) {
|
|
2064
|
+
this._id = e;
|
|
2065
|
+
}
|
|
2066
|
+
set(e, t) {
|
|
2067
|
+
e = `${e}_${this._id}`;
|
|
2068
|
+
if (null == e) {
|
|
2069
|
+
console.error("存储的key不能为空");
|
|
2070
|
+
return;
|
|
2071
|
+
}
|
|
2072
|
+
if (!se) {
|
|
2073
|
+
e = this.cat.util.encryptUtil.md5(e);
|
|
2074
|
+
}
|
|
2075
|
+
if (null == t) {
|
|
2076
|
+
console.warn("存储的值为空,则直接移除该存储");
|
|
2077
|
+
this.remove(e);
|
|
2078
|
+
return;
|
|
2079
|
+
}
|
|
2080
|
+
if (typeof t === "function") {
|
|
2081
|
+
console.error("储存的值不能为方法");
|
|
2082
|
+
return;
|
|
2083
|
+
}
|
|
2084
|
+
if (typeof t === "object") {
|
|
2085
|
+
try {
|
|
2086
|
+
t = P(t);
|
|
2087
|
+
} catch (e) {
|
|
2088
|
+
console.error(`解析失败,str = ${t}`);
|
|
2089
|
+
return;
|
|
2090
|
+
}
|
|
2091
|
+
} else if (typeof t === "number") {
|
|
2092
|
+
t = t + "";
|
|
2093
|
+
}
|
|
2094
|
+
if (!se && null != this._key && null != this._iv) {
|
|
2095
|
+
t = this.cat.util.encryptUtil.aesEncrypt(`${t}`, this._key, this._iv);
|
|
2096
|
+
}
|
|
2097
|
+
M.localStorage.setItem(e, t);
|
|
2098
|
+
}
|
|
2099
|
+
get(e, t) {
|
|
2100
|
+
if (null == e) {
|
|
2101
|
+
console.error("存储的key不能为空");
|
|
2102
|
+
return null;
|
|
2103
|
+
}
|
|
2104
|
+
e = `${e}_${this._id}`;
|
|
2105
|
+
if (!se) {
|
|
2106
|
+
e = this.cat.util.encryptUtil.md5(e);
|
|
2107
|
+
}
|
|
2108
|
+
let i = M.localStorage.getItem(e);
|
|
2109
|
+
if (null != i && "" !== i && !se && null != this._key && null != this._iv) {
|
|
2110
|
+
i = this.cat.util.encryptUtil.aesDecrypt(i, this._key, this._iv);
|
|
2111
|
+
}
|
|
2112
|
+
if (null === i) {
|
|
2113
|
+
return t;
|
|
2114
|
+
}
|
|
2115
|
+
return i;
|
|
2116
|
+
}
|
|
2117
|
+
getNumber(e) {
|
|
2118
|
+
let t = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
|
|
2119
|
+
var i = this.get(e);
|
|
2120
|
+
return Number(i) || t;
|
|
2121
|
+
}
|
|
2122
|
+
getBoolean(e) {
|
|
2123
|
+
var t = this.get(e);
|
|
2124
|
+
return Boolean(t) || false;
|
|
2125
|
+
}
|
|
2126
|
+
getJson(e, t) {
|
|
2127
|
+
var i = this.get(e);
|
|
2128
|
+
return i && JSON.parse(i) || t;
|
|
2129
|
+
}
|
|
2130
|
+
remove(e) {
|
|
2131
|
+
if (null == e) {
|
|
2132
|
+
console.error("存储的key不能为空");
|
|
2133
|
+
return;
|
|
2134
|
+
}
|
|
2135
|
+
e = `${e}_${this._id}`;
|
|
2136
|
+
if (!se) {
|
|
2137
|
+
e = this.cat.util.encryptUtil.md5(e);
|
|
2138
|
+
}
|
|
2139
|
+
M.localStorage.removeItem(e);
|
|
2140
|
+
}
|
|
2141
|
+
clear() {
|
|
2142
|
+
M.localStorage.clear();
|
|
2143
|
+
}
|
|
2144
|
+
}
|
|
2145
|
+
|
|
2146
|
+
class Manager {
|
|
2147
|
+
static #t=null;
|
|
2148
|
+
#i=false;
|
|
2149
|
+
static get instance() {
|
|
2150
|
+
return this.#t ?? (this.#t = new Manager);
|
|
2151
|
+
}
|
|
2152
|
+
onAppInitDelegate=(() => new T)();
|
|
2153
|
+
onPlugInInitDelegate=(() => new T)();
|
|
2154
|
+
#n=null;
|
|
2155
|
+
get audio() {
|
|
2156
|
+
return this.#n;
|
|
2157
|
+
}
|
|
2158
|
+
#o=null;
|
|
2159
|
+
get event() {
|
|
2160
|
+
return this.#o;
|
|
2161
|
+
}
|
|
2162
|
+
#s=null;
|
|
2163
|
+
get gui() {
|
|
2164
|
+
return this.#s;
|
|
2165
|
+
}
|
|
2166
|
+
#r=null;
|
|
2167
|
+
get storage() {
|
|
2168
|
+
return this.#r;
|
|
2169
|
+
}
|
|
2170
|
+
#a=null;
|
|
2171
|
+
get res() {
|
|
2172
|
+
return this.#a;
|
|
2173
|
+
}
|
|
2174
|
+
#l=null;
|
|
2175
|
+
get util() {
|
|
2176
|
+
return this.#l;
|
|
2177
|
+
}
|
|
2178
|
+
#c=null;
|
|
2179
|
+
get socialGameClient() {
|
|
2180
|
+
return this.#c;
|
|
2181
|
+
}
|
|
2182
|
+
#h=null;
|
|
2183
|
+
get store() {
|
|
2184
|
+
return this.#h;
|
|
2185
|
+
}
|
|
2186
|
+
#u="";
|
|
2187
|
+
get gui_bundle_name() {
|
|
2188
|
+
return this.#u;
|
|
2189
|
+
}
|
|
2190
|
+
#d="";
|
|
2191
|
+
get audio_local_store_key() {
|
|
2192
|
+
return this.#d;
|
|
2193
|
+
}
|
|
2194
|
+
#p="";
|
|
2195
|
+
get default_audio_effect() {
|
|
2196
|
+
return this.#p;
|
|
2197
|
+
}
|
|
2198
|
+
setConfig=(() => {
|
|
2199
|
+
var e = this;
|
|
2200
|
+
return function() {
|
|
2201
|
+
let {default_audio_effect: t = "", gui_bundleName: i = "resources", audio_local_store_key: n = "game_audio"} = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
2202
|
+
if (e.#i) {
|
|
2203
|
+
throw new Error("[CAT] 已初始化,无法修改配置");
|
|
2204
|
+
}
|
|
2205
|
+
e.#u = i;
|
|
2206
|
+
e.#d = n;
|
|
2207
|
+
e.#p = t;
|
|
2208
|
+
return e;
|
|
2209
|
+
};
|
|
2210
|
+
})();
|
|
2211
|
+
async boot() {
|
|
2212
|
+
if (this.#i) {
|
|
2213
|
+
throw new Error("[CAT] 已初始化");
|
|
2214
|
+
}
|
|
2215
|
+
try {
|
|
2216
|
+
this.#h = new CoreStore(this);
|
|
2217
|
+
this.#a = new ResLoader;
|
|
2218
|
+
this.#l = new CoreUtil(this);
|
|
2219
|
+
this.#r = new StorageManager(this);
|
|
2220
|
+
this.#o = new L;
|
|
2221
|
+
this.#n = new AudioManager(this);
|
|
2222
|
+
this.#c = new SocialGameClientManager(this);
|
|
2223
|
+
this.#s = (await new GuiManager(this).init()).gui;
|
|
2224
|
+
this.#i = true;
|
|
2225
|
+
} catch (e) {
|
|
2226
|
+
console.error(`[CAT] 初始化失败:`, e);
|
|
2227
|
+
throw e;
|
|
2228
|
+
}
|
|
2229
|
+
}
|
|
2230
|
+
merge(e, t) {
|
|
2231
|
+
if (!this.#i) throw new Error("[CAT] 未初始化");
|
|
2232
|
+
if (typeof e !== "string") {
|
|
2233
|
+
throw new Error(`merge方法第一个参数应该为string类型`);
|
|
2234
|
+
}
|
|
2235
|
+
if (!D(this, e)) {
|
|
2236
|
+
x(this, e, t);
|
|
2237
|
+
}
|
|
2238
|
+
j(D(this, e), t);
|
|
2239
|
+
return this;
|
|
2240
|
+
}
|
|
2241
|
+
appendPlugInInitDelegate(e) {
|
|
2242
|
+
if (this.#i) {
|
|
2243
|
+
F.resolve().then(e).catch(e => {
|
|
2244
|
+
console.error("[CAT] appendPlugInInitDelegate 回调执行失败:", e);
|
|
2245
|
+
});
|
|
2246
|
+
} else {
|
|
2247
|
+
this.onPlugInInitDelegate.add(e);
|
|
2248
|
+
}
|
|
2249
|
+
return this;
|
|
2250
|
+
}
|
|
2251
|
+
}
|
|
2252
|
+
|
|
2253
|
+
var jt, Ft, Lt, Bt, Pt, Gt, Ht, $t, Kt;
|
|
2254
|
+
|
|
2255
|
+
const {ccclass: Wt, property: Vt, menu: zt} = i;
|
|
2256
|
+
|
|
2257
|
+
let qt = class CoreUIModal extends UILayer {
|
|
2258
|
+
default_title=null;
|
|
2259
|
+
title;
|
|
2260
|
+
prompt_content_str;
|
|
2261
|
+
prompt_content_spriteFrame;
|
|
2262
|
+
btn_confirm;
|
|
2263
|
+
confirm_spriteFrame;
|
|
2264
|
+
btn_cancel;
|
|
2265
|
+
cancel_spriteFrame;
|
|
2266
|
+
btn_close;
|
|
2267
|
+
isConfirm=false;
|
|
2268
|
+
props={
|
|
2269
|
+
title: this.default_title,
|
|
2270
|
+
content: null,
|
|
2271
|
+
confirmCB: () => {},
|
|
2272
|
+
cancelCB: () => {},
|
|
2273
|
+
style: null
|
|
2274
|
+
};
|
|
2275
|
+
onLoad() {
|
|
2276
|
+
this.btn_cancel.node.on(S.EventType.CLICK, this.onCancelHandler, this);
|
|
2277
|
+
this.btn_confirm.node.on(S.EventType.CLICK, this.onConfirmHandler, this);
|
|
2278
|
+
this.btn_close.node.on(S.EventType.CLICK, this.onCloseHandler, this);
|
|
2279
|
+
this.addAutorun([ () => {
|
|
2280
|
+
this.title.spriteFrame = this.props?.title || this.default_title;
|
|
2281
|
+
}, () => {
|
|
2282
|
+
if (this.props.content) {
|
|
2283
|
+
if (this.props.content instanceof U) {
|
|
2284
|
+
this.prompt_content_spriteFrame.spriteFrame = this.props.content;
|
|
2285
|
+
} else if (typeof this.props.content === "string") {
|
|
2286
|
+
this.prompt_content_str.string = this.props.content;
|
|
2287
|
+
} else {
|
|
2288
|
+
console.error("未知类型的【UIModal】内容");
|
|
2289
|
+
}
|
|
2290
|
+
}
|
|
2291
|
+
}, () => {
|
|
2292
|
+
if (this.props?.style?.confirm === null) {
|
|
2293
|
+
this.btn_confirm.node.active = false;
|
|
2294
|
+
} else {
|
|
2295
|
+
this.btn_confirm.node.active = true;
|
|
2296
|
+
this.btn_confirm.getComponent(N).spriteFrame = this.props.style?.confirm || this.confirm_spriteFrame;
|
|
2297
|
+
}
|
|
2298
|
+
if (this.props?.style?.cancel === null) {
|
|
2299
|
+
this.btn_cancel.node.active = false;
|
|
2300
|
+
} else {
|
|
2301
|
+
this.btn_cancel.node.active = true;
|
|
2302
|
+
this.btn_cancel.getComponent(N).spriteFrame = this.props.style?.cancel || this.cancel_spriteFrame;
|
|
2303
|
+
}
|
|
2304
|
+
} ]);
|
|
2305
|
+
}
|
|
2306
|
+
close() {
|
|
2307
|
+
this.props.cancelCB?.();
|
|
2308
|
+
this.cat.gui.closeUI(this);
|
|
2309
|
+
}
|
|
2310
|
+
onCancelHandler() {
|
|
2311
|
+
this.close();
|
|
2312
|
+
}
|
|
2313
|
+
onConfirmHandler() {
|
|
2314
|
+
this.props.confirmCB?.();
|
|
2315
|
+
}
|
|
2316
|
+
onDestroy() {
|
|
2317
|
+
if (this.isConfirm) this.props.onDestroy?.();
|
|
2318
|
+
}
|
|
2319
|
+
onCloseHandler() {
|
|
2320
|
+
this.close();
|
|
2321
|
+
}
|
|
2322
|
+
};
|
|
2323
|
+
|
|
2324
|
+
ye([ Vt({
|
|
2325
|
+
type: U,
|
|
2326
|
+
tooltip: "默认标题"
|
|
2327
|
+
}), ge("design:type", typeof (jt = typeof U !== "undefined" && U) === "function" ? jt : Object) ], qt.prototype, "default_title", void 0);
|
|
2328
|
+
|
|
2329
|
+
ye([ Vt({
|
|
2330
|
+
type: N,
|
|
2331
|
+
tooltip: "标题节点"
|
|
2332
|
+
}), ge("design:type", typeof (Ft = typeof N !== "undefined" && N) === "function" ? Ft : Object) ], qt.prototype, "title", void 0);
|
|
2333
|
+
|
|
2334
|
+
ye([ Vt({
|
|
2335
|
+
type: b,
|
|
2336
|
+
tooltip: "字符串内容按钮"
|
|
2337
|
+
}), ge("design:type", typeof (Lt = typeof b !== "undefined" && b) === "function" ? Lt : Object) ], qt.prototype, "prompt_content_str", void 0);
|
|
2338
|
+
|
|
2339
|
+
ye([ Vt({
|
|
2340
|
+
type: N,
|
|
2341
|
+
tooltip: "图片精灵内容按钮"
|
|
2342
|
+
}), ge("design:type", typeof (Bt = typeof N !== "undefined" && N) === "function" ? Bt : Object) ], qt.prototype, "prompt_content_spriteFrame", void 0);
|
|
2343
|
+
|
|
2344
|
+
ye([ Vt({
|
|
2345
|
+
type: S,
|
|
2346
|
+
tooltip: "确认按钮"
|
|
2347
|
+
}), ge("design:type", typeof (Pt = typeof S !== "undefined" && S) === "function" ? Pt : Object) ], qt.prototype, "btn_confirm", void 0);
|
|
2348
|
+
|
|
2349
|
+
ye([ Vt({
|
|
2350
|
+
type: U,
|
|
2351
|
+
tooltip: "确认按钮精灵图"
|
|
2352
|
+
}), ge("design:type", typeof (Gt = typeof U !== "undefined" && U) === "function" ? Gt : Object) ], qt.prototype, "confirm_spriteFrame", void 0);
|
|
2353
|
+
|
|
2354
|
+
ye([ Vt({
|
|
2355
|
+
type: S,
|
|
2356
|
+
tooltip: "取消按钮"
|
|
2357
|
+
}), ge("design:type", typeof (Ht = typeof S !== "undefined" && S) === "function" ? Ht : Object) ], qt.prototype, "btn_cancel", void 0);
|
|
2358
|
+
|
|
2359
|
+
ye([ Vt({
|
|
2360
|
+
type: U,
|
|
2361
|
+
tooltip: "取消按钮精灵图"
|
|
2362
|
+
}), ge("design:type", typeof ($t = typeof U !== "undefined" && U) === "function" ? $t : Object) ], qt.prototype, "cancel_spriteFrame", void 0);
|
|
2363
|
+
|
|
2364
|
+
ye([ Vt({
|
|
2365
|
+
type: S,
|
|
2366
|
+
tooltip: "关闭按钮"
|
|
2367
|
+
}), ge("design:type", typeof (Kt = typeof S !== "undefined" && S) === "function" ? Kt : Object) ], qt.prototype, "btn_close", void 0);
|
|
2368
|
+
|
|
2369
|
+
qt = ye([ Wt("CoreUIModal"), zt("CATCORE/CoreUIModal") ], qt);
|
|
2370
|
+
|
|
2371
|
+
var Qt;
|
|
2372
|
+
|
|
2373
|
+
(function(e) {
|
|
2374
|
+
e[e["Delay"] = 0] = "Delay";
|
|
2375
|
+
e[e["Interval"] = 1] = "Interval";
|
|
2376
|
+
})(Qt || (Qt = {}));
|
|
2377
|
+
|
|
2378
|
+
class TimerEntry {
|
|
2379
|
+
tag;
|
|
2380
|
+
type;
|
|
2381
|
+
callback;
|
|
2382
|
+
remainingTime;
|
|
2383
|
+
executionTime=0;
|
|
2384
|
+
initialTime;
|
|
2385
|
+
constructor(e, t, i, n) {
|
|
2386
|
+
this.tag = e;
|
|
2387
|
+
this.type = t;
|
|
2388
|
+
this.remainingTime = i;
|
|
2389
|
+
this.initialTime = i;
|
|
2390
|
+
this.callback = n;
|
|
2391
|
+
}
|
|
2392
|
+
}
|
|
2393
|
+
|
|
2394
|
+
class TimerManager extends BaseManager {
|
|
2395
|
+
timers=(() => new G)();
|
|
2396
|
+
lastUpdateTime=(() => ee())();
|
|
2397
|
+
constructor(e) {
|
|
2398
|
+
var t;
|
|
2399
|
+
super(e);
|
|
2400
|
+
e.event.on(je.EVENT_HIDE, this.onHandleAppBackground, this);
|
|
2401
|
+
e.event.on(je.EVENT_SHOW, this.onHandleAppForeground, this);
|
|
2402
|
+
le(V(t = this.update).call(t, this), 1e3);
|
|
2403
|
+
}
|
|
2404
|
+
onHandleAppBackground() {
|
|
2405
|
+
this.lastUpdateTime = ee();
|
|
2406
|
+
}
|
|
2407
|
+
onHandleAppForeground() {
|
|
2408
|
+
const e = ee();
|
|
2409
|
+
const t = e - this.lastUpdateTime;
|
|
2410
|
+
a("elapsedTime", t);
|
|
2411
|
+
for (const e of ce(i = this.timers).call(i)) {
|
|
2412
|
+
var i;
|
|
2413
|
+
if (e.remainingTime > 0) {
|
|
2414
|
+
e.remainingTime -= t;
|
|
2415
|
+
e.executionTime += t;
|
|
2416
|
+
}
|
|
2417
|
+
}
|
|
2418
|
+
this.lastUpdateTime = e;
|
|
2419
|
+
}
|
|
2420
|
+
registerInterval(e, t, i) {
|
|
2421
|
+
if (this.has(e)) {
|
|
2422
|
+
return o(`${e}定时器已存在,请勿重复注册`);
|
|
2423
|
+
}
|
|
2424
|
+
const n = new TimerEntry(e, Qt.Interval, t, i);
|
|
2425
|
+
this.timers.set(e, n);
|
|
2426
|
+
}
|
|
2427
|
+
registerDelay(e, t, i) {
|
|
2428
|
+
if (this.has(e)) {
|
|
2429
|
+
return o(`${e}延时器已存在,请勿重复注册`);
|
|
2430
|
+
}
|
|
2431
|
+
const n = new TimerEntry(e, Qt.Delay, t, i);
|
|
2432
|
+
this.timers.set(e, n);
|
|
2433
|
+
}
|
|
2434
|
+
unregister(e) {
|
|
2435
|
+
if (this.has(e)) {
|
|
2436
|
+
this.timers.delete(e);
|
|
2437
|
+
}
|
|
2438
|
+
}
|
|
2439
|
+
has(e) {
|
|
2440
|
+
return this.timers.has(e);
|
|
2441
|
+
}
|
|
2442
|
+
update() {
|
|
2443
|
+
const e = [];
|
|
2444
|
+
for (const [i, n] of he(t = this.timers).call(t)) {
|
|
2445
|
+
var t;
|
|
2446
|
+
n.remainingTime -= 1e3;
|
|
2447
|
+
if (n.remainingTime <= 0) {
|
|
2448
|
+
if (n.type === Qt.Interval) {
|
|
2449
|
+
n.executionTime += n.initialTime;
|
|
2450
|
+
}
|
|
2451
|
+
n.callback(n.executionTime);
|
|
2452
|
+
if (n.type === Qt.Interval) {
|
|
2453
|
+
n.remainingTime = n.initialTime;
|
|
2454
|
+
} else {
|
|
2455
|
+
e.push(i);
|
|
2456
|
+
}
|
|
2457
|
+
}
|
|
2458
|
+
}
|
|
2459
|
+
for (const t of e) {
|
|
2460
|
+
this.timers.delete(t);
|
|
2461
|
+
}
|
|
2462
|
+
}
|
|
2463
|
+
}
|
|
2464
|
+
|
|
2465
|
+
const Jt = (t, i) => (n, o, s) => {
|
|
2466
|
+
let r = s.value;
|
|
2467
|
+
s.value = function() {
|
|
2468
|
+
const n = t ?? e._cat.default_audio_effect;
|
|
2469
|
+
if (n) {
|
|
2470
|
+
e._cat.audio.playEffect(n);
|
|
2471
|
+
} else {
|
|
2472
|
+
console.warn(`请添加音效路径参数`);
|
|
2473
|
+
}
|
|
2474
|
+
if (i) {
|
|
2475
|
+
i();
|
|
2476
|
+
}
|
|
2477
|
+
for (var o = arguments.length, s = new Array(o), a = 0; a < o; a++) {
|
|
2478
|
+
s[a] = arguments[a];
|
|
2479
|
+
}
|
|
2480
|
+
r.apply(this, s);
|
|
2481
|
+
};
|
|
2482
|
+
return s;
|
|
2483
|
+
};
|
|
2484
|
+
|
|
2485
|
+
const Xt = function() {
|
|
2486
|
+
let e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;
|
|
2487
|
+
let t = arguments.length > 1 ? arguments[1] : undefined;
|
|
2488
|
+
return function(i, n, o) {
|
|
2489
|
+
let s = o.value;
|
|
2490
|
+
let r = false;
|
|
2491
|
+
o.value = function() {
|
|
2492
|
+
if (r) {
|
|
2493
|
+
if (t) {
|
|
2494
|
+
t();
|
|
2495
|
+
}
|
|
2496
|
+
return;
|
|
2497
|
+
}
|
|
2498
|
+
r = true;
|
|
2499
|
+
X(() => {
|
|
2500
|
+
r = false;
|
|
2501
|
+
}, e * 1e3);
|
|
2502
|
+
for (var i = arguments.length, n = new Array(i), o = 0; o < i; o++) {
|
|
2503
|
+
n[o] = arguments[o];
|
|
2504
|
+
}
|
|
2505
|
+
s.apply(this, n);
|
|
2506
|
+
};
|
|
2507
|
+
return o;
|
|
2508
|
+
};
|
|
2509
|
+
};
|
|
2510
|
+
|
|
2511
|
+
const Zt = e._cat ??= Manager.instance;
|
|
2512
|
+
|
|
2513
|
+
g.onPostProjectInitDelegate.add(async () => {
|
|
2514
|
+
console.time("[Init App]");
|
|
2515
|
+
try {
|
|
2516
|
+
await Zt.boot();
|
|
2517
|
+
await Zt.onAppInitDelegate.dispatch();
|
|
2518
|
+
await Zt.onPlugInInitDelegate.dispatch();
|
|
2519
|
+
} catch (e) {
|
|
2520
|
+
o(`[Init App] 初始化失败: ${e instanceof Error ? e.message : String(e)}`);
|
|
2521
|
+
throw e;
|
|
2522
|
+
} finally {
|
|
2523
|
+
console.timeEnd("[Init App]");
|
|
2524
|
+
}
|
|
2525
|
+
});
|
|
2526
|
+
|
|
2527
|
+
export { Jt as AudioEffect, _e as AudioEventConstant, AudioManager, AudioSourceBaseComponent, AudioSourceUILayer, Se as AudioTypeEnum, BaseComponent, BaseManager, Tt as BasePrefab, BaseStore, Xt as ButtonLock, Ge as CoreBlackMask, ft as CoreNotice, at as CoreReconnection, Ye as CoreShowLoading, CoreStore, xe as CoreToast, ze as CoreUIContainer, qt as CoreUIModal, CoreUtil, je as GlobalEventConstant, Ot as Gui, GuiManager, It as LayerType, Manager, et as ReconnectPrompt, RootUILayer, SceneLayer, TimerManager, De as ToastType, UILayer, WrapperSocialGameClient, Zt as cat };
|