@ives_xxz/framework 2.1.34 → 2.1.35
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/manager/FWLayerManager.ts +123 -60
- package/package.json +4 -2
- package/types/FW.d.ts +4 -0
|
@@ -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;
|
|
@@ -22,7 +22,7 @@ export class FWLayerManager extends FWManager implements FW.LayerManager {
|
|
|
22
22
|
this.createManager = new FWLayerCreateManager();
|
|
23
23
|
this.stackManager = new FWLayerStackManager();
|
|
24
24
|
this.queueManager = new FWLayerQueueManager();
|
|
25
|
-
this.stateManager = new FWLayerStateManager(
|
|
25
|
+
this.stateManager = new FWLayerStateManager();
|
|
26
26
|
this.openManager = new FWLayerOpenManager(
|
|
27
27
|
this.dataManager,
|
|
28
28
|
this.resourceManager,
|
|
@@ -33,35 +33,49 @@ export class FWLayerManager extends FWManager implements FW.LayerManager {
|
|
|
33
33
|
);
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
-
|
|
36
|
+
openDebug() {
|
|
37
37
|
this.debug = true;
|
|
38
38
|
}
|
|
39
|
+
|
|
40
|
+
isDebug() {
|
|
41
|
+
return this.debug;
|
|
42
|
+
}
|
|
39
43
|
/**
|
|
40
44
|
* 异步打开Layer
|
|
41
45
|
*/
|
|
42
|
-
@PerformanceMonitor(
|
|
46
|
+
@PerformanceMonitor("openAsync")
|
|
43
47
|
async openAsync<Ctr extends FW.LayerController = FW.LayerController>(
|
|
44
48
|
data: FW.LayerOpenArgs,
|
|
45
49
|
): Promise<Ctr> {
|
|
46
|
-
if (this.debug)
|
|
50
|
+
if (this.debug) {
|
|
51
|
+
FW.Log.error(`异步打开Layer ->`, cc.js.getClassName(data.type));
|
|
52
|
+
}
|
|
47
53
|
return this.openManager.openLayerAsync(data) as Promise<Ctr>;
|
|
48
54
|
}
|
|
49
55
|
|
|
50
56
|
/**
|
|
51
57
|
* 同步打开
|
|
52
58
|
*/
|
|
53
|
-
openSync<Ctr extends FW.LayerController = FW.LayerController>(
|
|
54
|
-
|
|
59
|
+
openSync<Ctr extends FW.LayerController = FW.LayerController>(
|
|
60
|
+
data: FW.LayerOpenArgs,
|
|
61
|
+
): Ctr {
|
|
62
|
+
if (this.debug) {
|
|
63
|
+
FW.Log.error(`同步打开Layer ->`, cc.js.getClassName(data.type));
|
|
64
|
+
}
|
|
55
65
|
return this.openManager.openLayerSync(data) as Ctr;
|
|
56
66
|
}
|
|
57
67
|
|
|
58
68
|
/**
|
|
59
69
|
* 显示layer并恢复所有节点事件
|
|
60
70
|
*/
|
|
61
|
-
displayLayer<Ctr extends FW.LayerController = FW.LayerController>(
|
|
71
|
+
displayLayer<Ctr extends FW.LayerController = FW.LayerController>(
|
|
72
|
+
ctr: Ctr,
|
|
73
|
+
): Ctr {
|
|
62
74
|
const layerData = ctr.layerData;
|
|
63
75
|
|
|
64
|
-
if (
|
|
76
|
+
if (
|
|
77
|
+
!this.dataManager.getLayerMap().has(ctr.layerData.controllerConstructor)
|
|
78
|
+
) {
|
|
65
79
|
FW.Log.warn(`display layer failed,layer name : ${layerData.layerName}`);
|
|
66
80
|
return;
|
|
67
81
|
}
|
|
@@ -81,9 +95,13 @@ export class FWLayerManager extends FWManager implements FW.LayerManager {
|
|
|
81
95
|
/**
|
|
82
96
|
* 隐藏layer并隐藏所有节点事件
|
|
83
97
|
*/
|
|
84
|
-
hideLayer<Ctr extends FW.LayerController = FW.LayerController>(
|
|
98
|
+
hideLayer<Ctr extends FW.LayerController = FW.LayerController>(
|
|
99
|
+
ctr: Ctr,
|
|
100
|
+
): Ctr {
|
|
85
101
|
const layerData = ctr.layerData;
|
|
86
|
-
if (
|
|
102
|
+
if (
|
|
103
|
+
!this.dataManager.getLayerMap().has(ctr.layerData.controllerConstructor)
|
|
104
|
+
) {
|
|
87
105
|
FW.Log.warn(`hide layer failed,layer name : ${layerData.layerName}`);
|
|
88
106
|
return;
|
|
89
107
|
}
|
|
@@ -127,7 +145,9 @@ export class FWLayerManager extends FWManager implements FW.LayerManager {
|
|
|
127
145
|
for (let i = 0; i < count; i++) {
|
|
128
146
|
let layerData = this.stackManager.pop();
|
|
129
147
|
let ctr = layerData.controller;
|
|
130
|
-
if (
|
|
148
|
+
if (
|
|
149
|
+
!this.dataManager.getLayerMap().has(layerData.controllerConstructor)
|
|
150
|
+
) {
|
|
131
151
|
return;
|
|
132
152
|
}
|
|
133
153
|
if (cc.isValid(ctr.layer?.node)) {
|
|
@@ -158,7 +178,9 @@ export class FWLayerManager extends FWManager implements FW.LayerManager {
|
|
|
158
178
|
/**
|
|
159
179
|
* 关闭layer
|
|
160
180
|
*/
|
|
161
|
-
async close<Ctr extends FW.LayerController = FW.LayerController>(
|
|
181
|
+
async close<Ctr extends FW.LayerController = FW.LayerController>(
|
|
182
|
+
ctr: Ctr,
|
|
183
|
+
): Promise<Ctr> {
|
|
162
184
|
if (!ctr) return;
|
|
163
185
|
|
|
164
186
|
return FW.Entry.promiseMgr.execute(async (resolve, reject) => {
|
|
@@ -261,7 +283,8 @@ export class FWLayerData<T extends FW.LayerController = FW.LayerController>
|
|
|
261
283
|
class FWLayerDataManager {
|
|
262
284
|
private layerMap: Map<new () => FW.LayerController, FWLayerData> = new Map();
|
|
263
285
|
private layerRegistry: Set<new () => FW.LayerController> = new Set();
|
|
264
|
-
private layerControllerFactory: FWLayerControllerFactory =
|
|
286
|
+
private layerControllerFactory: FWLayerControllerFactory =
|
|
287
|
+
new FWLayerControllerFactory();
|
|
265
288
|
/**
|
|
266
289
|
* 获取已存在的Layer
|
|
267
290
|
*/
|
|
@@ -389,7 +412,7 @@ class FWLayerDataManager {
|
|
|
389
412
|
try {
|
|
390
413
|
cb?.(null);
|
|
391
414
|
} catch (e) {
|
|
392
|
-
FW.Log.error(
|
|
415
|
+
FW.Log.error("External ref update callback error:", e);
|
|
393
416
|
}
|
|
394
417
|
});
|
|
395
418
|
layerData.externalReference.clear();
|
|
@@ -414,7 +437,8 @@ class FWLayerDataManager {
|
|
|
414
437
|
}
|
|
415
438
|
|
|
416
439
|
class FWLayerCreateManager {
|
|
417
|
-
private lifecycleManager: FWLayerLifecycleManager =
|
|
440
|
+
private lifecycleManager: FWLayerLifecycleManager =
|
|
441
|
+
new FWLayerLifecycleManager();
|
|
418
442
|
|
|
419
443
|
/**
|
|
420
444
|
* 创建Layer节点
|
|
@@ -496,7 +520,12 @@ class FWLayerOpenManager {
|
|
|
496
520
|
return proxy as Ctr;
|
|
497
521
|
}
|
|
498
522
|
|
|
499
|
-
if (
|
|
523
|
+
if (
|
|
524
|
+
this.queueManager.handlePopupQueue(
|
|
525
|
+
layerData,
|
|
526
|
+
this.dataManager.getLayerMap(),
|
|
527
|
+
)
|
|
528
|
+
) {
|
|
500
529
|
return undefined;
|
|
501
530
|
}
|
|
502
531
|
|
|
@@ -505,7 +534,9 @@ class FWLayerOpenManager {
|
|
|
505
534
|
return this.asyncGenerationLayer(layerData, data);
|
|
506
535
|
}
|
|
507
536
|
|
|
508
|
-
openLayerSync<Ctr extends FW.LayerController = FW.LayerController>(
|
|
537
|
+
openLayerSync<Ctr extends FW.LayerController = FW.LayerController>(
|
|
538
|
+
data: FW.LayerOpenArgs,
|
|
539
|
+
): Ctr {
|
|
509
540
|
if (!this.validateOpenData(data)) {
|
|
510
541
|
return undefined;
|
|
511
542
|
}
|
|
@@ -526,7 +557,12 @@ class FWLayerOpenManager {
|
|
|
526
557
|
return proxy as Ctr;
|
|
527
558
|
}
|
|
528
559
|
|
|
529
|
-
if (
|
|
560
|
+
if (
|
|
561
|
+
this.queueManager.handlePopupQueue(
|
|
562
|
+
layerData,
|
|
563
|
+
this.dataManager.getLayerMap(),
|
|
564
|
+
)
|
|
565
|
+
) {
|
|
530
566
|
return undefined;
|
|
531
567
|
}
|
|
532
568
|
|
|
@@ -549,10 +585,9 @@ class FWLayerOpenManager {
|
|
|
549
585
|
/**
|
|
550
586
|
* 异步生成Layer
|
|
551
587
|
*/
|
|
552
|
-
private async asyncGenerationLayer<
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
): Promise<Ctr> {
|
|
588
|
+
private async asyncGenerationLayer<
|
|
589
|
+
Ctr extends FW.LayerController = FW.LayerController,
|
|
590
|
+
>(layerData: FWLayerData, data: FW.LayerOpenArgs): Promise<Ctr> {
|
|
556
591
|
try {
|
|
557
592
|
this.stateManager.setState(
|
|
558
593
|
layerData.controllerConstructor,
|
|
@@ -585,10 +620,9 @@ class FWLayerOpenManager {
|
|
|
585
620
|
/**
|
|
586
621
|
* 同步创建Layer
|
|
587
622
|
*/
|
|
588
|
-
private syncGenerationLayer<
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
): Ctr {
|
|
623
|
+
private syncGenerationLayer<
|
|
624
|
+
Ctr extends FW.LayerController = FW.LayerController,
|
|
625
|
+
>(layerData: FWLayerData, data: FW.LayerOpenArgs): Ctr {
|
|
592
626
|
try {
|
|
593
627
|
this.stateManager.setState(
|
|
594
628
|
layerData.controllerConstructor,
|
|
@@ -634,22 +668,29 @@ class FWLayerOpenManager {
|
|
|
634
668
|
|
|
635
669
|
this.createManager.setupLayerLifecycle(layer, layerData.controller);
|
|
636
670
|
|
|
637
|
-
if (
|
|
671
|
+
if (
|
|
672
|
+
layerData.controller.layerType !== FW.SystemDefine.FWLayerType.PERMANENT
|
|
673
|
+
) {
|
|
638
674
|
this.stackManager.push(layerData);
|
|
639
675
|
}
|
|
640
676
|
|
|
641
677
|
this.dataManager.removeFromRegistry(layerData.controllerConstructor);
|
|
642
678
|
|
|
643
|
-
layerData.controllerProxy =
|
|
679
|
+
layerData.controllerProxy =
|
|
680
|
+
this.dataManager.createControllerProxy(layerData);
|
|
644
681
|
|
|
645
682
|
return layerData.controllerProxy as Ctr;
|
|
646
683
|
}
|
|
647
684
|
}
|
|
648
685
|
|
|
649
686
|
class FWLayerResourceManager {
|
|
650
|
-
async loadLayerAsync(
|
|
687
|
+
async loadLayerAsync(
|
|
688
|
+
layerData: FWLayerData,
|
|
689
|
+
): Promise<{ asset: cc.Prefab; uuid: string }> {
|
|
651
690
|
try {
|
|
652
|
-
const res = await FW.Entry.resMgr.loadAssetData<cc.Prefab>(
|
|
691
|
+
const res = await FW.Entry.resMgr.loadAssetData<cc.Prefab>(
|
|
692
|
+
layerData.layerAssetProperty,
|
|
693
|
+
);
|
|
653
694
|
if (!res) return undefined;
|
|
654
695
|
res.user = layerData.layerName;
|
|
655
696
|
res.autoRelease = layerData.controller.autoRelease;
|
|
@@ -664,7 +705,9 @@ class FWLayerResourceManager {
|
|
|
664
705
|
loadLayerSync(layerData: FWLayerData): { asset: cc.Prefab; uuid: string } {
|
|
665
706
|
layerData.layerAssetProperty.bundle =
|
|
666
707
|
layerData.layerAssetProperty.bundle || FW.Entry.bundleName;
|
|
667
|
-
const res = FW.Entry.resMgr.getAssetData<cc.Prefab>(
|
|
708
|
+
const res = FW.Entry.resMgr.getAssetData<cc.Prefab>(
|
|
709
|
+
layerData.layerAssetProperty,
|
|
710
|
+
);
|
|
668
711
|
res.user = layerData.layerName;
|
|
669
712
|
res.autoRelease = layerData.controller.autoRelease;
|
|
670
713
|
res.dependentBundle = layerData.controller.layerAssetProperty.bundle;
|
|
@@ -676,7 +719,9 @@ class FWLayerStackManager {
|
|
|
676
719
|
private layerStack: FWLayerData[] = [];
|
|
677
720
|
|
|
678
721
|
push(layerData: FWLayerData): void {
|
|
679
|
-
if (
|
|
722
|
+
if (
|
|
723
|
+
layerData.controller.layerType !== FW.SystemDefine.FWLayerType.PERMANENT
|
|
724
|
+
) {
|
|
680
725
|
this.layerStack.push(layerData);
|
|
681
726
|
}
|
|
682
727
|
}
|
|
@@ -686,7 +731,9 @@ class FWLayerStackManager {
|
|
|
686
731
|
}
|
|
687
732
|
|
|
688
733
|
remove(layerData: FWLayerData): void {
|
|
689
|
-
const index = this.layerStack.findIndex(
|
|
734
|
+
const index = this.layerStack.findIndex(
|
|
735
|
+
(v) => v.controller === layerData.controller,
|
|
736
|
+
);
|
|
690
737
|
if (index > -1) {
|
|
691
738
|
this.layerStack.splice(index, 1);
|
|
692
739
|
}
|
|
@@ -702,14 +749,24 @@ class FWLayerStackManager {
|
|
|
702
749
|
}
|
|
703
750
|
|
|
704
751
|
class FWLayerStateManager {
|
|
705
|
-
private layerStates = new Map<
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
752
|
+
private layerStates = new Map<
|
|
753
|
+
new () => FW.LayerController,
|
|
754
|
+
FW.SystemDefine.FWLayerState
|
|
755
|
+
>();
|
|
756
|
+
constructor() {}
|
|
757
|
+
setState(
|
|
758
|
+
ctrType: new () => FW.LayerController,
|
|
759
|
+
state: FW.SystemDefine.FWLayerState,
|
|
760
|
+
): void {
|
|
761
|
+
if (FW.Entry.layerMgr.isDebug()) {
|
|
762
|
+
FW.Log.debug(`${cc.js.getClassName(ctrType)}->更新状态${state}`);
|
|
763
|
+
}
|
|
709
764
|
this.layerStates.set(ctrType, state);
|
|
710
765
|
}
|
|
711
766
|
|
|
712
|
-
getState(
|
|
767
|
+
getState(
|
|
768
|
+
ctrType: new () => FW.LayerController,
|
|
769
|
+
): FW.SystemDefine.FWLayerState {
|
|
713
770
|
return this.layerStates.get(ctrType) || FW.SystemDefine.FWLayerState.CLOSED;
|
|
714
771
|
}
|
|
715
772
|
|
|
@@ -726,7 +783,9 @@ class FWLayerStateManager {
|
|
|
726
783
|
}
|
|
727
784
|
|
|
728
785
|
removeState(ctrType: new () => FW.LayerController): void {
|
|
729
|
-
if (
|
|
786
|
+
if (FW.Entry.layerMgr.isDebug()) {
|
|
787
|
+
FW.Log.debug(`${cc.js.getClassName(ctrType)}->移除状态`);
|
|
788
|
+
}
|
|
730
789
|
this.layerStates.delete(ctrType);
|
|
731
790
|
}
|
|
732
791
|
|
|
@@ -742,7 +801,9 @@ class FWLayerQueueManager {
|
|
|
742
801
|
layerData: FWLayerData,
|
|
743
802
|
layerMap: Map<new () => FW.LayerController, FWLayerData>,
|
|
744
803
|
): boolean {
|
|
745
|
-
if (
|
|
804
|
+
if (
|
|
805
|
+
layerData.controller.layerType === FW.SystemDefine.FWLayerType.POPUP_QUEUE
|
|
806
|
+
) {
|
|
746
807
|
const hasNonPermanentLayers = Array.from(layerMap.values()).some(
|
|
747
808
|
(value) => value.layerType === FW.SystemDefine.FWLayerType.POPUP_QUEUE,
|
|
748
809
|
);
|
|
@@ -782,44 +843,44 @@ class FWLayerQueueManager {
|
|
|
782
843
|
|
|
783
844
|
class FWLayerLifecycleManager {
|
|
784
845
|
setupLifecycleHooks(layer: FW.Layer, ctr: FW.LayerController): void {
|
|
785
|
-
const originalOnLoad = layer[
|
|
786
|
-
layer[
|
|
846
|
+
const originalOnLoad = layer["onLoad"];
|
|
847
|
+
layer["onLoad"] = function () {
|
|
787
848
|
originalOnLoad?.call(this);
|
|
788
849
|
ctr.onLoad?.();
|
|
789
850
|
};
|
|
790
851
|
|
|
791
|
-
const originalStart = layer[
|
|
792
|
-
layer[
|
|
852
|
+
const originalStart = layer["start"];
|
|
853
|
+
layer["start"] = function () {
|
|
793
854
|
originalStart?.call(this);
|
|
794
855
|
ctr.onStart?.();
|
|
795
856
|
};
|
|
796
857
|
|
|
797
|
-
const originalOnEnable = layer[
|
|
798
|
-
layer[
|
|
858
|
+
const originalOnEnable = layer["onEnable"];
|
|
859
|
+
layer["onEnable"] = function () {
|
|
799
860
|
originalOnEnable?.call(this);
|
|
800
861
|
ctr.onEnable?.();
|
|
801
862
|
};
|
|
802
863
|
|
|
803
|
-
const originalOnDisable = layer[
|
|
804
|
-
layer[
|
|
864
|
+
const originalOnDisable = layer["onDisable"];
|
|
865
|
+
layer["onDisable"] = function () {
|
|
805
866
|
originalOnDisable?.call(this);
|
|
806
867
|
ctr.onDisable?.();
|
|
807
868
|
};
|
|
808
869
|
|
|
809
|
-
const originalOnDestroy = layer[
|
|
810
|
-
layer[
|
|
870
|
+
const originalOnDestroy = layer["onDestroy"];
|
|
871
|
+
layer["onDestroy"] = function () {
|
|
811
872
|
originalOnDestroy?.call(this);
|
|
812
873
|
ctr.onDestroy?.();
|
|
813
874
|
};
|
|
814
875
|
|
|
815
|
-
const originalUpdate = layer[
|
|
816
|
-
layer[
|
|
876
|
+
const originalUpdate = layer["update"];
|
|
877
|
+
layer["update"] = function (dt: number) {
|
|
817
878
|
originalUpdate?.call(this, dt);
|
|
818
879
|
ctr.onUpdate?.(dt);
|
|
819
880
|
};
|
|
820
881
|
|
|
821
|
-
const originalLateUpdate = layer[
|
|
822
|
-
layer[
|
|
882
|
+
const originalLateUpdate = layer["lateUpdate"];
|
|
883
|
+
layer["lateUpdate"] = function () {
|
|
823
884
|
originalLateUpdate?.call(this);
|
|
824
885
|
ctr.onLateUpdate?.();
|
|
825
886
|
};
|
|
@@ -830,7 +891,9 @@ class FWLayerControllerFactory {
|
|
|
830
891
|
/**
|
|
831
892
|
* 创建并初始化 LayerController
|
|
832
893
|
*/
|
|
833
|
-
createController<Ctr extends FW.LayerController = FW.LayerController>(
|
|
894
|
+
createController<Ctr extends FW.LayerController = FW.LayerController>(
|
|
895
|
+
type: new () => Ctr,
|
|
896
|
+
): Ctr {
|
|
834
897
|
const ctr = new type();
|
|
835
898
|
|
|
836
899
|
ctr.initializeDependencies?.();
|
package/package.json
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ives_xxz/framework",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.1.35",
|
|
4
4
|
"description": "cocoscreator 2.x mvc framework",
|
|
5
5
|
"main": "index.js",
|
|
6
|
-
"keywords": [
|
|
6
|
+
"keywords": [
|
|
7
|
+
"123456"
|
|
8
|
+
],
|
|
7
9
|
"author": "ives",
|
|
8
10
|
"license": "ISC"
|
|
9
11
|
}
|