@ives_xxz/framework 1.2.12 → 1.2.14
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 +35 -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);
|
|
@@ -252,7 +253,6 @@ export class FWLayerManager extends FWManager implements FW.LayerManager {
|
|
|
252
253
|
|
|
253
254
|
ctr.initialize();
|
|
254
255
|
|
|
255
|
-
this.layerQueue.add(layerData);
|
|
256
256
|
const res = this.openLayerSync(layerData);
|
|
257
257
|
const layer = this.createLayer(
|
|
258
258
|
res.asset,
|
|
@@ -289,7 +289,8 @@ export class FWLayerManager extends FWManager implements FW.LayerManager {
|
|
|
289
289
|
return target[prop];
|
|
290
290
|
},
|
|
291
291
|
});
|
|
292
|
-
|
|
292
|
+
ctr.layerData.controllerProxy = proxy;
|
|
293
|
+
return proxy as Ctr;
|
|
293
294
|
}
|
|
294
295
|
|
|
295
296
|
/**
|
|
@@ -297,7 +298,7 @@ export class FWLayerManager extends FWManager implements FW.LayerManager {
|
|
|
297
298
|
* @param ctr
|
|
298
299
|
* @returns
|
|
299
300
|
*/
|
|
300
|
-
displayLayer<Ctr extends
|
|
301
|
+
displayLayer<Ctr extends FW.LayerController = FW.LayerController>(ctr: Ctr): Ctr {
|
|
301
302
|
const layerData = ctr.layerData;
|
|
302
303
|
if (!this.layerMap.has(layerData.controllerName)) {
|
|
303
304
|
FWLog.warn(`display layer failed,layer name : ${layerData.layerName}`);
|
|
@@ -319,7 +320,7 @@ export class FWLayerManager extends FWManager implements FW.LayerManager {
|
|
|
319
320
|
* @param ctr
|
|
320
321
|
* @returns
|
|
321
322
|
*/
|
|
322
|
-
hideLayer<Ctr extends
|
|
323
|
+
hideLayer<Ctr extends FW.LayerController = FW.LayerController>(ctr: Ctr): Ctr {
|
|
323
324
|
const layerData = ctr.layerData;
|
|
324
325
|
if (!this.layerMap.has(layerData.controllerName)) {
|
|
325
326
|
FWLog.warn(`hide layer failed,layer name : ${layerData.layerName}`);
|
|
@@ -398,7 +399,7 @@ export class FWLayerManager extends FWManager implements FW.LayerManager {
|
|
|
398
399
|
}
|
|
399
400
|
|
|
400
401
|
this.layerMap.delete(layerData.controllerName);
|
|
401
|
-
this.layerRegistry.delete(ctr.layerData.
|
|
402
|
+
this.layerRegistry.delete(ctr.layerData.controllerConstructor);
|
|
402
403
|
|
|
403
404
|
const index = this.layerStack.findIndex((v) => {
|
|
404
405
|
v.controller == ctr;
|
|
@@ -412,14 +413,14 @@ export class FWLayerManager extends FWManager implements FW.LayerManager {
|
|
|
412
413
|
const nextLayer = this.openSync({
|
|
413
414
|
parent: nextLayerData.layerParent,
|
|
414
415
|
position: nextLayerData.layerPosition,
|
|
415
|
-
type: nextLayerData.
|
|
416
|
+
type: nextLayerData.controllerConstructor,
|
|
416
417
|
});
|
|
417
418
|
/** 如果同步打开失败,再次尝试异步打开(可能由于资源所在bundle并未提前加载) */
|
|
418
419
|
if (!nextLayer) {
|
|
419
420
|
return this.openAsync({
|
|
420
421
|
parent: nextLayerData.layerParent,
|
|
421
422
|
position: nextLayerData.layerPosition,
|
|
422
|
-
type: nextLayerData.
|
|
423
|
+
type: nextLayerData.controllerConstructor,
|
|
423
424
|
});
|
|
424
425
|
} else {
|
|
425
426
|
return nextLayer;
|
|
@@ -429,7 +430,7 @@ export class FWLayerManager extends FWManager implements FW.LayerManager {
|
|
|
429
430
|
}
|
|
430
431
|
}
|
|
431
432
|
|
|
432
|
-
private notifyExternalRefUpdates(layerData:
|
|
433
|
+
private notifyExternalRefUpdates(layerData: FW.LayerData) {
|
|
433
434
|
layerData.externalReference.forEach((cb) => {
|
|
434
435
|
try {
|
|
435
436
|
cb?.(null);
|
|
@@ -445,7 +446,7 @@ export class FWLayerManager extends FWManager implements FW.LayerManager {
|
|
|
445
446
|
layerComponent: string,
|
|
446
447
|
renderOrder: number,
|
|
447
448
|
parent: cc.Node,
|
|
448
|
-
position:
|
|
449
|
+
position: FW.Vec3,
|
|
449
450
|
) {
|
|
450
451
|
parent = parent || FW.Entry.scene?.node;
|
|
451
452
|
|
|
@@ -456,14 +457,15 @@ export class FWLayerManager extends FWManager implements FW.LayerManager {
|
|
|
456
457
|
return;
|
|
457
458
|
}
|
|
458
459
|
const node = cc.instantiate(prefab);
|
|
460
|
+
const p = cc.v3(position.x, position.y);
|
|
459
461
|
node.setParent(parent);
|
|
460
|
-
node.setPosition(
|
|
462
|
+
node.setPosition(p);
|
|
461
463
|
node.zIndex = renderOrder;
|
|
462
464
|
!node.getComponent(layerComponent) && node.addComponent(layerComponent);
|
|
463
465
|
return node.getComponent(FWLayer);
|
|
464
466
|
}
|
|
465
467
|
|
|
466
|
-
private lifecycleProcessing(ctr:
|
|
468
|
+
private lifecycleProcessing(ctr: FW.LayerController) {
|
|
467
469
|
const layer = ctr.layer;
|
|
468
470
|
|
|
469
471
|
const onLoad = layer['onLoad'];
|
|
@@ -509,7 +511,7 @@ export class FWLayerManager extends FWManager implements FW.LayerManager {
|
|
|
509
511
|
};
|
|
510
512
|
}
|
|
511
513
|
|
|
512
|
-
getLayerMap(): Map<string,
|
|
514
|
+
getLayerMap(): Map<string, FW.LayerData> {
|
|
513
515
|
return this.layerMap;
|
|
514
516
|
}
|
|
515
517
|
|