@ives_xxz/framework 2.1.32 → 2.1.34
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/define/FWSystemDefine.ts +22 -20
- package/manager/FWLayerManager.ts +107 -109
- package/package.json +1 -1
- package/service/socket/FWSocket.ts +1 -0
- package/types/FW.d.ts +2 -0
package/define/FWSystemDefine.ts
CHANGED
|
@@ -44,10 +44,10 @@ export class FWLayerType {
|
|
|
44
44
|
}
|
|
45
45
|
|
|
46
46
|
export class FWTaskStatus {
|
|
47
|
-
IDLE =
|
|
48
|
-
RUNNING =
|
|
49
|
-
PAUSED =
|
|
50
|
-
COMPLETED =
|
|
47
|
+
IDLE = 'IDLE';
|
|
48
|
+
RUNNING = 'RUNNING';
|
|
49
|
+
PAUSED = 'PAUSED';
|
|
50
|
+
COMPLETED = 'COMPLETED';
|
|
51
51
|
}
|
|
52
52
|
|
|
53
53
|
export class FWPriorityOrder {
|
|
@@ -91,17 +91,17 @@ export class FWLogType {
|
|
|
91
91
|
* HTTP请求类型
|
|
92
92
|
*/
|
|
93
93
|
export class FWHttpRequestType {
|
|
94
|
-
GET =
|
|
95
|
-
POST =
|
|
94
|
+
GET = 'GET';
|
|
95
|
+
POST = 'POST';
|
|
96
96
|
}
|
|
97
97
|
|
|
98
98
|
/**
|
|
99
99
|
* 动画机类型
|
|
100
100
|
*/
|
|
101
101
|
export class FWAnimationMachineType {
|
|
102
|
-
TWEEN =
|
|
103
|
-
SKELETON =
|
|
104
|
-
ANIMATION =
|
|
102
|
+
TWEEN = 'TWEEN';
|
|
103
|
+
SKELETON = 'SKELETON';
|
|
104
|
+
ANIMATION = 'ANIMATION';
|
|
105
105
|
}
|
|
106
106
|
|
|
107
107
|
export class FWVirtualScrollViewDirection {
|
|
@@ -127,23 +127,25 @@ export class FWScrollViewSelectedType {
|
|
|
127
127
|
}
|
|
128
128
|
|
|
129
129
|
export class FWLanguageAssetType {
|
|
130
|
-
LABEL =
|
|
131
|
-
SPRITE =
|
|
132
|
-
SKELETON =
|
|
130
|
+
LABEL = 'label';
|
|
131
|
+
SPRITE = 'sprite';
|
|
132
|
+
SKELETON = 'skeleton';
|
|
133
133
|
}
|
|
134
134
|
|
|
135
135
|
export class FWPromiseStatus {
|
|
136
|
-
PENDING =
|
|
137
|
-
FULFILLED =
|
|
138
|
-
REJECTED =
|
|
139
|
-
CANCELLED =
|
|
136
|
+
PENDING = 'pending';
|
|
137
|
+
FULFILLED = 'fulfilled';
|
|
138
|
+
REJECTED = 'rejected';
|
|
139
|
+
CANCELLED = 'cancelled';
|
|
140
140
|
}
|
|
141
141
|
|
|
142
142
|
export class FWLayerState {
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
143
|
+
LOADING = 'loading';
|
|
144
|
+
LOADED = 'loaded';
|
|
145
|
+
OPENING = 'opening';
|
|
146
|
+
OPENED = 'opened';
|
|
147
|
+
CLOSED = 'closed';
|
|
148
|
+
CLOSING = 'closing';
|
|
147
149
|
}
|
|
148
150
|
|
|
149
151
|
export class FWAudioType {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { FWManager } from
|
|
2
|
-
import { FWQueue } from
|
|
3
|
-
import { FrameworkBase } from
|
|
4
|
-
import { PerformanceMonitor } from
|
|
1
|
+
import { FWManager } from './FWManager';
|
|
2
|
+
import { FWQueue } from '../utils/FWQueue';
|
|
3
|
+
import { FrameworkBase } from '../FrameworkBase';
|
|
4
|
+
import { PerformanceMonitor } from '../expand/FWDecorator';
|
|
5
5
|
|
|
6
|
-
const ADD_EXTERNAL_REFERENCE: string =
|
|
6
|
+
const ADD_EXTERNAL_REFERENCE: string = 'addExternalReference';
|
|
7
7
|
|
|
8
8
|
export class FWLayerManager extends FWManager implements FW.LayerManager {
|
|
9
9
|
private resourceManager: FWLayerResourceManager;
|
|
@@ -13,54 +13,55 @@ export class FWLayerManager extends FWManager implements FW.LayerManager {
|
|
|
13
13
|
private stateManager: FWLayerStateManager;
|
|
14
14
|
private queueManager: FWLayerQueueManager;
|
|
15
15
|
private openManager: FWLayerOpenManager;
|
|
16
|
+
private debug: boolean;
|
|
16
17
|
|
|
17
18
|
public initialize(): void {
|
|
19
|
+
this.debug = false;
|
|
18
20
|
this.resourceManager = new FWLayerResourceManager();
|
|
19
21
|
this.dataManager = new FWLayerDataManager();
|
|
20
22
|
this.createManager = new FWLayerCreateManager();
|
|
21
23
|
this.stackManager = new FWLayerStackManager();
|
|
22
|
-
this.stateManager = new FWLayerStateManager();
|
|
23
24
|
this.queueManager = new FWLayerQueueManager();
|
|
24
|
-
|
|
25
|
+
this.stateManager = new FWLayerStateManager(this.debug);
|
|
25
26
|
this.openManager = new FWLayerOpenManager(
|
|
26
27
|
this.dataManager,
|
|
27
28
|
this.resourceManager,
|
|
28
29
|
this.createManager,
|
|
29
30
|
this.stackManager,
|
|
30
31
|
this.queueManager,
|
|
32
|
+
this.stateManager,
|
|
31
33
|
);
|
|
32
34
|
}
|
|
33
35
|
|
|
36
|
+
openDetailsLog() {
|
|
37
|
+
this.debug = true;
|
|
38
|
+
}
|
|
34
39
|
/**
|
|
35
40
|
* 异步打开Layer
|
|
36
41
|
*/
|
|
37
|
-
@PerformanceMonitor(
|
|
42
|
+
@PerformanceMonitor('openAsync')
|
|
38
43
|
async openAsync<Ctr extends FW.LayerController = FW.LayerController>(
|
|
39
44
|
data: FW.LayerOpenArgs,
|
|
40
45
|
): Promise<Ctr> {
|
|
46
|
+
if (this.debug) FW.Log.error('异步打开Layer -> 查看调用堆栈');
|
|
41
47
|
return this.openManager.openLayerAsync(data) as Promise<Ctr>;
|
|
42
48
|
}
|
|
43
49
|
|
|
44
50
|
/**
|
|
45
51
|
* 同步打开
|
|
46
52
|
*/
|
|
47
|
-
openSync<Ctr extends FW.LayerController = FW.LayerController>(
|
|
48
|
-
|
|
49
|
-
): Ctr {
|
|
53
|
+
openSync<Ctr extends FW.LayerController = FW.LayerController>(data: FW.LayerOpenArgs): Ctr {
|
|
54
|
+
if (this.debug) FW.Log.error('同步打开Layer -> 查看调用堆栈');
|
|
50
55
|
return this.openManager.openLayerSync(data) as Ctr;
|
|
51
56
|
}
|
|
52
57
|
|
|
53
58
|
/**
|
|
54
59
|
* 显示layer并恢复所有节点事件
|
|
55
60
|
*/
|
|
56
|
-
displayLayer<Ctr extends FW.LayerController = FW.LayerController>(
|
|
57
|
-
ctr: Ctr,
|
|
58
|
-
): Ctr {
|
|
61
|
+
displayLayer<Ctr extends FW.LayerController = FW.LayerController>(ctr: Ctr): Ctr {
|
|
59
62
|
const layerData = ctr.layerData;
|
|
60
63
|
|
|
61
|
-
if (
|
|
62
|
-
!this.dataManager.getLayerMap().has(ctr.layerData.controllerConstructor)
|
|
63
|
-
) {
|
|
64
|
+
if (!this.dataManager.getLayerMap().has(ctr.layerData.controllerConstructor)) {
|
|
64
65
|
FW.Log.warn(`display layer failed,layer name : ${layerData.layerName}`);
|
|
65
66
|
return;
|
|
66
67
|
}
|
|
@@ -80,13 +81,9 @@ export class FWLayerManager extends FWManager implements FW.LayerManager {
|
|
|
80
81
|
/**
|
|
81
82
|
* 隐藏layer并隐藏所有节点事件
|
|
82
83
|
*/
|
|
83
|
-
hideLayer<Ctr extends FW.LayerController = FW.LayerController>(
|
|
84
|
-
ctr: Ctr,
|
|
85
|
-
): Ctr {
|
|
84
|
+
hideLayer<Ctr extends FW.LayerController = FW.LayerController>(ctr: Ctr): Ctr {
|
|
86
85
|
const layerData = ctr.layerData;
|
|
87
|
-
if (
|
|
88
|
-
!this.dataManager.getLayerMap().has(ctr.layerData.controllerConstructor)
|
|
89
|
-
) {
|
|
86
|
+
if (!this.dataManager.getLayerMap().has(ctr.layerData.controllerConstructor)) {
|
|
90
87
|
FW.Log.warn(`hide layer failed,layer name : ${layerData.layerName}`);
|
|
91
88
|
return;
|
|
92
89
|
}
|
|
@@ -130,9 +127,7 @@ export class FWLayerManager extends FWManager implements FW.LayerManager {
|
|
|
130
127
|
for (let i = 0; i < count; i++) {
|
|
131
128
|
let layerData = this.stackManager.pop();
|
|
132
129
|
let ctr = layerData.controller;
|
|
133
|
-
if (
|
|
134
|
-
!this.dataManager.getLayerMap().has(layerData.controllerConstructor)
|
|
135
|
-
) {
|
|
130
|
+
if (!this.dataManager.getLayerMap().has(layerData.controllerConstructor)) {
|
|
136
131
|
return;
|
|
137
132
|
}
|
|
138
133
|
if (cc.isValid(ctr.layer?.node)) {
|
|
@@ -163,23 +158,33 @@ export class FWLayerManager extends FWManager implements FW.LayerManager {
|
|
|
163
158
|
/**
|
|
164
159
|
* 关闭layer
|
|
165
160
|
*/
|
|
166
|
-
async close<Ctr extends FW.LayerController = FW.LayerController>(
|
|
167
|
-
ctr: Ctr,
|
|
168
|
-
): Promise<Ctr> {
|
|
161
|
+
async close<Ctr extends FW.LayerController = FW.LayerController>(ctr: Ctr): Promise<Ctr> {
|
|
169
162
|
if (!ctr) return;
|
|
170
163
|
|
|
171
164
|
return FW.Entry.promiseMgr.execute(async (resolve, reject) => {
|
|
172
165
|
let layerData = ctr.layerData;
|
|
173
166
|
|
|
174
167
|
if (cc.isValid(ctr.layer?.node)) {
|
|
168
|
+
this.stateManager.setState(
|
|
169
|
+
ctr.layerData.controllerConstructor,
|
|
170
|
+
FW.SystemDefine.FWLayerState.CLOSING,
|
|
171
|
+
);
|
|
172
|
+
|
|
175
173
|
await ctr.onClose?.();
|
|
174
|
+
|
|
175
|
+
this.stateManager.setState(
|
|
176
|
+
ctr.layerData.controllerConstructor,
|
|
177
|
+
FW.SystemDefine.FWLayerState.CLOSED,
|
|
178
|
+
);
|
|
179
|
+
|
|
176
180
|
ctr.destroy?.();
|
|
181
|
+
|
|
177
182
|
if (ctr.autoRelease) {
|
|
178
183
|
FW.Entry.resMgr.releaseAsset(ctr.layerData.layerAssetProperty);
|
|
179
184
|
}
|
|
180
185
|
this.dataManager.notifyExternalRefUpdates(ctr.layerData);
|
|
181
186
|
}
|
|
182
|
-
|
|
187
|
+
this.stateManager.removeState(layerData?.controllerConstructor);
|
|
183
188
|
this.dataManager.removeFromMap(layerData?.controllerConstructor);
|
|
184
189
|
this.dataManager.removeFromRegistry(ctr.layerData?.controllerConstructor);
|
|
185
190
|
|
|
@@ -256,8 +261,7 @@ export class FWLayerData<T extends FW.LayerController = FW.LayerController>
|
|
|
256
261
|
class FWLayerDataManager {
|
|
257
262
|
private layerMap: Map<new () => FW.LayerController, FWLayerData> = new Map();
|
|
258
263
|
private layerRegistry: Set<new () => FW.LayerController> = new Set();
|
|
259
|
-
private layerControllerFactory: FWLayerControllerFactory =
|
|
260
|
-
new FWLayerControllerFactory();
|
|
264
|
+
private layerControllerFactory: FWLayerControllerFactory = new FWLayerControllerFactory();
|
|
261
265
|
/**
|
|
262
266
|
* 获取已存在的Layer
|
|
263
267
|
*/
|
|
@@ -385,7 +389,7 @@ class FWLayerDataManager {
|
|
|
385
389
|
try {
|
|
386
390
|
cb?.(null);
|
|
387
391
|
} catch (e) {
|
|
388
|
-
FW.Log.error(
|
|
392
|
+
FW.Log.error('External ref update callback error:', e);
|
|
389
393
|
}
|
|
390
394
|
});
|
|
391
395
|
layerData.externalReference.clear();
|
|
@@ -410,8 +414,7 @@ class FWLayerDataManager {
|
|
|
410
414
|
}
|
|
411
415
|
|
|
412
416
|
class FWLayerCreateManager {
|
|
413
|
-
private lifecycleManager: FWLayerLifecycleManager =
|
|
414
|
-
new FWLayerLifecycleManager();
|
|
417
|
+
private lifecycleManager: FWLayerLifecycleManager = new FWLayerLifecycleManager();
|
|
415
418
|
|
|
416
419
|
/**
|
|
417
420
|
* 创建Layer节点
|
|
@@ -464,6 +467,7 @@ class FWLayerOpenManager {
|
|
|
464
467
|
private createManager: FWLayerCreateManager,
|
|
465
468
|
private stackManager: FWLayerStackManager,
|
|
466
469
|
private queueManager: FWLayerQueueManager,
|
|
470
|
+
private stateManager: FWLayerStateManager,
|
|
467
471
|
) {}
|
|
468
472
|
|
|
469
473
|
/**
|
|
@@ -492,12 +496,7 @@ class FWLayerOpenManager {
|
|
|
492
496
|
return proxy as Ctr;
|
|
493
497
|
}
|
|
494
498
|
|
|
495
|
-
if (
|
|
496
|
-
this.queueManager.handlePopupQueue(
|
|
497
|
-
layerData,
|
|
498
|
-
this.dataManager.getLayerMap(),
|
|
499
|
-
)
|
|
500
|
-
) {
|
|
499
|
+
if (this.queueManager.handlePopupQueue(layerData, this.dataManager.getLayerMap())) {
|
|
501
500
|
return undefined;
|
|
502
501
|
}
|
|
503
502
|
|
|
@@ -506,9 +505,7 @@ class FWLayerOpenManager {
|
|
|
506
505
|
return this.asyncGenerationLayer(layerData, data);
|
|
507
506
|
}
|
|
508
507
|
|
|
509
|
-
openLayerSync<Ctr extends FW.LayerController = FW.LayerController>(
|
|
510
|
-
data: FW.LayerOpenArgs,
|
|
511
|
-
): Ctr {
|
|
508
|
+
openLayerSync<Ctr extends FW.LayerController = FW.LayerController>(data: FW.LayerOpenArgs): Ctr {
|
|
512
509
|
if (!this.validateOpenData(data)) {
|
|
513
510
|
return undefined;
|
|
514
511
|
}
|
|
@@ -529,12 +526,7 @@ class FWLayerOpenManager {
|
|
|
529
526
|
return proxy as Ctr;
|
|
530
527
|
}
|
|
531
528
|
|
|
532
|
-
if (
|
|
533
|
-
this.queueManager.handlePopupQueue(
|
|
534
|
-
layerData,
|
|
535
|
-
this.dataManager.getLayerMap(),
|
|
536
|
-
)
|
|
537
|
-
) {
|
|
529
|
+
if (this.queueManager.handlePopupQueue(layerData, this.dataManager.getLayerMap())) {
|
|
538
530
|
return undefined;
|
|
539
531
|
}
|
|
540
532
|
|
|
@@ -557,16 +549,34 @@ class FWLayerOpenManager {
|
|
|
557
549
|
/**
|
|
558
550
|
* 异步生成Layer
|
|
559
551
|
*/
|
|
560
|
-
private async asyncGenerationLayer<
|
|
561
|
-
|
|
562
|
-
|
|
552
|
+
private async asyncGenerationLayer<Ctr extends FW.LayerController = FW.LayerController>(
|
|
553
|
+
layerData: FWLayerData,
|
|
554
|
+
data: FW.LayerOpenArgs,
|
|
555
|
+
): Promise<Ctr> {
|
|
563
556
|
try {
|
|
557
|
+
this.stateManager.setState(
|
|
558
|
+
layerData.controllerConstructor,
|
|
559
|
+
FW.SystemDefine.FWLayerState.LOADING,
|
|
560
|
+
);
|
|
564
561
|
const res = await this.resourceManager.loadLayerAsync(layerData);
|
|
562
|
+
|
|
563
|
+
this.stateManager.setState(
|
|
564
|
+
layerData.controllerConstructor,
|
|
565
|
+
FW.SystemDefine.FWLayerState.OPENING,
|
|
566
|
+
);
|
|
565
567
|
const ctr = this.createLayer(layerData, res, data) as Ctr;
|
|
568
|
+
|
|
566
569
|
this.dataManager.removeFromRegistry(layerData.controllerConstructor);
|
|
570
|
+
|
|
571
|
+
this.stateManager.setState(
|
|
572
|
+
layerData.controllerConstructor,
|
|
573
|
+
FW.SystemDefine.FWLayerState.OPENED,
|
|
574
|
+
);
|
|
575
|
+
|
|
567
576
|
return ctr;
|
|
568
577
|
} catch (e) {
|
|
569
578
|
FW.Log.error(`asyncGenerationLayer failed:`, e);
|
|
579
|
+
this.stateManager.removeState(layerData.controllerConstructor);
|
|
570
580
|
this.dataManager.clearFailedLayer(layerData);
|
|
571
581
|
throw e;
|
|
572
582
|
}
|
|
@@ -575,16 +585,27 @@ class FWLayerOpenManager {
|
|
|
575
585
|
/**
|
|
576
586
|
* 同步创建Layer
|
|
577
587
|
*/
|
|
578
|
-
private syncGenerationLayer<
|
|
579
|
-
|
|
580
|
-
|
|
588
|
+
private syncGenerationLayer<Ctr extends FW.LayerController = FW.LayerController>(
|
|
589
|
+
layerData: FWLayerData,
|
|
590
|
+
data: FW.LayerOpenArgs,
|
|
591
|
+
): Ctr {
|
|
581
592
|
try {
|
|
593
|
+
this.stateManager.setState(
|
|
594
|
+
layerData.controllerConstructor,
|
|
595
|
+
FW.SystemDefine.FWLayerState.OPENING,
|
|
596
|
+
);
|
|
582
597
|
const res = this.resourceManager.loadLayerSync(layerData);
|
|
583
598
|
const ctr = this.createLayer(layerData, res, data) as Ctr;
|
|
584
|
-
|
|
599
|
+
|
|
600
|
+
this.stateManager.setState(
|
|
601
|
+
layerData.controllerConstructor,
|
|
602
|
+
FW.SystemDefine.FWLayerState.OPENED,
|
|
603
|
+
);
|
|
604
|
+
|
|
585
605
|
return ctr;
|
|
586
606
|
} catch (e) {
|
|
587
607
|
FW.Log.error(`syncGenerationLayer failed:`, e);
|
|
608
|
+
this.dataManager.removeFromRegistry(layerData.controllerConstructor);
|
|
588
609
|
this.dataManager.clearFailedLayer(layerData);
|
|
589
610
|
return undefined;
|
|
590
611
|
}
|
|
@@ -613,29 +634,22 @@ class FWLayerOpenManager {
|
|
|
613
634
|
|
|
614
635
|
this.createManager.setupLayerLifecycle(layer, layerData.controller);
|
|
615
636
|
|
|
616
|
-
if (
|
|
617
|
-
layerData.controller.layerType !== FW.SystemDefine.FWLayerType.PERMANENT
|
|
618
|
-
) {
|
|
637
|
+
if (layerData.controller.layerType !== FW.SystemDefine.FWLayerType.PERMANENT) {
|
|
619
638
|
this.stackManager.push(layerData);
|
|
620
639
|
}
|
|
621
640
|
|
|
622
641
|
this.dataManager.removeFromRegistry(layerData.controllerConstructor);
|
|
623
642
|
|
|
624
|
-
layerData.controllerProxy =
|
|
625
|
-
this.dataManager.createControllerProxy(layerData);
|
|
643
|
+
layerData.controllerProxy = this.dataManager.createControllerProxy(layerData);
|
|
626
644
|
|
|
627
645
|
return layerData.controllerProxy as Ctr;
|
|
628
646
|
}
|
|
629
647
|
}
|
|
630
648
|
|
|
631
649
|
class FWLayerResourceManager {
|
|
632
|
-
async loadLayerAsync(
|
|
633
|
-
layerData: FWLayerData,
|
|
634
|
-
): Promise<{ asset: cc.Prefab; uuid: string }> {
|
|
650
|
+
async loadLayerAsync(layerData: FWLayerData): Promise<{ asset: cc.Prefab; uuid: string }> {
|
|
635
651
|
try {
|
|
636
|
-
const res = await FW.Entry.resMgr.loadAssetData<cc.Prefab>(
|
|
637
|
-
layerData.layerAssetProperty,
|
|
638
|
-
);
|
|
652
|
+
const res = await FW.Entry.resMgr.loadAssetData<cc.Prefab>(layerData.layerAssetProperty);
|
|
639
653
|
if (!res) return undefined;
|
|
640
654
|
res.user = layerData.layerName;
|
|
641
655
|
res.autoRelease = layerData.controller.autoRelease;
|
|
@@ -650,9 +664,7 @@ class FWLayerResourceManager {
|
|
|
650
664
|
loadLayerSync(layerData: FWLayerData): { asset: cc.Prefab; uuid: string } {
|
|
651
665
|
layerData.layerAssetProperty.bundle =
|
|
652
666
|
layerData.layerAssetProperty.bundle || FW.Entry.bundleName;
|
|
653
|
-
const res = FW.Entry.resMgr.getAssetData<cc.Prefab>(
|
|
654
|
-
layerData.layerAssetProperty,
|
|
655
|
-
);
|
|
667
|
+
const res = FW.Entry.resMgr.getAssetData<cc.Prefab>(layerData.layerAssetProperty);
|
|
656
668
|
res.user = layerData.layerName;
|
|
657
669
|
res.autoRelease = layerData.controller.autoRelease;
|
|
658
670
|
res.dependentBundle = layerData.controller.layerAssetProperty.bundle;
|
|
@@ -664,9 +676,7 @@ class FWLayerStackManager {
|
|
|
664
676
|
private layerStack: FWLayerData[] = [];
|
|
665
677
|
|
|
666
678
|
push(layerData: FWLayerData): void {
|
|
667
|
-
if (
|
|
668
|
-
layerData.controller.layerType !== FW.SystemDefine.FWLayerType.PERMANENT
|
|
669
|
-
) {
|
|
679
|
+
if (layerData.controller.layerType !== FW.SystemDefine.FWLayerType.PERMANENT) {
|
|
670
680
|
this.layerStack.push(layerData);
|
|
671
681
|
}
|
|
672
682
|
}
|
|
@@ -676,9 +686,7 @@ class FWLayerStackManager {
|
|
|
676
686
|
}
|
|
677
687
|
|
|
678
688
|
remove(layerData: FWLayerData): void {
|
|
679
|
-
const index = this.layerStack.findIndex(
|
|
680
|
-
(v) => v.controller === layerData.controller,
|
|
681
|
-
);
|
|
689
|
+
const index = this.layerStack.findIndex((v) => v.controller === layerData.controller);
|
|
682
690
|
if (index > -1) {
|
|
683
691
|
this.layerStack.splice(index, 1);
|
|
684
692
|
}
|
|
@@ -694,21 +702,14 @@ class FWLayerStackManager {
|
|
|
694
702
|
}
|
|
695
703
|
|
|
696
704
|
class FWLayerStateManager {
|
|
697
|
-
private layerStates = new Map<
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
setState(
|
|
703
|
-
ctrType: new () => FW.LayerController,
|
|
704
|
-
state: FW.SystemDefine.FWLayerState,
|
|
705
|
-
): void {
|
|
705
|
+
private layerStates = new Map<new () => FW.LayerController, FW.SystemDefine.FWLayerState>();
|
|
706
|
+
constructor(private readonly debug: boolean) {}
|
|
707
|
+
setState(ctrType: new () => FW.LayerController, state: FW.SystemDefine.FWLayerState): void {
|
|
708
|
+
if (this.debug) FW.Log.debug(`setLayerState: ${cc.js.getClassName(ctrType)} ${state}`);
|
|
706
709
|
this.layerStates.set(ctrType, state);
|
|
707
710
|
}
|
|
708
711
|
|
|
709
|
-
getState(
|
|
710
|
-
ctrType: new () => FW.LayerController,
|
|
711
|
-
): FW.SystemDefine.FWLayerState {
|
|
712
|
+
getState(ctrType: new () => FW.LayerController): FW.SystemDefine.FWLayerState {
|
|
712
713
|
return this.layerStates.get(ctrType) || FW.SystemDefine.FWLayerState.CLOSED;
|
|
713
714
|
}
|
|
714
715
|
|
|
@@ -725,6 +726,7 @@ class FWLayerStateManager {
|
|
|
725
726
|
}
|
|
726
727
|
|
|
727
728
|
removeState(ctrType: new () => FW.LayerController): void {
|
|
729
|
+
if (this.debug) FW.Log.debug(`removeLayerState: ${cc.js.getClassName(ctrType)}`);
|
|
728
730
|
this.layerStates.delete(ctrType);
|
|
729
731
|
}
|
|
730
732
|
|
|
@@ -740,9 +742,7 @@ class FWLayerQueueManager {
|
|
|
740
742
|
layerData: FWLayerData,
|
|
741
743
|
layerMap: Map<new () => FW.LayerController, FWLayerData>,
|
|
742
744
|
): boolean {
|
|
743
|
-
if (
|
|
744
|
-
layerData.controller.layerType === FW.SystemDefine.FWLayerType.POPUP_QUEUE
|
|
745
|
-
) {
|
|
745
|
+
if (layerData.controller.layerType === FW.SystemDefine.FWLayerType.POPUP_QUEUE) {
|
|
746
746
|
const hasNonPermanentLayers = Array.from(layerMap.values()).some(
|
|
747
747
|
(value) => value.layerType === FW.SystemDefine.FWLayerType.POPUP_QUEUE,
|
|
748
748
|
);
|
|
@@ -782,44 +782,44 @@ class FWLayerQueueManager {
|
|
|
782
782
|
|
|
783
783
|
class FWLayerLifecycleManager {
|
|
784
784
|
setupLifecycleHooks(layer: FW.Layer, ctr: FW.LayerController): void {
|
|
785
|
-
const originalOnLoad = layer[
|
|
786
|
-
layer[
|
|
785
|
+
const originalOnLoad = layer['onLoad'];
|
|
786
|
+
layer['onLoad'] = function () {
|
|
787
787
|
originalOnLoad?.call(this);
|
|
788
788
|
ctr.onLoad?.();
|
|
789
789
|
};
|
|
790
790
|
|
|
791
|
-
const originalStart = layer[
|
|
792
|
-
layer[
|
|
791
|
+
const originalStart = layer['start'];
|
|
792
|
+
layer['start'] = function () {
|
|
793
793
|
originalStart?.call(this);
|
|
794
794
|
ctr.onStart?.();
|
|
795
795
|
};
|
|
796
796
|
|
|
797
|
-
const originalOnEnable = layer[
|
|
798
|
-
layer[
|
|
797
|
+
const originalOnEnable = layer['onEnable'];
|
|
798
|
+
layer['onEnable'] = function () {
|
|
799
799
|
originalOnEnable?.call(this);
|
|
800
800
|
ctr.onEnable?.();
|
|
801
801
|
};
|
|
802
802
|
|
|
803
|
-
const originalOnDisable = layer[
|
|
804
|
-
layer[
|
|
803
|
+
const originalOnDisable = layer['onDisable'];
|
|
804
|
+
layer['onDisable'] = function () {
|
|
805
805
|
originalOnDisable?.call(this);
|
|
806
806
|
ctr.onDisable?.();
|
|
807
807
|
};
|
|
808
808
|
|
|
809
|
-
const originalOnDestroy = layer[
|
|
810
|
-
layer[
|
|
809
|
+
const originalOnDestroy = layer['onDestroy'];
|
|
810
|
+
layer['onDestroy'] = function () {
|
|
811
811
|
originalOnDestroy?.call(this);
|
|
812
812
|
ctr.onDestroy?.();
|
|
813
813
|
};
|
|
814
814
|
|
|
815
|
-
const originalUpdate = layer[
|
|
816
|
-
layer[
|
|
815
|
+
const originalUpdate = layer['update'];
|
|
816
|
+
layer['update'] = function (dt: number) {
|
|
817
817
|
originalUpdate?.call(this, dt);
|
|
818
818
|
ctr.onUpdate?.(dt);
|
|
819
819
|
};
|
|
820
820
|
|
|
821
|
-
const originalLateUpdate = layer[
|
|
822
|
-
layer[
|
|
821
|
+
const originalLateUpdate = layer['lateUpdate'];
|
|
822
|
+
layer['lateUpdate'] = function () {
|
|
823
823
|
originalLateUpdate?.call(this);
|
|
824
824
|
ctr.onLateUpdate?.();
|
|
825
825
|
};
|
|
@@ -830,9 +830,7 @@ class FWLayerControllerFactory {
|
|
|
830
830
|
/**
|
|
831
831
|
* 创建并初始化 LayerController
|
|
832
832
|
*/
|
|
833
|
-
createController<Ctr extends FW.LayerController = FW.LayerController>(
|
|
834
|
-
type: new () => Ctr,
|
|
835
|
-
): Ctr {
|
|
833
|
+
createController<Ctr extends FW.LayerController = FW.LayerController>(type: new () => Ctr): Ctr {
|
|
836
834
|
const ctr = new type();
|
|
837
835
|
|
|
838
836
|
ctr.initializeDependencies?.();
|
package/package.json
CHANGED
package/types/FW.d.ts
CHANGED