@ives_xxz/framework 1.2.11 → 1.2.13
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/FW.d.ts +17 -8
- package/manager/FWLayerManager.ts +36 -33
- package/package.json +1 -1
package/FW.d.ts
CHANGED
|
@@ -493,11 +493,11 @@ declare namespace FW {
|
|
|
493
493
|
/**
|
|
494
494
|
* 层级打开参数
|
|
495
495
|
*/
|
|
496
|
-
type LayerOpenArgs
|
|
496
|
+
type LayerOpenArgs = {
|
|
497
497
|
/**
|
|
498
498
|
* 控制器类型
|
|
499
499
|
*/
|
|
500
|
-
type: new () =>
|
|
500
|
+
type: new () => LayerController;
|
|
501
501
|
/**
|
|
502
502
|
* 父节点
|
|
503
503
|
*/
|
|
@@ -505,17 +505,22 @@ declare namespace FW {
|
|
|
505
505
|
/**
|
|
506
506
|
* 坐标
|
|
507
507
|
*/
|
|
508
|
-
position?:
|
|
508
|
+
position?: Vec3;
|
|
509
509
|
/**
|
|
510
510
|
* 传递参数
|
|
511
511
|
*/
|
|
512
512
|
args?: any;
|
|
513
513
|
};
|
|
514
514
|
|
|
515
|
+
type Vec3 = {
|
|
516
|
+
x: number;
|
|
517
|
+
y: number;
|
|
518
|
+
};
|
|
519
|
+
|
|
515
520
|
/**
|
|
516
521
|
* 层级数据
|
|
517
522
|
*/
|
|
518
|
-
type LayerData
|
|
523
|
+
type LayerData = {
|
|
519
524
|
/**
|
|
520
525
|
* 外部引用
|
|
521
526
|
*/
|
|
@@ -523,7 +528,7 @@ declare namespace FW {
|
|
|
523
528
|
/**
|
|
524
529
|
* 构造类
|
|
525
530
|
*/
|
|
526
|
-
|
|
531
|
+
controllerConstructor: new () => FW.LayerController;
|
|
527
532
|
/**
|
|
528
533
|
* 唯一id
|
|
529
534
|
*/
|
|
@@ -555,7 +560,7 @@ declare namespace FW {
|
|
|
555
560
|
/**
|
|
556
561
|
* layer控制器
|
|
557
562
|
*/
|
|
558
|
-
controller:
|
|
563
|
+
controller: LayerController;
|
|
559
564
|
/**
|
|
560
565
|
* 是否加载完成
|
|
561
566
|
*/
|
|
@@ -568,6 +573,10 @@ declare namespace FW {
|
|
|
568
573
|
* 坐标
|
|
569
574
|
*/
|
|
570
575
|
layerPosition?: Vec3;
|
|
576
|
+
/**
|
|
577
|
+
* 代理
|
|
578
|
+
*/
|
|
579
|
+
controllerProxy: LayerController;
|
|
571
580
|
};
|
|
572
581
|
|
|
573
582
|
/**
|
|
@@ -935,7 +944,7 @@ declare namespace FW {
|
|
|
935
944
|
type LayerController = {
|
|
936
945
|
readonly entry: FW.Entry;
|
|
937
946
|
|
|
938
|
-
layerData:
|
|
947
|
+
layerData: LayerData;
|
|
939
948
|
/** uuid */
|
|
940
949
|
uuid: string;
|
|
941
950
|
/** 渲染顺序 */
|
|
@@ -950,7 +959,7 @@ declare namespace FW {
|
|
|
950
959
|
autoRelease: boolean;
|
|
951
960
|
/** 是否允许重复打开 */
|
|
952
961
|
isRepeatOpen: boolean;
|
|
953
|
-
|
|
962
|
+
initialize?();
|
|
954
963
|
/** 生命周期函数 */
|
|
955
964
|
onInit?(...args: any);
|
|
956
965
|
onLoad?();
|
|
@@ -7,10 +7,10 @@ import { FWQueue } from '../utils/FWQueue';
|
|
|
7
7
|
|
|
8
8
|
const ADD_EXTERNAL_REFERENCE: string = 'addExternalReference';
|
|
9
9
|
|
|
10
|
-
export class FWLayerData<T extends
|
|
11
|
-
implements FW.LayerData
|
|
10
|
+
export class FWLayerData<T extends FW.LayerController = FW.LayerController>
|
|
11
|
+
implements FW.LayerData
|
|
12
12
|
{
|
|
13
|
-
|
|
13
|
+
controllerConstructor: new () => T;
|
|
14
14
|
uuid: string;
|
|
15
15
|
layer: FW.Layer;
|
|
16
16
|
layerName: string;
|
|
@@ -22,6 +22,7 @@ export class FWLayerData<T extends FWLayerController = FWLayerController>
|
|
|
22
22
|
controllerName: string;
|
|
23
23
|
controller: FW.LayerController;
|
|
24
24
|
loaded: boolean;
|
|
25
|
+
controllerProxy: FW.LayerController;
|
|
25
26
|
externalReference?: Set<(ref: FW.LayerController | null) => void>;
|
|
26
27
|
}
|
|
27
28
|
|
|
@@ -29,11 +30,11 @@ export class FWLayerManager extends FWManager implements FW.LayerManager {
|
|
|
29
30
|
/**
|
|
30
31
|
* 当前待打开的layer队列
|
|
31
32
|
*/
|
|
32
|
-
private layerQueue: FWQueue<
|
|
33
|
+
private layerQueue: FWQueue<FW.LayerData>;
|
|
33
34
|
/**
|
|
34
35
|
* 当前已经打开的layer缓存容器
|
|
35
36
|
*/
|
|
36
|
-
private layerMap: Map<string,
|
|
37
|
+
private layerMap: Map<string, FW.LayerData>;
|
|
37
38
|
|
|
38
39
|
/**
|
|
39
40
|
* 当前所有打开Layer注册表
|
|
@@ -45,8 +46,8 @@ export class FWLayerManager extends FWManager implements FW.LayerManager {
|
|
|
45
46
|
private layerStack: FWLayerData[];
|
|
46
47
|
|
|
47
48
|
public initialize(): void {
|
|
48
|
-
this.layerQueue = new FWQueue<
|
|
49
|
-
this.layerMap = new Map<string,
|
|
49
|
+
this.layerQueue = new FWQueue<FW.LayerData>();
|
|
50
|
+
this.layerMap = new Map<string, FW.LayerData>();
|
|
50
51
|
this.layerRegistry = new Set<new () => FW.LayerController>();
|
|
51
52
|
this.layerStack = [];
|
|
52
53
|
}
|
|
@@ -94,7 +95,7 @@ export class FWLayerManager extends FWManager implements FW.LayerManager {
|
|
|
94
95
|
* @param ctr
|
|
95
96
|
* @returns
|
|
96
97
|
*/
|
|
97
|
-
protected createLayerData(ctr:
|
|
98
|
+
protected createLayerData(ctr: FW.LayerController) {
|
|
98
99
|
const layerData = new FWLayerData();
|
|
99
100
|
const layerType = ctr.layerType;
|
|
100
101
|
|
|
@@ -114,8 +115,8 @@ export class FWLayerManager extends FWManager implements FW.LayerManager {
|
|
|
114
115
|
* @param data
|
|
115
116
|
* @returns
|
|
116
117
|
*/
|
|
117
|
-
async openAsync<Ctr extends
|
|
118
|
-
data: FW.LayerOpenArgs
|
|
118
|
+
async openAsync<Ctr extends FW.LayerController = FW.LayerController>(
|
|
119
|
+
data: FW.LayerOpenArgs,
|
|
119
120
|
): Promise<Ctr> {
|
|
120
121
|
if (!data) {
|
|
121
122
|
FWLog.error(`打开Layer失败:${data},请检查参数!`);
|
|
@@ -123,8 +124,8 @@ export class FWLayerManager extends FWManager implements FW.LayerManager {
|
|
|
123
124
|
}
|
|
124
125
|
|
|
125
126
|
for (const [key, value] of this.layerMap) {
|
|
126
|
-
if (value.
|
|
127
|
-
return value.
|
|
127
|
+
if (value.controllerConstructor == data.type) {
|
|
128
|
+
return value.controllerProxy as Ctr;
|
|
128
129
|
}
|
|
129
130
|
}
|
|
130
131
|
|
|
@@ -132,14 +133,14 @@ export class FWLayerManager extends FWManager implements FW.LayerManager {
|
|
|
132
133
|
const ctrName = cc.js.getClassName(ctr);
|
|
133
134
|
const layerData = this.createLayerData(ctr);
|
|
134
135
|
|
|
135
|
-
layerData.
|
|
136
|
+
layerData.controllerConstructor = data.type;
|
|
136
137
|
layerData.controller = ctr;
|
|
137
138
|
layerData.controllerName = ctrName;
|
|
138
139
|
|
|
139
140
|
this.layerMap.set(ctrName, layerData);
|
|
140
141
|
|
|
141
142
|
if (this.layerRegistry.has(data.type)) {
|
|
142
|
-
return this.layerMap.get(ctrName).
|
|
143
|
+
return this.layerMap.get(ctrName).controllerProxy as Ctr;
|
|
143
144
|
}
|
|
144
145
|
|
|
145
146
|
this.layerRegistry.add(data.type);
|
|
@@ -198,8 +199,8 @@ export class FWLayerManager extends FWManager implements FW.LayerManager {
|
|
|
198
199
|
return target[prop];
|
|
199
200
|
},
|
|
200
201
|
});
|
|
201
|
-
|
|
202
|
-
return proxy;
|
|
202
|
+
ctr.layerData.controllerProxy = proxy;
|
|
203
|
+
return proxy as Ctr;
|
|
203
204
|
}
|
|
204
205
|
|
|
205
206
|
/**
|
|
@@ -207,15 +208,15 @@ export class FWLayerManager extends FWManager implements FW.LayerManager {
|
|
|
207
208
|
* @param data
|
|
208
209
|
* @returns
|
|
209
210
|
*/
|
|
210
|
-
openSync<Ctr extends
|
|
211
|
+
openSync<Ctr extends FW.LayerController = FW.LayerController>(data: FW.LayerOpenArgs): Ctr {
|
|
211
212
|
if (!data) {
|
|
212
213
|
FWLog.error(`open layer failed:${data},please check param!`);
|
|
213
214
|
return undefined;
|
|
214
215
|
}
|
|
215
216
|
|
|
216
217
|
for (const [key, value] of this.layerMap) {
|
|
217
|
-
if (value.
|
|
218
|
-
return value.
|
|
218
|
+
if (value.controllerConstructor == data.type) {
|
|
219
|
+
return value.controllerProxy as Ctr;
|
|
219
220
|
}
|
|
220
221
|
}
|
|
221
222
|
|
|
@@ -223,14 +224,14 @@ export class FWLayerManager extends FWManager implements FW.LayerManager {
|
|
|
223
224
|
const ctrName = cc.js.getClassName(ctr);
|
|
224
225
|
const layerData = this.createLayerData(ctr);
|
|
225
226
|
|
|
226
|
-
layerData.
|
|
227
|
+
layerData.controllerConstructor = data.type;
|
|
227
228
|
layerData.controller = ctr;
|
|
228
229
|
layerData.controllerName = ctrName;
|
|
229
230
|
|
|
230
231
|
this.layerMap.set(ctrName, layerData);
|
|
231
232
|
|
|
232
233
|
if (this.layerRegistry.has(data.type)) {
|
|
233
|
-
return this.layerMap.get(ctrName).
|
|
234
|
+
return this.layerMap.get(ctrName).controllerProxy as Ctr;
|
|
234
235
|
}
|
|
235
236
|
|
|
236
237
|
this.layerRegistry.add(data.type);
|
|
@@ -289,7 +290,8 @@ export class FWLayerManager extends FWManager implements FW.LayerManager {
|
|
|
289
290
|
return target[prop];
|
|
290
291
|
},
|
|
291
292
|
});
|
|
292
|
-
|
|
293
|
+
ctr.layerData.controllerProxy = proxy;
|
|
294
|
+
return proxy as Ctr;
|
|
293
295
|
}
|
|
294
296
|
|
|
295
297
|
/**
|
|
@@ -297,7 +299,7 @@ export class FWLayerManager extends FWManager implements FW.LayerManager {
|
|
|
297
299
|
* @param ctr
|
|
298
300
|
* @returns
|
|
299
301
|
*/
|
|
300
|
-
displayLayer<Ctr extends
|
|
302
|
+
displayLayer<Ctr extends FW.LayerController = FW.LayerController>(ctr: Ctr): Ctr {
|
|
301
303
|
const layerData = ctr.layerData;
|
|
302
304
|
if (!this.layerMap.has(layerData.controllerName)) {
|
|
303
305
|
FWLog.warn(`display layer failed,layer name : ${layerData.layerName}`);
|
|
@@ -319,7 +321,7 @@ export class FWLayerManager extends FWManager implements FW.LayerManager {
|
|
|
319
321
|
* @param ctr
|
|
320
322
|
* @returns
|
|
321
323
|
*/
|
|
322
|
-
hideLayer<Ctr extends
|
|
324
|
+
hideLayer<Ctr extends FW.LayerController = FW.LayerController>(ctr: Ctr): Ctr {
|
|
323
325
|
const layerData = ctr.layerData;
|
|
324
326
|
if (!this.layerMap.has(layerData.controllerName)) {
|
|
325
327
|
FWLog.warn(`hide layer failed,layer name : ${layerData.layerName}`);
|
|
@@ -390,7 +392,7 @@ export class FWLayerManager extends FWManager implements FW.LayerManager {
|
|
|
390
392
|
|
|
391
393
|
if (cc.isValid(ctr.layer?.node)) {
|
|
392
394
|
ctr.layer.node.destroy?.();
|
|
393
|
-
ctr.onClose();
|
|
395
|
+
ctr.onClose?.();
|
|
394
396
|
if (ctr.autoRelease) {
|
|
395
397
|
FW.Entry.resMgr.releaseAsset(ctr.layerData.layerAssetProperty);
|
|
396
398
|
}
|
|
@@ -398,7 +400,7 @@ export class FWLayerManager extends FWManager implements FW.LayerManager {
|
|
|
398
400
|
}
|
|
399
401
|
|
|
400
402
|
this.layerMap.delete(layerData.controllerName);
|
|
401
|
-
this.layerRegistry.delete(ctr.layerData.
|
|
403
|
+
this.layerRegistry.delete(ctr.layerData.controllerConstructor);
|
|
402
404
|
|
|
403
405
|
const index = this.layerStack.findIndex((v) => {
|
|
404
406
|
v.controller == ctr;
|
|
@@ -412,14 +414,14 @@ export class FWLayerManager extends FWManager implements FW.LayerManager {
|
|
|
412
414
|
const nextLayer = this.openSync({
|
|
413
415
|
parent: nextLayerData.layerParent,
|
|
414
416
|
position: nextLayerData.layerPosition,
|
|
415
|
-
type: nextLayerData.
|
|
417
|
+
type: nextLayerData.controllerConstructor,
|
|
416
418
|
});
|
|
417
419
|
/** 如果同步打开失败,再次尝试异步打开(可能由于资源所在bundle并未提前加载) */
|
|
418
420
|
if (!nextLayer) {
|
|
419
421
|
return this.openAsync({
|
|
420
422
|
parent: nextLayerData.layerParent,
|
|
421
423
|
position: nextLayerData.layerPosition,
|
|
422
|
-
type: nextLayerData.
|
|
424
|
+
type: nextLayerData.controllerConstructor,
|
|
423
425
|
});
|
|
424
426
|
} else {
|
|
425
427
|
return nextLayer;
|
|
@@ -429,7 +431,7 @@ export class FWLayerManager extends FWManager implements FW.LayerManager {
|
|
|
429
431
|
}
|
|
430
432
|
}
|
|
431
433
|
|
|
432
|
-
private notifyExternalRefUpdates(layerData:
|
|
434
|
+
private notifyExternalRefUpdates(layerData: FW.LayerData) {
|
|
433
435
|
layerData.externalReference.forEach((cb) => {
|
|
434
436
|
try {
|
|
435
437
|
cb?.(null);
|
|
@@ -445,7 +447,7 @@ export class FWLayerManager extends FWManager implements FW.LayerManager {
|
|
|
445
447
|
layerComponent: string,
|
|
446
448
|
renderOrder: number,
|
|
447
449
|
parent: cc.Node,
|
|
448
|
-
position:
|
|
450
|
+
position: FW.Vec3,
|
|
449
451
|
) {
|
|
450
452
|
parent = parent || FW.Entry.scene?.node;
|
|
451
453
|
|
|
@@ -456,14 +458,15 @@ export class FWLayerManager extends FWManager implements FW.LayerManager {
|
|
|
456
458
|
return;
|
|
457
459
|
}
|
|
458
460
|
const node = cc.instantiate(prefab);
|
|
461
|
+
const p = cc.v3(position.x, position.y);
|
|
459
462
|
node.setParent(parent);
|
|
460
|
-
node.setPosition(
|
|
463
|
+
node.setPosition(p);
|
|
461
464
|
node.zIndex = renderOrder;
|
|
462
465
|
!node.getComponent(layerComponent) && node.addComponent(layerComponent);
|
|
463
466
|
return node.getComponent(FWLayer);
|
|
464
467
|
}
|
|
465
468
|
|
|
466
|
-
private lifecycleProcessing(ctr:
|
|
469
|
+
private lifecycleProcessing(ctr: FW.LayerController) {
|
|
467
470
|
const layer = ctr.layer;
|
|
468
471
|
|
|
469
472
|
const onLoad = layer['onLoad'];
|
|
@@ -509,7 +512,7 @@ export class FWLayerManager extends FWManager implements FW.LayerManager {
|
|
|
509
512
|
};
|
|
510
513
|
}
|
|
511
514
|
|
|
512
|
-
getLayerMap(): Map<string,
|
|
515
|
+
getLayerMap(): Map<string, FW.LayerData> {
|
|
513
516
|
return this.layerMap;
|
|
514
517
|
}
|
|
515
518
|
|