@shimotsuki/core 3.1.1 → 3.1.2

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.
@@ -1,2538 +1 @@
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 g, Enum as _, game as y, 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/instance/every";
40
-
41
- import { SocketConnectStatus as te } from "pitayaclient";
42
-
43
- import { DEBUG as ie, WECHAT as ne, PREVIEW as oe } from "cc/env";
44
-
45
- import { SocialGameClient as se } from "sgc";
46
-
47
- import re from "crypto-es";
48
-
49
- import ae from "@babel/runtime-corejs3/core-js-stable/date/now";
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 ge;
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
- })(ge || (ge = {}));
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 ? ge.MUSIC_ON : ge.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 ? ge.EFFECT_ON : ge.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 _e(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 ye(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
- g(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
- g(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(ge.EFFECT_ON, this.onPlayEffectHandler, this).on(ge.EFFECT_OFF, this.onStopEffectHandler, this).on(ge.MUSIC_ON, this.onPlayMusicHandler, this).on(ge.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) && !y._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
- _e([ Ee({
690
- tooltip: `类型:\n EFFECT 音效\n BGM 音乐`,
691
- type: _(Se)
692
- }), ye("design:type", Number) ], AudioSourceBaseComponent.prototype, "type", void 0);
693
-
694
- _e([ Ee({
695
- tooltip: "音源",
696
- type: n
697
- }), ye("design:type", typeof (ve = typeof n !== "undefined" && n) === "function" ? ve : Object) ], AudioSourceBaseComponent.prototype, "clip", void 0);
698
-
699
- _e([ Ee({
700
- tooltip: "循环"
701
- }), ye("design:type", Boolean) ], AudioSourceBaseComponent.prototype, "loop", void 0);
702
-
703
- _e([ Ee({
704
- tooltip: "音量"
705
- }), ye("design:type", Number) ], AudioSourceBaseComponent.prototype, "volume", void 0);
706
-
707
- _e([ Ee({
708
- tooltip: "是否启用自动播放"
709
- }), ye("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(ge.EFFECT_ON, this.onPlayEffectHandler, this).on(ge.EFFECT_OFF, this.onStopEffectHandler, this).on(ge.MUSIC_ON, this.onPlayMusicHandler, this).on(ge.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) && !y._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
- _e([ Ie({
757
- tooltip: `类型:\n EFFECT 音效\n BGM 音乐`,
758
- type: _(Se)
759
- }), ye("design:type", Number) ], AudioSourceUILayer.prototype, "type", void 0);
760
-
761
- _e([ Ie({
762
- tooltip: "音源",
763
- type: n
764
- }), ye("design:type", typeof (we = typeof n !== "undefined" && n) === "function" ? we : Object) ], AudioSourceUILayer.prototype, "clip", void 0);
765
-
766
- _e([ Ie({
767
- tooltip: "循环"
768
- }), ye("design:type", Boolean) ], AudioSourceUILayer.prototype, "loop", void 0);
769
-
770
- _e([ Ie({
771
- tooltip: "音量"
772
- }), ye("design:type", Number) ], AudioSourceUILayer.prototype, "volume", void 0);
773
-
774
- _e([ Ie({
775
- tooltip: "是否启用自动播放"
776
- }), ye("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 = g(s).delay(n).to(o, {
825
- opacity: 0
826
- }).call(() => {
827
- C.stopAllByTarget(e);
828
- this.node.destroy();
829
- t();
830
- });
831
- g(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
- _e([ Ue({
845
- type: s,
846
- tooltip: "固定节点"
847
- }), ye("design:type", typeof (Oe = typeof s !== "undefined" && s) === "function" ? Oe : Object) ], xe.prototype, "fixed_node", void 0);
848
-
849
- _e([ Ue({
850
- type: s,
851
- tooltip: "滑动节点"
852
- }), ye("design:type", typeof (Te = typeof s !== "undefined" && s) === "function" ? Te : Object) ], xe.prototype, "slide_node", void 0);
853
-
854
- _e([ Ue({
855
- type: b,
856
- tooltip: "固定标签节点"
857
- }), ye("design:type", typeof (ke = typeof b !== "undefined" && b) === "function" ? ke : Object) ], xe.prototype, "fixed_label", void 0);
858
-
859
- _e([ Ue({
860
- type: b,
861
- tooltip: "滑动标签节点"
862
- }), ye("design:type", typeof (Re = typeof b !== "undefined" && b) === "function" ? Re : Object) ], xe.prototype, "slide_label", void 0);
863
-
864
- xe = _e([ 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
- _e([ Be({
888
- type: s,
889
- tooltip: "动画节点"
890
- }), ye("design:type", typeof (Fe = typeof s !== "undefined" && s) === "function" ? Fe : Object) ], Ge.prototype, "tween", void 0);
891
-
892
- Ge = _e([ 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
- _e([ We({
955
- type: s
956
- }), ye("design:type", typeof (He = typeof s !== "undefined" && s) === "function" ? He : Object) ], ze.prototype, "scene_mask_node", void 0);
957
-
958
- _e([ We({
959
- type: s
960
- }), ye("design:type", typeof ($e = typeof s !== "undefined" && s) === "function" ? $e : Object) ], ze.prototype, "ui_container", void 0);
961
-
962
- ze = _e([ 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
- _e([ Xe({
1006
- type: b,
1007
- tooltip: "标题"
1008
- }), ye("design:type", typeof (qe = typeof b !== "undefined" && b) === "function" ? qe : Object) ], Ye.prototype, "title", void 0);
1009
-
1010
- _e([ Xe({
1011
- type: s,
1012
- tooltip: "动画"
1013
- }), ye("design:type", typeof (Qe = typeof s !== "undefined" && s) === "function" ? Qe : Object) ], Ye.prototype, "loadingTween", void 0);
1014
-
1015
- Ye = _e([ 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
- _e([ st({
1078
- type: b,
1079
- tooltip: "通用提示文本"
1080
- }), ye("design:type", typeof (tt = typeof b !== "undefined" && b) === "function" ? tt : Object) ], at.prototype, "common_prompt_text", void 0);
1081
-
1082
- _e([ st({
1083
- type: S,
1084
- tooltip: "确定按钮"
1085
- }), ye("design:type", typeof (it = typeof S !== "undefined" && S) === "function" ? it : Object) ], at.prototype, "btn_confirm", void 0);
1086
-
1087
- _e([ st({
1088
- type: S,
1089
- tooltip: "关闭按钮"
1090
- }), ye("design:type", typeof (nt = typeof S !== "undefined" && S) === "function" ? nt : Object) ], at.prototype, "btn_close", void 0);
1091
-
1092
- at = _e([ 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
- _e([ dt({
1123
- type: b,
1124
- tooltip: "提示文本"
1125
- }), ye("design:type", typeof (lt = typeof b !== "undefined" && b) === "function" ? lt : Object) ], ft.prototype, "text", void 0);
1126
-
1127
- _e([ dt({
1128
- type: S,
1129
- tooltip: "确定按钮"
1130
- }), ye("design:type", typeof (ct = typeof S !== "undefined" && S) === "function" ? ct : Object) ], ft.prototype, "btn_confirm", void 0);
1131
-
1132
- _e([ dt({
1133
- type: S,
1134
- tooltip: "关闭按钮"
1135
- }), ye("design:type", typeof (ht = typeof S !== "undefined" && S) === "function" ? ht : Object) ], ft.prototype, "btn_close", void 0);
1136
-
1137
- ft = _e([ ut("CoreNotice"), pt("CATCORE/CoreNotice") ], ft);
1138
-
1139
- class SceneLayer extends BaseComponent {
1140
- isReload;
1141
- }
1142
-
1143
- var mt, gt, _t, yt, 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
- y.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
- _sceneChanging=false;
1330
- loadScene(e, t, i, n) {
1331
- a("[加载场景参数]", e, t, i, n);
1332
- let s;
1333
- let l = true;
1334
- let c;
1335
- const h = [ t, i, n ];
1336
- for (const e of h) {
1337
- if (typeof e === "boolean") l = e; else if (typeof e === "function") c = e; else if (e && typeof e === "object") s = e;
1338
- }
1339
- if (this._sceneChanging) {
1340
- O("scene is changing, ignore");
1341
- return this;
1342
- }
1343
- this._sceneChanging = true;
1344
- r.once(A.EVENT_BEFORE_SCENE_LAUNCH, e => {
1345
- this.changeScene(e, s ?? {}, l);
1346
- });
1347
- r.once(A.EVENT_AFTER_SCENE_LAUNCH, () => {
1348
- this._sceneChanging = false;
1349
- c?.();
1350
- });
1351
- if (typeof e === "string") {
1352
- const t = this.findBundleBySceneUUID(e);
1353
- if (t) {
1354
- if (t.name !== "main") {
1355
- t.loadScene(this.currentScene, (e, t) => {
1356
- if (e) return o("loadScene err", e);
1357
- r.runScene(t);
1358
- });
1359
- } else {
1360
- const i = t.getAssetInfo(e);
1361
- if (i?.url) r.loadScene(i.url);
1362
- }
1363
- } else {
1364
- r.loadScene(e);
1365
- }
1366
- } else {
1367
- r.runScene(e);
1368
- }
1369
- return this;
1370
- }
1371
- resetScene() {
1372
- let e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "";
1373
- e = e || this.currentScene;
1374
- return this.loadScene(e);
1375
- }
1376
- cleanScene() {
1377
- this.resetScene().hideLoading().hideNotice().hideReconnect().hideToast();
1378
- }
1379
- changeScene(e, t, i) {
1380
- this.currentScene = e.name;
1381
- this.currentSceneUUID = e.uuid;
1382
- this.createUILayer(e);
1383
- const n = e.getComponentInChildren(SceneLayer);
1384
- a("给场景传递属性值=======", n);
1385
- if (n) {
1386
- n.isReload = i ?? true;
1387
- }
1388
- n?.setOptions(t);
1389
- }
1390
- createUILayer(e) {
1391
- this.ui_container_component?.removeAndDestroy();
1392
- this.ui_container_component = null;
1393
- if (u(this.node)) {
1394
- const t = h(this.ui_prefab);
1395
- this.ui_container_component = t.getComponent(ze);
1396
- this.ui_container_component?.setGui(this).addToParent(e, this.node.getSiblingIndex());
1397
- }
1398
- }
1399
- reloadScene() {
1400
- let e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : () => {};
1401
- a("重新加载当前场景");
1402
- this.loadScene(this.currentSceneUUID, true, e);
1403
- }
1404
- async closeUI(e, t) {
1405
- const {component: i} = this.findUIBaseLayer(e, false);
1406
- if (i) {
1407
- i.setOptions({
1408
- ...t?.hook ?? {},
1409
- ...t?.props ?? {}
1410
- });
1411
- await i.hideTween(t || {});
1412
- this.ui_container_component?.subMask();
1413
- }
1414
- }
1415
- async openUI(e, t) {
1416
- const {rootNode: i, component: n} = this.findUIBaseLayer(e, true);
1417
- i.getComponent(UILayer);
1418
- n?.setOptions(t);
1419
- if (i) {
1420
- this.ui_container_component?.addNodeToTween(i).addMask();
1421
- }
1422
- if (n) {
1423
- await n.showTween(t || {});
1424
- }
1425
- this.ui_container_component?.ui_container && n?.addToParent(this.ui_container_component.ui_container);
1426
- }
1427
- findUIBaseLayer(e, t) {
1428
- let i;
1429
- let n = null;
1430
- if (e instanceof s) {
1431
- var r;
1432
- i = e;
1433
- const t = $(r = e.components).call(r, e => e instanceof UILayer);
1434
- if (t.length) {
1435
- if (t.length == 1) {
1436
- n = t[0];
1437
- } else {
1438
- O(`${e.name}节点存在多个继承自BaseLayer的组件`);
1439
- }
1440
- } else {
1441
- o(`${e.name}节点未找到继承自BaseLayer的组件`);
1442
- return {
1443
- rootNode: i,
1444
- component: n
1445
- };
1446
- }
1447
- } else {
1448
- i = e.node;
1449
- n = e;
1450
- if (t) {
1451
- while (i.parent) {
1452
- i = i.parent;
1453
- }
1454
- n.root = i;
1455
- } else {
1456
- i = e.root;
1457
- }
1458
- }
1459
- return {
1460
- rootNode: i,
1461
- component: n
1462
- };
1463
- }
1464
- onRootUpdate() {
1465
- const e = this.root_ui.children.findLastIndex(e => {
1466
- console.log("根层级变化,当前根节点子节点:", e.name, "active状态:", e.active, e != this.root_mask);
1467
- console.log("根层级变化,当前根节点子节点数量:", this.root_ui.children.length);
1468
- console.log("root_mask有效", u(this.root_mask));
1469
- return e.active && e != this.root_mask;
1470
- });
1471
- this.root_mask.active = e != -1;
1472
- if (e > -1) {
1473
- const t = this.root_ui.children[e];
1474
- const i = t.getSiblingIndex() - 1;
1475
- this.root_mask.setSiblingIndex(i < 0 ? 0 : i);
1476
- }
1477
- this.cat.event.emit(je.ROOT_MASK_CHANGE);
1478
- }
1479
- };
1480
-
1481
- _e([ wt({
1482
- type: c,
1483
- tooltip: "断线重连UI预制体"
1484
- }), ye("design:type", typeof (mt = typeof c !== "undefined" && c) === "function" ? mt : Object) ], Ot.prototype, "reconnection_ui_prefab", void 0);
1485
-
1486
- _e([ wt({
1487
- type: c,
1488
- tooltip: "提示UI预制体"
1489
- }), ye("design:type", typeof (gt = typeof c !== "undefined" && c) === "function" ? gt : Object) ], Ot.prototype, "toast_ui_prefab", void 0);
1490
-
1491
- _e([ wt({
1492
- type: c,
1493
- tooltip: "加载UI预制体"
1494
- }), ye("design:type", typeof (_t = typeof c !== "undefined" && c) === "function" ? _t : Object) ], Ot.prototype, "loading_ui_prefab", void 0);
1495
-
1496
- _e([ wt({
1497
- type: c,
1498
- tooltip: "公告UI预制体"
1499
- }), ye("design:type", typeof (yt = typeof c !== "undefined" && c) === "function" ? yt : Object) ], Ot.prototype, "notice_ui_prefab", void 0);
1500
-
1501
- _e([ wt({
1502
- type: c,
1503
- tooltip: "UI层预制体"
1504
- }), ye("design:type", typeof (bt = typeof c !== "undefined" && c) === "function" ? bt : Object) ], Ot.prototype, "ui_prefab", void 0);
1505
-
1506
- _e([ wt({
1507
- type: s,
1508
- tooltip: "root-UI层"
1509
- }), ye("design:type", typeof (vt = typeof s !== "undefined" && s) === "function" ? vt : Object) ], Ot.prototype, "root_ui", void 0);
1510
-
1511
- _e([ wt({
1512
- type: s,
1513
- tooltip: "root-组件层"
1514
- }), ye("design:type", typeof (Ct = typeof s !== "undefined" && s) === "function" ? Ct : Object) ], Ot.prototype, "root_toast", void 0);
1515
-
1516
- _e([ wt({
1517
- type: s,
1518
- tooltip: "root-mask"
1519
- }), ye("design:type", typeof (Et = typeof s !== "undefined" && s) === "function" ? Et : Object) ], Ot.prototype, "root_mask", void 0);
1520
-
1521
- Ot = _e([ St("Gui"), At("CATCORE/Gui") ], Ot);
1522
-
1523
- var Tt;
1524
-
1525
- (function(e) {
1526
- e["Root"] = "prefabs/root";
1527
- e["Toast"] = "prefabs/toast";
1528
- e["BlackMask"] = "prefabs/black-mask";
1529
- e["Loading"] = "prefabs/loading";
1530
- e["Notice"] = "prefabs/notice";
1531
- e["Reconnection"] = "prefabs/reconnection";
1532
- })(Tt || (Tt = {}));
1533
-
1534
- class GuiManager extends BaseManager {
1535
- gui;
1536
- #e="core";
1537
- getGuiPrefabByType=(e, t) => new F((i, n) => {
1538
- a(e, `${t}`);
1539
- this.cat.res.load(e, t, (e, t) => {
1540
- if (e) {
1541
- n(e);
1542
- } else {
1543
- i(t);
1544
- }
1545
- });
1546
- });
1547
- async init() {
1548
- this.cat.gui_bundle_name && (this.#e = this.cat.gui_bundle_name);
1549
- const e = await this.getGuiPrefabByType(this.#e, Tt.Root);
1550
- const t = h(e);
1551
- this.gui = t.getComponent(Ot).init(this.cat);
1552
- r.addPersistRootNode(t);
1553
- return this;
1554
- }
1555
- }
1556
-
1557
- class WrapperSocialGameClient extends se {
1558
- showRequestErrInfo=false;
1559
- logBlackList=[];
1560
- ignore=e => {
1561
- var t;
1562
- return B(t = this.logBlackList).call(t, e);
1563
- };
1564
- constructor(e, t, i, n) {
1565
- super(t, i, n, e);
1566
- this.showRequestErrInfo = n?.showRequestErrInfo ?? false;
1567
- }
1568
- destroy() {
1569
- this.disconnect(true);
1570
- e._cat.socialGameClient.unregister(this);
1571
- }
1572
- async GameRequest(t, i, n) {
1573
- let {forwardReq: s = false, forwardResp: r = false} = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
1574
- return new F((l, c) => {
1575
- super.GameRequest(t, i, n, {
1576
- forwardReq: s,
1577
- forwardResp: r
1578
- }).then(e => {
1579
- if (ie) {
1580
- 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);
1581
- }
1582
- l(e);
1583
- }, t => {
1584
- o(t);
1585
- this.showRequestErrInfo && t?.msg && e._cat.gui.showToast({
1586
- title: t.msg
1587
- });
1588
- c(t);
1589
- });
1590
- });
1591
- }
1592
- subscribe(t, i, n) {
1593
- super.subscribe(t, i, i => {
1594
- if (ie && !this.ignore(t)) {
1595
- 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);
1596
- }
1597
- e._cat.event.emit(t, i);
1598
- n?.(i);
1599
- });
1600
- return this;
1601
- }
1602
- }
1603
-
1604
- class SocialGameClientManager extends BaseManager {
1605
- managedClients=(() => new G)();
1606
- isGlobalOnline=true;
1607
- isInBackground=false;
1608
- reconnecting=false;
1609
- onEventHideDelegate=(() => new T)();
1610
- onEventShowDelegate=(() => new T)();
1611
- onEventReloadSceneDelegate=(() => new T)();
1612
- reconnectTimer=null;
1613
- pendingShowOptions=[];
1614
- scheduleReconnect() {
1615
- let e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 2e3;
1616
- if (this.reconnectTimer) {
1617
- clearTimeout(this.reconnectTimer);
1618
- this.reconnectTimer = null;
1619
- }
1620
- this.reconnectTimer = X(() => {
1621
- this.reconnectTimer = null;
1622
- this.triggerReconnectAll();
1623
- }, e);
1624
- }
1625
- get activeClients() {
1626
- var e, t;
1627
- return $(e = Z(t = Y(this.managedClients)).call(t, e => {
1628
- let [t, i] = e;
1629
- return i;
1630
- })).call(e, e => e.socket);
1631
- }
1632
- constructor(e) {
1633
- super(e);
1634
- this.initGlobalListeners();
1635
- }
1636
- createWebSocket(e, t, i, n) {
1637
- if (this.managedClients.has(e)) {
1638
- const t = this.managedClients.get(e);
1639
- t.destroy();
1640
- a(`清理旧的 ${e} 客户端`);
1641
- }
1642
- const o = new WrapperSocialGameClient(e, i, n, j({
1643
- reconnectMaxAttempts: Infinity
1644
- }, {
1645
- isAutoConnect: false,
1646
- isArrayBuffer: ne,
1647
- ...t
1648
- }));
1649
- this.register(o);
1650
- return o;
1651
- }
1652
- register(e) {
1653
- e.on("reconnected", this.handleSingleReconnect);
1654
- e.on("close", this.handleSingleClose);
1655
- e.on("kick", this.handleSingleKick);
1656
- this.managedClients.set(e.name, e);
1657
- }
1658
- unregister(e) {
1659
- e.off("reconnected", this.handleSingleReconnect);
1660
- e.off("close", this.handleSingleClose);
1661
- e.off("kick", this.handleSingleKick);
1662
- this.managedClients.delete(e.name);
1663
- }
1664
- initGlobalListeners() {
1665
- this.cat.event.on(je.ONLINE, () => this.handleGlobalStateChange("online"), this).on(je.OFFLINE, () => this.handleGlobalStateChange("offline"), this);
1666
- if (ne) {
1667
- wx.onShow(e => {
1668
- this.handleGlobalStateChange("show", e);
1669
- });
1670
- wx.onHide(e => {
1671
- this.handleGlobalStateChange("hide", e);
1672
- });
1673
- } else {
1674
- y.on(w.EVENT_SHOW, () => this.handleGlobalStateChange("show"));
1675
- y.on(w.EVENT_HIDE, () => this.handleGlobalStateChange("hide"));
1676
- }
1677
- }
1678
- async handleGlobalStateChange(e, t) {
1679
- switch (e) {
1680
- case "online":
1681
- this.cat.gui.hideLoading().showToast({
1682
- title: et.ONLINE
1683
- });
1684
- this.isGlobalOnline = true;
1685
- this.safeTriggerReconnectAll();
1686
- break;
1687
-
1688
- case "offline":
1689
- this.isGlobalOnline = false;
1690
- this.disconnectAll(true);
1691
- this.cat.gui.showLoading({
1692
- title: et.OFFLINE
1693
- });
1694
- break;
1695
-
1696
- case "show":
1697
- this.isInBackground = false;
1698
- a("监听前台 show", t);
1699
- if (t) this.pendingShowOptions.push(t);
1700
- await this.safeTriggerReconnectAll();
1701
- break;
1702
-
1703
- case "hide":
1704
- a("监听前台 hide");
1705
- await this.onEventHideDelegate.dispatch(t);
1706
- this.isInBackground = true;
1707
- this.disconnectAll(true);
1708
- break;
1709
- }
1710
- }
1711
- async safeTriggerReconnectAll() {
1712
- if (this.reconnecting || !this.isGlobalOnline || this.isInBackground || this.managedClients.size === 0) {
1713
- console.log("[safeTriggerReconnectAll] 没有需要重连的客户端,直接 dispatch");
1714
- await this.dispatchReloadAndShow();
1715
- return;
1716
- }
1717
- if (this.reconnecting) {
1718
- console.log("[safeTriggerReconnectAll] 正在重连中,跳过本次");
1719
- return;
1720
- }
1721
- await this.triggerReconnectAll();
1722
- }
1723
- async dispatchReloadAndShow() {
1724
- await this.onEventReloadSceneDelegate.dispatch();
1725
- while (this.pendingShowOptions.length > 0) {
1726
- const e = this.pendingShowOptions.shift();
1727
- this.onEventShowDelegate.dispatch(e);
1728
- }
1729
- }
1730
- async triggerReconnectAll() {
1731
- console.log("触发所有客户端重连[正在重连][在线][后台][ws数量]", this.reconnecting, this.isGlobalOnline, this.isInBackground, this.managedClients.size);
1732
- if (this.reconnecting || !this.isGlobalOnline || this.isInBackground || this.managedClients.size === 0) {
1733
- await this.dispatchReloadAndShow();
1734
- return;
1735
- }
1736
- this.reconnecting = true;
1737
- this.cat.gui.showLoading({
1738
- title: "正在重连"
1739
- });
1740
- try {
1741
- var e, t;
1742
- await F.allSettled(Z(e = this.activeClients).call(e, async e => {
1743
- try {
1744
- await e.reconnectPromise();
1745
- } catch (t) {
1746
- o(`${e.name}服重连失败`, t);
1747
- }
1748
- }));
1749
- const i = $(t = this.activeClients).call(t, e => e.socketConnectStatus !== te.CONNECTED);
1750
- if (i.length > 0) {
1751
- Z(i).call(i, e => {
1752
- console.error("部分WS重连失败:", e);
1753
- });
1754
- a("2s后重连所有客户端");
1755
- this.reconnecting = false;
1756
- this.scheduleReconnect();
1757
- } else {
1758
- this.reconnecting = false;
1759
- }
1760
- } catch (e) {
1761
- this.reconnecting = false;
1762
- throw e;
1763
- }
1764
- }
1765
- disconnectAll(e) {
1766
- var t, i;
1767
- if (ee(t = this.activeClients).call(t, e => e.socket?.readyState !== WebSocket.OPEN)) return;
1768
- H(i = this.managedClients).call(i, t => {
1769
- a("断开连接", t.name, e, t.socket);
1770
- t.disconnect(e);
1771
- });
1772
- }
1773
- handleSingleClose=() => {
1774
- if (!this.reconnecting) {
1775
- a("3s后重连所有客户端");
1776
- this.scheduleReconnect(3e3);
1777
- }
1778
- };
1779
- handleSingleReconnect=async () => {
1780
- var e;
1781
- if (ee(e = this.activeClients).call(e, e => e.socketConnectStatus === te.CONNECTED)) {
1782
- var t;
1783
- a("单个WS重连成功回调===", this.managedClients);
1784
- await F.allSettled(Z(t = this.activeClients).call(t, async e => {
1785
- try {
1786
- await e.connectRequest();
1787
- } catch (t) {
1788
- o(`${e.name}服登录错误`, t);
1789
- this.cat.gui.showToast({
1790
- title: `登录${e.name}服错误`
1791
- });
1792
- }
1793
- }));
1794
- if (this.reconnectTimer) {
1795
- clearTimeout(this.reconnectTimer);
1796
- this.reconnectTimer = null;
1797
- }
1798
- await this.onEventReloadSceneDelegate.dispatch();
1799
- this.cat.gui.hideLoading();
1800
- if (r.getScene()?.getComponentInChildren(SceneLayer)?.isReload) this.cat.gui.reloadScene(() => {
1801
- while (this.pendingShowOptions.length > 0) {
1802
- const e = this.pendingShowOptions.shift();
1803
- this.onEventShowDelegate.dispatch(e);
1804
- }
1805
- });
1806
- }
1807
- };
1808
- handleSingleKick=() => {
1809
- this.cat.gui.showNotice({
1810
- text: et.KICK
1811
- });
1812
- };
1813
- }
1814
-
1815
- class ResLoader {
1816
- get=(() => function(e, t) {
1817
- let i = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "resources";
1818
- var n = I.getBundle(i);
1819
- return n.get(e, t);
1820
- })();
1821
- isAssetType=e => typeof e === "function" && e.prototype instanceof k;
1822
- async load() {
1823
- let e = null;
1824
- let t = null;
1825
- let i = null;
1826
- for (var n = arguments.length, o = new Array(n), s = 0; s < n; s++) {
1827
- o[s] = arguments[s];
1828
- }
1829
- if (typeof o[0] === "string" && typeof o[1] === "string") {
1830
- e = o.shift();
1831
- }
1832
- let r = o.shift();
1833
- if (this.isAssetType(o[0])) {
1834
- t = o.shift();
1835
- }
1836
- if (o.length == 2) {
1837
- i = o.shift();
1838
- }
1839
- const a = o.shift();
1840
- let l = R;
1841
- if (e && e != "resources") {
1842
- if (!I.bundles.has(e)) {
1843
- await this.loadBundle(e);
1844
- }
1845
- let t = I.bundles.get(e);
1846
- if (t) {
1847
- l = t;
1848
- }
1849
- }
1850
- if (i && a) {
1851
- l.load(r, t, i, a);
1852
- } else if (a) {
1853
- l.load(r, t, a);
1854
- } else {
1855
- l.load(r, t);
1856
- }
1857
- }
1858
- async loadDir() {
1859
- let e = null;
1860
- let t = null;
1861
- let i = null;
1862
- let n = null;
1863
- for (var o = arguments.length, s = new Array(o), r = 0; r < o; r++) {
1864
- s[r] = arguments[r];
1865
- }
1866
- if (typeof s[0] === "string" && typeof s[1] === "string") {
1867
- e = s.shift();
1868
- }
1869
- let a = s.shift();
1870
- if (this.isAssetType(s[0])) {
1871
- t = s.shift();
1872
- }
1873
- if (s.length == 2) {
1874
- i = s.shift();
1875
- }
1876
- n = s.shift();
1877
- let l = R;
1878
- if (e && e != "resources") {
1879
- if (!I.bundles.has(e)) {
1880
- await this.loadBundle(e);
1881
- }
1882
- let t = I.bundles.get(e);
1883
- if (t) {
1884
- l = t;
1885
- }
1886
- }
1887
- if (i && n) {
1888
- l.loadDir(a, t, i, n);
1889
- } else if (n) {
1890
- l.loadDir(a, t, n);
1891
- } else {
1892
- l.loadDir(a, t);
1893
- }
1894
- }
1895
- loadRemote(e) {
1896
- var t = null;
1897
- var i = null;
1898
- for (var n = arguments.length, o = new Array(n > 1 ? n - 1 : 0), s = 1; s < n; s++) {
1899
- o[s - 1] = arguments[s];
1900
- }
1901
- if (o.length == 2) {
1902
- t = o.shift();
1903
- }
1904
- i = o.shift();
1905
- I.loadRemote(e, {
1906
- ext: ".png",
1907
- ...t
1908
- }, i);
1909
- }
1910
- loadBundle=(e, t) => new F((i, n) => {
1911
- const o = (e, t) => {
1912
- if (e) {
1913
- return n(e);
1914
- }
1915
- i(t);
1916
- };
1917
- t ? I.loadBundle(e, {
1918
- version: t
1919
- }, o) : I.loadBundle(e, o);
1920
- });
1921
- releasePrefabtDepsRecursively=e => {
1922
- var t = I.assets.get(e);
1923
- I.releaseAsset(t);
1924
- if (t instanceof c) {
1925
- var i = I.dependUtil.getDepsRecursively(e);
1926
- H(i).call(i, e => {
1927
- var t = I.assets.get(e);
1928
- t.decRef();
1929
- });
1930
- }
1931
- };
1932
- release=(() => {
1933
- var e = this;
1934
- return function(t) {
1935
- let i = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "resources";
1936
- var n = I.getBundle(i);
1937
- if (n) {
1938
- var o = n.get(t);
1939
- if (o) {
1940
- e.releasePrefabtDepsRecursively(o._uuid);
1941
- }
1942
- }
1943
- };
1944
- })();
1945
- releaseDir=(() => {
1946
- var e = this;
1947
- return function(t) {
1948
- var i, n;
1949
- let o = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "resources";
1950
- var s = I.getBundle(o);
1951
- var r = s?.getDirWithPath(t);
1952
- ((i = r) == null ? void 0 : V(n = Function.call).call(n, Z(i), i))?.(t => {
1953
- e.releasePrefabtDepsRecursively(t.uuid);
1954
- });
1955
- if (!t && o != "resources" && s) {
1956
- I.removeBundle(s);
1957
- }
1958
- };
1959
- })();
1960
- dump=() => {
1961
- var e;
1962
- H(e = I.assets).call(e, (e, t) => {
1963
- a(I.assets.get(t));
1964
- });
1965
- a(`当前资源总数:${I.assets.count}`);
1966
- };
1967
- loadAssetsWithProgress(e, t) {
1968
- return new F((i, n) => {
1969
- const o = e.getDirWithPath("");
1970
- const s = o.length;
1971
- let r = 0;
1972
- if (s === 0) {
1973
- t(1);
1974
- i();
1975
- return;
1976
- }
1977
- H(o).call(o, o => {
1978
- e.load(o.path, e => {
1979
- if (e) {
1980
- n(e);
1981
- return;
1982
- }
1983
- r++;
1984
- t(r / s);
1985
- if (r === s) {
1986
- i();
1987
- }
1988
- });
1989
- });
1990
- });
1991
- }
1992
- }
1993
-
1994
- class BaseStore {
1995
- rootStore;
1996
- constructor(e) {
1997
- this.rootStore = e;
1998
- }
1999
- }
2000
-
2001
- class CoreStore extends BaseManager {}
2002
-
2003
- let kt = null;
2004
-
2005
- const Rt = e => re.MD5(e).toString();
2006
-
2007
- const Mt = (e, t) => {
2008
- kt = re.enc.Hex.parse(t);
2009
- };
2010
-
2011
- const Ut = (e, t, i) => re.AES.encrypt(e, t, {
2012
- iv: kt,
2013
- format: Dt
2014
- }).toString();
2015
-
2016
- const Nt = (e, t, i) => {
2017
- const n = re.AES.decrypt(e, t, {
2018
- iv: kt,
2019
- format: Dt
2020
- });
2021
- return n.toString(re.enc.Utf8);
2022
- };
2023
-
2024
- const Dt = {
2025
- stringify: e => {
2026
- const t = {
2027
- ct: e.ciphertext.toString(re.enc.Base64)
2028
- };
2029
- if (e.iv) {
2030
- t.iv = e.iv.toString();
2031
- }
2032
- if (e.salt) {
2033
- t.s = e.salt.toString();
2034
- }
2035
- return P(t);
2036
- },
2037
- parse: e => {
2038
- const t = JSON.parse(e);
2039
- const i = re.lib.CipherParams.create({
2040
- ciphertext: re.enc.Base64.parse(t.ct)
2041
- });
2042
- if (t.iv) {
2043
- i.iv = re.enc.Hex.parse(t.iv);
2044
- }
2045
- if (t.s) {
2046
- i.salt = re.enc.Hex.parse(t.s);
2047
- }
2048
- return i;
2049
- }
2050
- };
2051
-
2052
- var xt = Object.freeze({
2053
- __proto__: null,
2054
- JsonFormatter: Dt,
2055
- aesDecrypt: Nt,
2056
- aesEncrypt: Ut,
2057
- initCrypto: Mt,
2058
- md5: Rt
2059
- });
2060
-
2061
- class CoreUtil extends BaseManager {
2062
- encryptUtil=(() => xt)();
2063
- }
2064
-
2065
- class StorageManager extends BaseManager {
2066
- _key=null;
2067
- _iv=null;
2068
- _id="";
2069
- init(e, t) {
2070
- this.cat.util.encryptUtil.initCrypto(e, t);
2071
- this._key = this.cat.util.encryptUtil.md5(e);
2072
- this._iv = this.cat.util.encryptUtil.md5(t);
2073
- }
2074
- setUser(e) {
2075
- this._id = e;
2076
- }
2077
- set(e, t) {
2078
- e = `${e}_${this._id}`;
2079
- if (null == e) {
2080
- console.error("存储的key不能为空");
2081
- return;
2082
- }
2083
- if (!oe) {
2084
- e = this.cat.util.encryptUtil.md5(e);
2085
- }
2086
- if (null == t) {
2087
- console.warn("存储的值为空,则直接移除该存储");
2088
- this.remove(e);
2089
- return;
2090
- }
2091
- if (typeof t === "function") {
2092
- console.error("储存的值不能为方法");
2093
- return;
2094
- }
2095
- if (typeof t === "object") {
2096
- try {
2097
- t = P(t);
2098
- } catch (e) {
2099
- console.error(`解析失败,str = ${t}`);
2100
- return;
2101
- }
2102
- } else if (typeof t === "number") {
2103
- t = t + "";
2104
- }
2105
- if (!oe && null != this._key && null != this._iv) {
2106
- t = this.cat.util.encryptUtil.aesEncrypt(`${t}`, this._key, this._iv);
2107
- }
2108
- M.localStorage.setItem(e, t);
2109
- }
2110
- get(e, t) {
2111
- if (null == e) {
2112
- console.error("存储的key不能为空");
2113
- return null;
2114
- }
2115
- e = `${e}_${this._id}`;
2116
- if (!oe) {
2117
- e = this.cat.util.encryptUtil.md5(e);
2118
- }
2119
- let i = M.localStorage.getItem(e);
2120
- if (null != i && "" !== i && !oe && null != this._key && null != this._iv) {
2121
- i = this.cat.util.encryptUtil.aesDecrypt(i, this._key, this._iv);
2122
- }
2123
- if (null === i) {
2124
- return t;
2125
- }
2126
- return i;
2127
- }
2128
- getNumber(e) {
2129
- let t = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
2130
- var i = this.get(e);
2131
- return Number(i) || t;
2132
- }
2133
- getBoolean(e) {
2134
- var t = this.get(e);
2135
- return Boolean(t) || false;
2136
- }
2137
- getJson(e, t) {
2138
- var i = this.get(e);
2139
- return i && JSON.parse(i) || t;
2140
- }
2141
- remove(e) {
2142
- if (null == e) {
2143
- console.error("存储的key不能为空");
2144
- return;
2145
- }
2146
- e = `${e}_${this._id}`;
2147
- if (!oe) {
2148
- e = this.cat.util.encryptUtil.md5(e);
2149
- }
2150
- M.localStorage.removeItem(e);
2151
- }
2152
- clear() {
2153
- M.localStorage.clear();
2154
- }
2155
- }
2156
-
2157
- class Manager {
2158
- static #t=null;
2159
- #i=false;
2160
- static get instance() {
2161
- return this.#t ?? (this.#t = new Manager);
2162
- }
2163
- onAppInitDelegate=(() => new T)();
2164
- onPlugInInitDelegate=(() => new T)();
2165
- #n=null;
2166
- get audio() {
2167
- return this.#n;
2168
- }
2169
- #o=null;
2170
- get event() {
2171
- return this.#o;
2172
- }
2173
- #s=null;
2174
- get gui() {
2175
- return this.#s;
2176
- }
2177
- #r=null;
2178
- get storage() {
2179
- return this.#r;
2180
- }
2181
- #a=null;
2182
- get res() {
2183
- return this.#a;
2184
- }
2185
- #l=null;
2186
- get util() {
2187
- return this.#l;
2188
- }
2189
- #c=null;
2190
- get socialGameClient() {
2191
- return this.#c;
2192
- }
2193
- #h=null;
2194
- get store() {
2195
- return this.#h;
2196
- }
2197
- #u="";
2198
- get gui_bundle_name() {
2199
- return this.#u;
2200
- }
2201
- #d="";
2202
- get audio_local_store_key() {
2203
- return this.#d;
2204
- }
2205
- #p="";
2206
- get default_audio_effect() {
2207
- return this.#p;
2208
- }
2209
- setConfig=(() => {
2210
- var e = this;
2211
- return function() {
2212
- let {default_audio_effect: t = "", gui_bundleName: i = "resources", audio_local_store_key: n = "game_audio"} = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
2213
- if (e.#i) {
2214
- throw new Error("[CAT] 已初始化,无法修改配置");
2215
- }
2216
- e.#u = i;
2217
- e.#d = n;
2218
- e.#p = t;
2219
- return e;
2220
- };
2221
- })();
2222
- async boot() {
2223
- if (this.#i) {
2224
- throw new Error("[CAT] 已初始化");
2225
- }
2226
- try {
2227
- this.#h = new CoreStore(this);
2228
- this.#a = new ResLoader;
2229
- this.#l = new CoreUtil(this);
2230
- this.#r = new StorageManager(this);
2231
- this.#o = new L;
2232
- this.#n = new AudioManager(this);
2233
- this.#c = new SocialGameClientManager(this);
2234
- this.#s = (await new GuiManager(this).init()).gui;
2235
- this.#i = true;
2236
- } catch (e) {
2237
- console.error(`[CAT] 初始化失败:`, e);
2238
- throw e;
2239
- }
2240
- }
2241
- merge(e, t) {
2242
- if (!this.#i) throw new Error("[CAT] 未初始化");
2243
- if (typeof e !== "string") {
2244
- throw new Error(`merge方法第一个参数应该为string类型`);
2245
- }
2246
- if (!D(this, e)) {
2247
- x(this, e, t);
2248
- }
2249
- j(D(this, e), t);
2250
- return this;
2251
- }
2252
- appendPlugInInitDelegate(e) {
2253
- if (this.#i) {
2254
- F.resolve().then(e).catch(e => {
2255
- console.error("[CAT] appendPlugInInitDelegate 回调执行失败:", e);
2256
- });
2257
- } else {
2258
- this.onPlugInInitDelegate.add(e);
2259
- }
2260
- return this;
2261
- }
2262
- }
2263
-
2264
- var jt, Ft, Lt, Bt, Pt, Gt, Ht, $t, Kt;
2265
-
2266
- const {ccclass: Wt, property: Vt, menu: zt} = i;
2267
-
2268
- let qt = class CoreUIModal extends UILayer {
2269
- default_title=null;
2270
- title;
2271
- prompt_content_str;
2272
- prompt_content_spriteFrame;
2273
- btn_confirm;
2274
- confirm_spriteFrame;
2275
- btn_cancel;
2276
- cancel_spriteFrame;
2277
- btn_close;
2278
- isConfirm=false;
2279
- props={
2280
- title: this.default_title,
2281
- content: null,
2282
- confirmCB: () => {},
2283
- cancelCB: () => {},
2284
- style: null
2285
- };
2286
- onLoad() {
2287
- this.btn_cancel.node.on(S.EventType.CLICK, this.onCancelHandler, this);
2288
- this.btn_confirm.node.on(S.EventType.CLICK, this.onConfirmHandler, this);
2289
- this.btn_close.node.on(S.EventType.CLICK, this.onCloseHandler, this);
2290
- this.addAutorun([ () => {
2291
- this.title.spriteFrame = this.props?.title || this.default_title;
2292
- }, () => {
2293
- if (this.props.content) {
2294
- if (this.props.content instanceof U) {
2295
- this.prompt_content_spriteFrame.spriteFrame = this.props.content;
2296
- } else if (typeof this.props.content === "string") {
2297
- this.prompt_content_str.string = this.props.content;
2298
- } else {
2299
- console.error("未知类型的【UIModal】内容");
2300
- }
2301
- }
2302
- }, () => {
2303
- if (this.props?.style?.confirm === null) {
2304
- this.btn_confirm.node.active = false;
2305
- } else {
2306
- this.btn_confirm.node.active = true;
2307
- this.btn_confirm.getComponent(N).spriteFrame = this.props.style?.confirm || this.confirm_spriteFrame;
2308
- }
2309
- if (this.props?.style?.cancel === null) {
2310
- this.btn_cancel.node.active = false;
2311
- } else {
2312
- this.btn_cancel.node.active = true;
2313
- this.btn_cancel.getComponent(N).spriteFrame = this.props.style?.cancel || this.cancel_spriteFrame;
2314
- }
2315
- } ]);
2316
- }
2317
- close() {
2318
- this.props.cancelCB?.();
2319
- this.cat.gui.closeUI(this);
2320
- }
2321
- onCancelHandler() {
2322
- this.close();
2323
- }
2324
- onConfirmHandler() {
2325
- this.props.confirmCB?.();
2326
- }
2327
- onDestroy() {
2328
- if (this.isConfirm) this.props.onDestroy?.();
2329
- }
2330
- onCloseHandler() {
2331
- this.close();
2332
- }
2333
- };
2334
-
2335
- _e([ Vt({
2336
- type: U,
2337
- tooltip: "默认标题"
2338
- }), ye("design:type", typeof (jt = typeof U !== "undefined" && U) === "function" ? jt : Object) ], qt.prototype, "default_title", void 0);
2339
-
2340
- _e([ Vt({
2341
- type: N,
2342
- tooltip: "标题节点"
2343
- }), ye("design:type", typeof (Ft = typeof N !== "undefined" && N) === "function" ? Ft : Object) ], qt.prototype, "title", void 0);
2344
-
2345
- _e([ Vt({
2346
- type: b,
2347
- tooltip: "字符串内容按钮"
2348
- }), ye("design:type", typeof (Lt = typeof b !== "undefined" && b) === "function" ? Lt : Object) ], qt.prototype, "prompt_content_str", void 0);
2349
-
2350
- _e([ Vt({
2351
- type: N,
2352
- tooltip: "图片精灵内容按钮"
2353
- }), ye("design:type", typeof (Bt = typeof N !== "undefined" && N) === "function" ? Bt : Object) ], qt.prototype, "prompt_content_spriteFrame", void 0);
2354
-
2355
- _e([ Vt({
2356
- type: S,
2357
- tooltip: "确认按钮"
2358
- }), ye("design:type", typeof (Pt = typeof S !== "undefined" && S) === "function" ? Pt : Object) ], qt.prototype, "btn_confirm", void 0);
2359
-
2360
- _e([ Vt({
2361
- type: U,
2362
- tooltip: "确认按钮精灵图"
2363
- }), ye("design:type", typeof (Gt = typeof U !== "undefined" && U) === "function" ? Gt : Object) ], qt.prototype, "confirm_spriteFrame", void 0);
2364
-
2365
- _e([ Vt({
2366
- type: S,
2367
- tooltip: "取消按钮"
2368
- }), ye("design:type", typeof (Ht = typeof S !== "undefined" && S) === "function" ? Ht : Object) ], qt.prototype, "btn_cancel", void 0);
2369
-
2370
- _e([ Vt({
2371
- type: U,
2372
- tooltip: "取消按钮精灵图"
2373
- }), ye("design:type", typeof ($t = typeof U !== "undefined" && U) === "function" ? $t : Object) ], qt.prototype, "cancel_spriteFrame", void 0);
2374
-
2375
- _e([ Vt({
2376
- type: S,
2377
- tooltip: "关闭按钮"
2378
- }), ye("design:type", typeof (Kt = typeof S !== "undefined" && S) === "function" ? Kt : Object) ], qt.prototype, "btn_close", void 0);
2379
-
2380
- qt = _e([ Wt("CoreUIModal"), zt("CATCORE/CoreUIModal") ], qt);
2381
-
2382
- var Qt;
2383
-
2384
- (function(e) {
2385
- e[e["Delay"] = 0] = "Delay";
2386
- e[e["Interval"] = 1] = "Interval";
2387
- })(Qt || (Qt = {}));
2388
-
2389
- class TimerEntry {
2390
- tag;
2391
- type;
2392
- callback;
2393
- remainingTime;
2394
- executionTime=0;
2395
- initialTime;
2396
- constructor(e, t, i, n) {
2397
- this.tag = e;
2398
- this.type = t;
2399
- this.remainingTime = i;
2400
- this.initialTime = i;
2401
- this.callback = n;
2402
- }
2403
- }
2404
-
2405
- class TimerManager extends BaseManager {
2406
- timers=(() => new G)();
2407
- lastUpdateTime=(() => ae())();
2408
- constructor(e) {
2409
- var t;
2410
- super(e);
2411
- e.event.on(je.EVENT_HIDE, this.onHandleAppBackground, this);
2412
- e.event.on(je.EVENT_SHOW, this.onHandleAppForeground, this);
2413
- le(V(t = this.update).call(t, this), 1e3);
2414
- }
2415
- onHandleAppBackground() {
2416
- this.lastUpdateTime = ae();
2417
- }
2418
- onHandleAppForeground() {
2419
- const e = ae();
2420
- const t = e - this.lastUpdateTime;
2421
- a("elapsedTime", t);
2422
- for (const e of ce(i = this.timers).call(i)) {
2423
- var i;
2424
- if (e.remainingTime > 0) {
2425
- e.remainingTime -= t;
2426
- e.executionTime += t;
2427
- }
2428
- }
2429
- this.lastUpdateTime = e;
2430
- }
2431
- registerInterval(e, t, i) {
2432
- if (this.has(e)) {
2433
- return o(`${e}定时器已存在,请勿重复注册`);
2434
- }
2435
- const n = new TimerEntry(e, Qt.Interval, t, i);
2436
- this.timers.set(e, n);
2437
- }
2438
- registerDelay(e, t, i) {
2439
- if (this.has(e)) {
2440
- return o(`${e}延时器已存在,请勿重复注册`);
2441
- }
2442
- const n = new TimerEntry(e, Qt.Delay, t, i);
2443
- this.timers.set(e, n);
2444
- }
2445
- unregister(e) {
2446
- if (this.has(e)) {
2447
- this.timers.delete(e);
2448
- }
2449
- }
2450
- has(e) {
2451
- return this.timers.has(e);
2452
- }
2453
- update() {
2454
- const e = [];
2455
- for (const [i, n] of he(t = this.timers).call(t)) {
2456
- var t;
2457
- n.remainingTime -= 1e3;
2458
- if (n.remainingTime <= 0) {
2459
- if (n.type === Qt.Interval) {
2460
- n.executionTime += n.initialTime;
2461
- }
2462
- n.callback(n.executionTime);
2463
- if (n.type === Qt.Interval) {
2464
- n.remainingTime = n.initialTime;
2465
- } else {
2466
- e.push(i);
2467
- }
2468
- }
2469
- }
2470
- for (const t of e) {
2471
- this.timers.delete(t);
2472
- }
2473
- }
2474
- }
2475
-
2476
- const Jt = (t, i) => (n, o, s) => {
2477
- let r = s.value;
2478
- s.value = function() {
2479
- const n = t ?? e._cat.default_audio_effect;
2480
- if (n) {
2481
- e._cat.audio.playEffect(n);
2482
- } else {
2483
- console.warn(`请添加音效路径参数`);
2484
- }
2485
- if (i) {
2486
- i();
2487
- }
2488
- for (var o = arguments.length, s = new Array(o), a = 0; a < o; a++) {
2489
- s[a] = arguments[a];
2490
- }
2491
- r.apply(this, s);
2492
- };
2493
- return s;
2494
- };
2495
-
2496
- const Xt = function() {
2497
- let e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;
2498
- let t = arguments.length > 1 ? arguments[1] : undefined;
2499
- return function(i, n, o) {
2500
- let s = o.value;
2501
- let r = false;
2502
- o.value = function() {
2503
- if (r) {
2504
- if (t) {
2505
- t();
2506
- }
2507
- return;
2508
- }
2509
- r = true;
2510
- X(() => {
2511
- r = false;
2512
- }, e * 1e3);
2513
- for (var i = arguments.length, n = new Array(i), o = 0; o < i; o++) {
2514
- n[o] = arguments[o];
2515
- }
2516
- s.apply(this, n);
2517
- };
2518
- return o;
2519
- };
2520
- };
2521
-
2522
- const Zt = e._cat ??= Manager.instance;
2523
-
2524
- y.onPostProjectInitDelegate.add(async () => {
2525
- console.time("[Init App]");
2526
- try {
2527
- await Zt.boot();
2528
- await Zt.onAppInitDelegate.dispatch();
2529
- await Zt.onPlugInInitDelegate.dispatch();
2530
- } catch (e) {
2531
- o(`[Init App] 初始化失败: ${e instanceof Error ? e.message : String(e)}`);
2532
- throw e;
2533
- } finally {
2534
- console.timeEnd("[Init App]");
2535
- }
2536
- });
2537
-
2538
- export { Jt as AudioEffect, ge 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 };
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 g,Enum as _,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/instance/every";import{SocketConnectStatus as te}from"pitayaclient";import{DEBUG as ie,WECHAT as oe,PREVIEW as ne}from"cc/env";import{SocialGameClient as se}from"sgc";import re from"crypto-es";import ae from"@babel/runtime-corejs3/core-js-stable/date/now";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 ge;!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"}(ge||(ge={}));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?ge.MUSIC_ON:ge.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?ge.EFFECT_ON:ge.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 _e(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,g(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)=>{g(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(ge.EFFECT_ON,this.onPlayEffectHandler,this).on(ge.EFFECT_OFF,this.onStopEffectHandler,this).on(ge.MUSIC_ON,this.onPlayMusicHandler,this).on(ge.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()}}_e([Ee({tooltip:"类型:\n EFFECT 音效\n BGM 音乐",type:_(Se)}),ye("design:type",Number)],AudioSourceBaseComponent.prototype,"type",void 0),_e([Ee({tooltip:"音源",type:o}),ye("design:type","function"==typeof(be=void 0!==o&&o)?be:Object)],AudioSourceBaseComponent.prototype,"clip",void 0),_e([Ee({tooltip:"循环"}),ye("design:type",Boolean)],AudioSourceBaseComponent.prototype,"loop",void 0),_e([Ee({tooltip:"音量"}),ye("design:type",Number)],AudioSourceBaseComponent.prototype,"volume",void 0),_e([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(ge.EFFECT_ON,this.onPlayEffectHandler,this).on(ge.EFFECT_OFF,this.onStopEffectHandler,this).on(ge.MUSIC_ON,this.onPlayMusicHandler,this).on(ge.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;_e([Ie({tooltip:"类型:\n EFFECT 音效\n BGM 音乐",type:_(Se)}),ye("design:type",Number)],AudioSourceUILayer.prototype,"type",void 0),_e([Ie({tooltip:"音源",type:o}),ye("design:type","function"==typeof(we=void 0!==o&&o)?we:Object)],AudioSourceUILayer.prototype,"clip",void 0),_e([Ie({tooltip:"循环"}),ye("design:type",Boolean)],AudioSourceUILayer.prototype,"loop",void 0),_e([Ie({tooltip:"音量"}),ye("design:type",Number)],AudioSourceUILayer.prototype,"volume",void 0),_e([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=g(o).delay(1.2).to(.5,{opacity:0}).call(()=>{C.stopAllByTarget(e),this.node.destroy(),t()});g(e).by(.5,{position:m(0,400,0)}).call(()=>{n.start()}).start()})}onDestroy(){C.stopAllByTarget(this.node),this.unscheduleAllCallbacks()}};var je,Fe;_e([Ue({type:s,tooltip:"固定节点"}),ye("design:type","function"==typeof(Oe=void 0!==s&&s)?Oe:Object)],xe.prototype,"fixed_node",void 0),_e([Ue({type:s,tooltip:"滑动节点"}),ye("design:type","function"==typeof(Te=void 0!==s&&s)?Te:Object)],xe.prototype,"slide_node",void 0),_e([Ue({type:v,tooltip:"固定标签节点"}),ye("design:type","function"==typeof(ke=void 0!==v&&v)?ke:Object)],xe.prototype,"fixed_label",void 0),_e([Ue({type:v,tooltip:"滑动标签节点"}),ye("design:type","function"==typeof(Re=void 0!==v&&v)?Re:Object)],xe.prototype,"slide_label",void 0),xe=_e([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;_e([Be({type:s,tooltip:"动画节点"}),ye("design:type","function"==typeof(Fe=void 0!==s&&s)?Fe:Object)],Ge.prototype,"tween",void 0),Ge=_e([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}};_e([We({type:s}),ye("design:type","function"==typeof(He=void 0!==s&&s)?He:Object)],ze.prototype,"scene_mask_node",void 0),_e([We({type:s}),ye("design:type","function"==typeof($e=void 0!==s&&s)?$e:Object)],ze.prototype,"ui_container",void 0),ze=_e([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;_e([Xe({type:v,tooltip:"标题"}),ye("design:type","function"==typeof(qe=void 0!==v&&v)?qe:Object)],Ye.prototype,"title",void 0),_e([Xe({type:s,tooltip:"动画"}),ye("design:type","function"==typeof(Qe=void 0!==s&&s)?Qe:Object)],Ye.prototype,"loadingTween",void 0),Ye=_e([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;_e([st({type:v,tooltip:"通用提示文本"}),ye("design:type","function"==typeof(tt=void 0!==v&&v)?tt:Object)],at.prototype,"common_prompt_text",void 0),_e([st({type:S,tooltip:"确定按钮"}),ye("design:type","function"==typeof(it=void 0!==S&&S)?it:Object)],at.prototype,"btn_confirm",void 0),_e([st({type:S,tooltip:"关闭按钮"}),ye("design:type","function"==typeof(ot=void 0!==S&&S)?ot:Object)],at.prototype,"btn_close",void 0),at=_e([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}};_e([ut({type:v,tooltip:"提示文本"}),ye("design:type","function"==typeof(ct=void 0!==v&&v)?ct:Object)],ft.prototype,"text",void 0),_e([ut({type:S,tooltip:"确定按钮"}),ye("design:type","function"==typeof(lt=void 0!==S&&S)?lt:Object)],ft.prototype,"btn_confirm",void 0),_e([ut({type:S,tooltip:"关闭按钮"}),ye("design:type","function"==typeof(ht=void 0!==S&&S)?ht:Object)],ft.prototype,"btn_close",void 0),ft=_e([dt("CoreNotice"),pt("CATCORE/CoreNotice")],ft);class SceneLayer extends BaseComponent{isReload}var mt,gt,_t,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){}_sceneChanging=!1;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(this._sceneChanging)return O("scene is changing, ignore"),this;if(this._sceneChanging=!0,r.once(A.EVENT_BEFORE_SCENE_LAUNCH,e=>{this.changeScene(e,s??{},l)}),r.once(A.EVENT_AFTER_SCENE_LAUNCH,()=>{this._sceneChanging=!1,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){if(this.ui_container_component?.removeAndDestroy(),this.ui_container_component=null,d(this.node)){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;_e([wt({type:l,tooltip:"断线重连UI预制体"}),ye("design:type","function"==typeof(mt=void 0!==l&&l)?mt:Object)],Ot.prototype,"reconnection_ui_prefab",void 0),_e([wt({type:l,tooltip:"提示UI预制体"}),ye("design:type","function"==typeof(gt=void 0!==l&&l)?gt:Object)],Ot.prototype,"toast_ui_prefab",void 0),_e([wt({type:l,tooltip:"加载UI预制体"}),ye("design:type","function"==typeof(_t=void 0!==l&&l)?_t:Object)],Ot.prototype,"loading_ui_prefab",void 0),_e([wt({type:l,tooltip:"公告UI预制体"}),ye("design:type","function"==typeof(yt=void 0!==l&&l)?yt:Object)],Ot.prototype,"notice_ui_prefab",void 0),_e([wt({type:l,tooltip:"UI层预制体"}),ye("design:type","function"==typeof(vt=void 0!==l&&l)?vt:Object)],Ot.prototype,"ui_prefab",void 0),_e([wt({type:s,tooltip:"root-UI层"}),ye("design:type","function"==typeof(bt=void 0!==s&&s)?bt:Object)],Ot.prototype,"root_ui",void 0),_e([wt({type:s,tooltip:"root-组件层"}),ye("design:type","function"==typeof(Ct=void 0!==s&&s)?Ct:Object)],Ot.prototype,"root_toast",void 0),_e([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=_e([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 se{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=>{ie&&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=>{ie&&!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:oe,...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),oe?(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(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!==te.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;ee(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;ee(e=this.activeClients).call(e,e=>e.socketConnectStatus===te.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(re.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=re.lib.CipherParams.create({ciphertext:re.enc.Base64.parse(t.ct)});return t.iv&&(i.iv=re.enc.Hex.parse(t.iv)),t.s&&(i.salt=re.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)=>re.AES.decrypt(e,t,{iv:kt,format:Rt}).toString(re.enc.Utf8),aesEncrypt:(e,t,i)=>re.AES.encrypt(e,t,{iv:kt,format:Rt}).toString(),initCrypto:(e,t)=>{kt=re.enc.Hex.parse(t)},md5:e=>re.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(ne||(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+="");ne||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}`,ne||(e=this.cat.util.encryptUtil.md5(e));let i=M.localStorage.getItem(e);return null==i||""===i||ne||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}`,ne||(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;_e([Ht({type:U,tooltip:"默认标题"}),ye("design:type","function"==typeof(Mt=void 0!==U&&U)?Mt:Object)],Kt.prototype,"default_title",void 0),_e([Ht({type:N,tooltip:"标题节点"}),ye("design:type","function"==typeof(Ut=void 0!==N&&N)?Ut:Object)],Kt.prototype,"title",void 0),_e([Ht({type:v,tooltip:"字符串内容按钮"}),ye("design:type","function"==typeof(Nt=void 0!==v&&v)?Nt:Object)],Kt.prototype,"prompt_content_str",void 0),_e([Ht({type:N,tooltip:"图片精灵内容按钮"}),ye("design:type","function"==typeof(Dt=void 0!==N&&N)?Dt:Object)],Kt.prototype,"prompt_content_spriteFrame",void 0),_e([Ht({type:S,tooltip:"确认按钮"}),ye("design:type","function"==typeof(xt=void 0!==S&&S)?xt:Object)],Kt.prototype,"btn_confirm",void 0),_e([Ht({type:U,tooltip:"确认按钮精灵图"}),ye("design:type","function"==typeof(jt=void 0!==U&&U)?jt:Object)],Kt.prototype,"confirm_spriteFrame",void 0),_e([Ht({type:S,tooltip:"取消按钮"}),ye("design:type","function"==typeof(Ft=void 0!==S&&S)?Ft:Object)],Kt.prototype,"btn_cancel",void 0),_e([Ht({type:U,tooltip:"取消按钮精灵图"}),ye("design:type","function"==typeof(Lt=void 0!==U&&U)?Lt:Object)],Kt.prototype,"cancel_spriteFrame",void 0),_e([Ht({type:S,tooltip:"关闭按钮"}),ye("design:type","function"==typeof(Bt=void 0!==S&&S)?Bt:Object)],Kt.prototype,"btn_close",void 0),Kt=_e([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=(()=>ae())();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=ae()}onHandleAppForeground(){const e=ae(),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,ge 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};