@ives_xxz/framework 1.6.5 → 2.0.0
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/Framework.ts +9 -13
- package/FrameworkAutoInitialize.ts +58 -0
- package/{CC.d.ts.meta → FrameworkAutoInitialize.ts.meta} +1 -1
- package/FrameworkBase.ts +24 -23
- package/animation/FWSkeleton.ts +5 -6
- package/component/FWVirtualViewComponent.ts +42 -45
- package/config/FWAssetConfig.ts +2 -2
- package/controller/FWLayerController.ts +3 -7
- package/data/FWData.ts +2 -3
- package/define/FWEventDefine.ts +24 -21
- package/define/FWSystemDefine.ts +127 -132
- package/define/FWSystemDefine.ts.meta +1 -1
- package/entry/FWEntry.ts +2 -3
- package/expand/FWDecorator.ts +56 -114
- package/expand/FWRollingViewNesting.ts +3 -5
- package/item/FWVirtualListItem.ts +1 -1
- package/language/FWLanguage.ts +15 -19
- package/layer/FWLayer.ts +1 -1
- package/log/FWLog.ts +30 -35
- package/logic/FWLogic.ts +2 -4
- package/machine/FWStateMachine.ts +1 -2
- package/manager/FWAnimationManager.ts +6 -8
- package/manager/FWAssetManager.ts +22 -23
- package/manager/FWAudioManager.ts +30 -52
- package/manager/FWBundleManager.ts +2 -4
- package/manager/FWComponentManager.ts +0 -1
- package/manager/FWEngineManager.ts +10 -14
- package/manager/FWEventManager.ts +4 -7
- package/manager/FWHotUpdateManager.ts +32 -33
- package/manager/FWLanguageManager.ts +1 -2
- package/manager/FWLayerManager.ts +88 -138
- package/manager/FWManager.ts +1 -3
- package/manager/FWObjectManager.ts +7 -9
- package/manager/FWPerformanceManager.ts +2 -3
- package/manager/FWPromiseManager.ts +29 -28
- package/manager/FWResManager.ts +1 -3
- package/manager/FWSocketManager.ts +2 -5
- package/manager/FWStateManager.ts +2 -4
- package/manager/FWTimeManager.ts +14 -15
- package/manager/FWUiManager.ts +3 -4
- package/package.json +1 -1
- package/{register → registry}/FWRegistry.ts +8 -8
- package/service/http/FWHttp.ts +5 -7
- package/service/socket/FWSocket.ts +28 -43
- package/service/socket/FWSocketHandle.ts +3 -6
- package/service/socket/FWSocketSender.ts +5 -9
- package/types/Creator.d.ts.meta +6 -0
- package/{FW.d.ts → types/FW.d.ts} +407 -153
- package/types/Global.d.ts +21 -0
- package/{render/FWAssembler.ts.meta → types/Global.d.ts.meta} +1 -1
- package/types.meta +13 -0
- package/utils/FWObjectPool.ts +5 -7
- package/utils/FWTask.ts +18 -22
- package/render/FWAssembler.ts +0 -11
- /package/{register → registry}/FWRegistry.ts.meta +0 -0
- /package/{register.meta → registry.meta} +0 -0
- /package/{CC.d.ts → types/Creator.d.ts} +0 -0
- /package/{FW.d.ts.meta → types/FW.d.ts.meta} +0 -0
|
@@ -1,12 +1,9 @@
|
|
|
1
|
-
import { FWManager } from
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import { FWQueue } from "../utils/FWQueue";
|
|
6
|
-
import { FrameworkBase } from "../FrameworkBase";
|
|
7
|
-
import { PerformanceMonitor } from "../expand/FWDecorator";
|
|
1
|
+
import { FWManager } from './FWManager';
|
|
2
|
+
import { FWQueue } from '../utils/FWQueue';
|
|
3
|
+
import { FrameworkBase } from '../FrameworkBase';
|
|
4
|
+
import { PerformanceMonitor } from '../expand/FWDecorator';
|
|
8
5
|
|
|
9
|
-
const ADD_EXTERNAL_REFERENCE: string =
|
|
6
|
+
const ADD_EXTERNAL_REFERENCE: string = 'addExternalReference';
|
|
10
7
|
|
|
11
8
|
export class FWLayerManager extends FWManager implements FW.LayerManager {
|
|
12
9
|
private resourceManager: FWLayerResourceManager;
|
|
@@ -30,16 +27,16 @@ export class FWLayerManager extends FWManager implements FW.LayerManager {
|
|
|
30
27
|
this.resourceManager,
|
|
31
28
|
this.createManager,
|
|
32
29
|
this.stackManager,
|
|
33
|
-
this.queueManager
|
|
30
|
+
this.queueManager,
|
|
34
31
|
);
|
|
35
32
|
}
|
|
36
33
|
|
|
37
34
|
/**
|
|
38
35
|
* 异步打开Layer
|
|
39
36
|
*/
|
|
40
|
-
@PerformanceMonitor(
|
|
37
|
+
@PerformanceMonitor('openAsync')
|
|
41
38
|
async openAsync<Ctr extends FW.LayerController = FW.LayerController>(
|
|
42
|
-
data: FW.LayerOpenArgs
|
|
39
|
+
data: FW.LayerOpenArgs,
|
|
43
40
|
): Promise<Ctr> {
|
|
44
41
|
return this.openManager.openLayerAsync(data) as Promise<Ctr>;
|
|
45
42
|
}
|
|
@@ -47,28 +44,22 @@ export class FWLayerManager extends FWManager implements FW.LayerManager {
|
|
|
47
44
|
/**
|
|
48
45
|
* 同步打开
|
|
49
46
|
*/
|
|
50
|
-
openSync<Ctr extends FW.LayerController = FW.LayerController>(
|
|
51
|
-
data: FW.LayerOpenArgs
|
|
52
|
-
): Ctr {
|
|
47
|
+
openSync<Ctr extends FW.LayerController = FW.LayerController>(data: FW.LayerOpenArgs): Ctr {
|
|
53
48
|
return this.openManager.openLayerSync(data) as Ctr;
|
|
54
49
|
}
|
|
55
50
|
|
|
56
51
|
/**
|
|
57
52
|
* 显示layer并恢复所有节点事件
|
|
58
53
|
*/
|
|
59
|
-
displayLayer<Ctr extends FW.LayerController = FW.LayerController>(
|
|
60
|
-
ctr: Ctr
|
|
61
|
-
): Ctr {
|
|
54
|
+
displayLayer<Ctr extends FW.LayerController = FW.LayerController>(ctr: Ctr): Ctr {
|
|
62
55
|
const layerData = ctr.layerData;
|
|
63
56
|
|
|
64
|
-
if (
|
|
65
|
-
|
|
66
|
-
) {
|
|
67
|
-
FWLog.warn(`display layer failed,layer name : ${layerData.layerName}`);
|
|
57
|
+
if (!this.dataManager.getLayerMap().has(ctr.layerData.controllerConstructor)) {
|
|
58
|
+
FW.Log.warn(`display layer failed,layer name : ${layerData.layerName}`);
|
|
68
59
|
return;
|
|
69
60
|
}
|
|
70
61
|
/** 非常驻layer不允许操作透明度显示 */
|
|
71
|
-
if (ctr.layerType !=
|
|
62
|
+
if (ctr.layerType != FW.SystemDefine.FWLayerType.PERMANENT) return;
|
|
72
63
|
|
|
73
64
|
const node = ctr.layer.node;
|
|
74
65
|
node.opacity = 255;
|
|
@@ -83,19 +74,15 @@ export class FWLayerManager extends FWManager implements FW.LayerManager {
|
|
|
83
74
|
/**
|
|
84
75
|
* 隐藏layer并隐藏所有节点事件
|
|
85
76
|
*/
|
|
86
|
-
hideLayer<Ctr extends FW.LayerController = FW.LayerController>(
|
|
87
|
-
ctr: Ctr
|
|
88
|
-
): Ctr {
|
|
77
|
+
hideLayer<Ctr extends FW.LayerController = FW.LayerController>(ctr: Ctr): Ctr {
|
|
89
78
|
const layerData = ctr.layerData;
|
|
90
|
-
if (
|
|
91
|
-
|
|
92
|
-
) {
|
|
93
|
-
FWLog.warn(`hide layer failed,layer name : ${layerData.layerName}`);
|
|
79
|
+
if (!this.dataManager.getLayerMap().has(ctr.layerData.controllerConstructor)) {
|
|
80
|
+
FW.Log.warn(`hide layer failed,layer name : ${layerData.layerName}`);
|
|
94
81
|
return;
|
|
95
82
|
}
|
|
96
83
|
|
|
97
84
|
/** 非常驻layer不允许操作透明度 */
|
|
98
|
-
if (ctr.layerType !=
|
|
85
|
+
if (ctr.layerType != FW.SystemDefine.FWLayerType.PERMANENT) return;
|
|
99
86
|
|
|
100
87
|
const node = ctr.layer.node;
|
|
101
88
|
node.opacity = 0;
|
|
@@ -133,9 +120,7 @@ export class FWLayerManager extends FWManager implements FW.LayerManager {
|
|
|
133
120
|
for (let i = 0; i < count; i++) {
|
|
134
121
|
let layerData = this.stackManager.pop();
|
|
135
122
|
let ctr = layerData.controller;
|
|
136
|
-
if (
|
|
137
|
-
!this.dataManager.getLayerMap().has(layerData.controllerConstructor)
|
|
138
|
-
) {
|
|
123
|
+
if (!this.dataManager.getLayerMap().has(layerData.controllerConstructor)) {
|
|
139
124
|
return;
|
|
140
125
|
}
|
|
141
126
|
if (cc.isValid(ctr.layer?.node)) {
|
|
@@ -155,7 +140,7 @@ export class FWLayerManager extends FWManager implements FW.LayerManager {
|
|
|
155
140
|
*/
|
|
156
141
|
async removeAllChildren(node: cc.Node) {
|
|
157
142
|
if (!cc.isValid(node)) return;
|
|
158
|
-
const layers = node.getComponentsInChildren(
|
|
143
|
+
const layers = node.getComponentsInChildren(FW.Layer);
|
|
159
144
|
layers.forEach((v) => {
|
|
160
145
|
if (cc.isValid(v?.node)) {
|
|
161
146
|
v?.ctr?.close();
|
|
@@ -167,7 +152,7 @@ export class FWLayerManager extends FWManager implements FW.LayerManager {
|
|
|
167
152
|
* 关闭layer
|
|
168
153
|
*/
|
|
169
154
|
async close<Ctr extends FW.LayerController = FW.LayerController>(
|
|
170
|
-
ctr: Ctr
|
|
155
|
+
ctr: Ctr,
|
|
171
156
|
): Promise<FW.LayerController> {
|
|
172
157
|
if (!ctr) return;
|
|
173
158
|
|
|
@@ -241,8 +226,8 @@ export class FWLayerData<T extends FW.LayerController = FW.LayerController>
|
|
|
241
226
|
layer: FW.Layer;
|
|
242
227
|
layerName: string;
|
|
243
228
|
layerAssetProperty: FW.AssetProperty;
|
|
244
|
-
layerRenderOrder:
|
|
245
|
-
layerType:
|
|
229
|
+
layerRenderOrder: FW.SystemDefine.FWLayerRenderOrder;
|
|
230
|
+
layerType: FW.SystemDefine.FWLayerType;
|
|
246
231
|
layerParent?: cc.Node;
|
|
247
232
|
layerPosition?: FW.Vec3;
|
|
248
233
|
controllerName: string;
|
|
@@ -255,13 +240,12 @@ export class FWLayerData<T extends FW.LayerController = FW.LayerController>
|
|
|
255
240
|
class FWLayerDataManager {
|
|
256
241
|
private layerMap: Map<new () => FW.LayerController, FWLayerData> = new Map();
|
|
257
242
|
private layerRegistry: Set<new () => FW.LayerController> = new Set();
|
|
258
|
-
private layerControllerFactory: FWLayerControllerFactory =
|
|
259
|
-
new FWLayerControllerFactory();
|
|
243
|
+
private layerControllerFactory: FWLayerControllerFactory = new FWLayerControllerFactory();
|
|
260
244
|
/**
|
|
261
245
|
* 获取已存在的Layer
|
|
262
246
|
*/
|
|
263
247
|
getExistingLayer<Ctr extends FW.LayerController = FW.LayerController>(
|
|
264
|
-
type: new () => Ctr
|
|
248
|
+
type: new () => Ctr,
|
|
265
249
|
): Ctr | undefined {
|
|
266
250
|
for (const [key, value] of this.layerMap) {
|
|
267
251
|
if (value.controllerConstructor === type) {
|
|
@@ -275,7 +259,7 @@ class FWLayerDataManager {
|
|
|
275
259
|
* 从类型创建Layer数据
|
|
276
260
|
*/
|
|
277
261
|
createLayerData<Ctr extends FW.LayerController = FW.LayerController>(
|
|
278
|
-
type: new () => Ctr
|
|
262
|
+
type: new () => Ctr,
|
|
279
263
|
): FW.LayerData {
|
|
280
264
|
const ctr = this.layerControllerFactory.createController(type);
|
|
281
265
|
const ctrName = cc.js.getClassName(ctr);
|
|
@@ -326,7 +310,7 @@ class FWLayerDataManager {
|
|
|
326
310
|
* 获取已存在的代理
|
|
327
311
|
*/
|
|
328
312
|
getExistingProxy<Ctr extends FW.LayerController = FW.LayerController>(
|
|
329
|
-
type: new () => Ctr
|
|
313
|
+
type: new () => Ctr,
|
|
330
314
|
): Ctr | undefined {
|
|
331
315
|
return this.layerMap.get(type)?.controllerProxy as Ctr;
|
|
332
316
|
}
|
|
@@ -337,8 +321,8 @@ class FWLayerDataManager {
|
|
|
337
321
|
setupLayerData(
|
|
338
322
|
layerData: FWLayerData,
|
|
339
323
|
res: { asset: cc.Prefab; uuid: string },
|
|
340
|
-
layer:
|
|
341
|
-
layerName: string
|
|
324
|
+
layer: FW.Layer,
|
|
325
|
+
layerName: string,
|
|
342
326
|
): void {
|
|
343
327
|
layerData.loaded = true;
|
|
344
328
|
layerData.layer = layer;
|
|
@@ -384,7 +368,7 @@ class FWLayerDataManager {
|
|
|
384
368
|
try {
|
|
385
369
|
cb?.(null);
|
|
386
370
|
} catch (e) {
|
|
387
|
-
|
|
371
|
+
FW.Log.error('External ref update callback error:', e);
|
|
388
372
|
}
|
|
389
373
|
});
|
|
390
374
|
layerData.externalReference.clear();
|
|
@@ -409,8 +393,7 @@ class FWLayerDataManager {
|
|
|
409
393
|
}
|
|
410
394
|
|
|
411
395
|
class FWLayerCreateManager {
|
|
412
|
-
private lifecycleManager: FWLayerLifecycleManager =
|
|
413
|
-
new FWLayerLifecycleManager();
|
|
396
|
+
private lifecycleManager: FWLayerLifecycleManager = new FWLayerLifecycleManager();
|
|
414
397
|
|
|
415
398
|
/**
|
|
416
399
|
* 创建Layer节点
|
|
@@ -420,13 +403,13 @@ class FWLayerCreateManager {
|
|
|
420
403
|
layerComponent: string,
|
|
421
404
|
renderOrder: number,
|
|
422
405
|
parent: cc.Node,
|
|
423
|
-
position: FW.Vec3
|
|
424
|
-
):
|
|
406
|
+
position: FW.Vec3,
|
|
407
|
+
): FW.Layer {
|
|
425
408
|
parent = parent || FW.Entry.scene?.node;
|
|
426
409
|
position = position || cc.Vec3.ZERO;
|
|
427
410
|
|
|
428
411
|
if (!parent.activeInHierarchy || !cc.isValid(parent)) {
|
|
429
|
-
|
|
412
|
+
FW.Log.error(`createLayer failed , parent : ${parent}`);
|
|
430
413
|
return;
|
|
431
414
|
}
|
|
432
415
|
|
|
@@ -437,13 +420,13 @@ class FWLayerCreateManager {
|
|
|
437
420
|
node.zIndex = renderOrder;
|
|
438
421
|
|
|
439
422
|
!node.getComponent(layerComponent) && node.addComponent(layerComponent);
|
|
440
|
-
return node.getComponent(
|
|
423
|
+
return node.getComponent(FW.Layer);
|
|
441
424
|
}
|
|
442
425
|
|
|
443
426
|
/**
|
|
444
427
|
* 设置Layer生命周期
|
|
445
428
|
*/
|
|
446
|
-
setupLayerLifecycle(layer:
|
|
429
|
+
setupLayerLifecycle(layer: FW.Layer, ctr: FW.LayerController): void {
|
|
447
430
|
this.lifecycleManager.setupLifecycleHooks(layer, ctr);
|
|
448
431
|
}
|
|
449
432
|
|
|
@@ -462,14 +445,14 @@ class FWLayerOpenManager {
|
|
|
462
445
|
private resourceManager: FWLayerResourceManager,
|
|
463
446
|
private createManager: FWLayerCreateManager,
|
|
464
447
|
private stackManager: FWLayerStackManager,
|
|
465
|
-
private queueManager: FWLayerQueueManager
|
|
448
|
+
private queueManager: FWLayerQueueManager,
|
|
466
449
|
) {}
|
|
467
450
|
|
|
468
451
|
/**
|
|
469
452
|
* 统一的Layer打开方法
|
|
470
453
|
*/
|
|
471
454
|
async openLayerAsync<Ctr extends FW.LayerController = FW.LayerController>(
|
|
472
|
-
data: FW.LayerOpenArgs
|
|
455
|
+
data: FW.LayerOpenArgs,
|
|
473
456
|
): Promise<Ctr> {
|
|
474
457
|
if (!this.validateOpenData(data)) {
|
|
475
458
|
return undefined;
|
|
@@ -491,12 +474,7 @@ class FWLayerOpenManager {
|
|
|
491
474
|
return proxy as Ctr;
|
|
492
475
|
}
|
|
493
476
|
|
|
494
|
-
if (
|
|
495
|
-
this.queueManager.handlePopupQueue(
|
|
496
|
-
layerData,
|
|
497
|
-
this.dataManager.getLayerMap()
|
|
498
|
-
)
|
|
499
|
-
) {
|
|
477
|
+
if (this.queueManager.handlePopupQueue(layerData, this.dataManager.getLayerMap())) {
|
|
500
478
|
return undefined;
|
|
501
479
|
}
|
|
502
480
|
|
|
@@ -505,9 +483,7 @@ class FWLayerOpenManager {
|
|
|
505
483
|
return this.asyncGenerationLayer(layerData, data);
|
|
506
484
|
}
|
|
507
485
|
|
|
508
|
-
openLayerSync<Ctr extends FW.LayerController = FW.LayerController>(
|
|
509
|
-
data: FW.LayerOpenArgs
|
|
510
|
-
): Ctr {
|
|
486
|
+
openLayerSync<Ctr extends FW.LayerController = FW.LayerController>(data: FW.LayerOpenArgs): Ctr {
|
|
511
487
|
if (!this.validateOpenData(data)) {
|
|
512
488
|
return undefined;
|
|
513
489
|
}
|
|
@@ -528,12 +504,7 @@ class FWLayerOpenManager {
|
|
|
528
504
|
return proxy as Ctr;
|
|
529
505
|
}
|
|
530
506
|
|
|
531
|
-
if (
|
|
532
|
-
this.queueManager.handlePopupQueue(
|
|
533
|
-
layerData,
|
|
534
|
-
this.dataManager.getLayerMap()
|
|
535
|
-
)
|
|
536
|
-
) {
|
|
507
|
+
if (this.queueManager.handlePopupQueue(layerData, this.dataManager.getLayerMap())) {
|
|
537
508
|
return undefined;
|
|
538
509
|
}
|
|
539
510
|
|
|
@@ -547,7 +518,7 @@ class FWLayerOpenManager {
|
|
|
547
518
|
*/
|
|
548
519
|
private validateOpenData(data: FW.LayerOpenArgs): boolean {
|
|
549
520
|
if (!data) {
|
|
550
|
-
|
|
521
|
+
FW.Log.error(`打开Layer失败:${data},请检查参数!`);
|
|
551
522
|
return false;
|
|
552
523
|
}
|
|
553
524
|
return true;
|
|
@@ -556,16 +527,17 @@ class FWLayerOpenManager {
|
|
|
556
527
|
/**
|
|
557
528
|
* 异步生成Layer
|
|
558
529
|
*/
|
|
559
|
-
private async asyncGenerationLayer<
|
|
560
|
-
|
|
561
|
-
|
|
530
|
+
private async asyncGenerationLayer<Ctr extends FW.LayerController = FW.LayerController>(
|
|
531
|
+
layerData: FWLayerData,
|
|
532
|
+
data: FW.LayerOpenArgs,
|
|
533
|
+
): Promise<Ctr> {
|
|
562
534
|
try {
|
|
563
535
|
const res = await this.resourceManager.loadLayerAsync(layerData);
|
|
564
536
|
const ctr = this.createLayer(layerData, res, data) as Ctr;
|
|
565
537
|
this.dataManager.removeFromRegistry(layerData.controllerConstructor);
|
|
566
538
|
return ctr;
|
|
567
539
|
} catch (e) {
|
|
568
|
-
|
|
540
|
+
FW.Log.error(`asyncGenerationLayer failed:`, e);
|
|
569
541
|
this.dataManager.clearFailedLayer(layerData);
|
|
570
542
|
throw e;
|
|
571
543
|
}
|
|
@@ -574,16 +546,17 @@ class FWLayerOpenManager {
|
|
|
574
546
|
/**
|
|
575
547
|
* 同步创建Layer
|
|
576
548
|
*/
|
|
577
|
-
private syncGenerationLayer<
|
|
578
|
-
|
|
579
|
-
|
|
549
|
+
private syncGenerationLayer<Ctr extends FW.LayerController = FW.LayerController>(
|
|
550
|
+
layerData: FWLayerData,
|
|
551
|
+
data: FW.LayerOpenArgs,
|
|
552
|
+
): Ctr {
|
|
580
553
|
try {
|
|
581
554
|
const res = this.resourceManager.loadLayerSync(layerData);
|
|
582
555
|
const ctr = this.createLayer(layerData, res, data) as Ctr;
|
|
583
556
|
this.dataManager.removeFromRegistry(layerData.controllerConstructor);
|
|
584
557
|
return ctr;
|
|
585
558
|
} catch (e) {
|
|
586
|
-
|
|
559
|
+
FW.Log.error(`syncGenerationLayer failed:`, e);
|
|
587
560
|
this.dataManager.clearFailedLayer(layerData);
|
|
588
561
|
return undefined;
|
|
589
562
|
}
|
|
@@ -595,14 +568,14 @@ class FWLayerOpenManager {
|
|
|
595
568
|
private createLayer<Ctr extends FW.LayerController = FW.LayerController>(
|
|
596
569
|
layerData: FWLayerData,
|
|
597
570
|
res: { asset: cc.Prefab; uuid: string },
|
|
598
|
-
data: FW.LayerOpenArgs
|
|
571
|
+
data: FW.LayerOpenArgs,
|
|
599
572
|
): Ctr {
|
|
600
573
|
const layer = this.createManager.createLayer(
|
|
601
574
|
res.asset,
|
|
602
575
|
res.asset.name,
|
|
603
576
|
layerData.controller.renderOrder,
|
|
604
577
|
data.parent,
|
|
605
|
-
data.position
|
|
578
|
+
data.position,
|
|
606
579
|
);
|
|
607
580
|
const layerName = cc.js.getClassName(layer);
|
|
608
581
|
|
|
@@ -612,35 +585,28 @@ class FWLayerOpenManager {
|
|
|
612
585
|
|
|
613
586
|
this.createManager.setupLayerLifecycle(layer, layerData.controller);
|
|
614
587
|
|
|
615
|
-
if (
|
|
616
|
-
layerData.controller.layerType !== FWSystemDefine.FWLayerType.PERMANENT
|
|
617
|
-
) {
|
|
588
|
+
if (layerData.controller.layerType !== FW.SystemDefine.FWLayerType.PERMANENT) {
|
|
618
589
|
this.stackManager.push(layerData);
|
|
619
590
|
}
|
|
620
591
|
|
|
621
592
|
this.dataManager.removeFromRegistry(layerData.controllerConstructor);
|
|
622
593
|
|
|
623
|
-
layerData.controllerProxy =
|
|
624
|
-
this.dataManager.createControllerProxy(layerData);
|
|
594
|
+
layerData.controllerProxy = this.dataManager.createControllerProxy(layerData);
|
|
625
595
|
|
|
626
596
|
return layerData.controllerProxy as Ctr;
|
|
627
597
|
}
|
|
628
598
|
}
|
|
629
599
|
|
|
630
600
|
class FWLayerResourceManager {
|
|
631
|
-
async loadLayerAsync(
|
|
632
|
-
layerData: FWLayerData
|
|
633
|
-
): Promise<{ asset: cc.Prefab; uuid: string }> {
|
|
601
|
+
async loadLayerAsync(layerData: FWLayerData): Promise<{ asset: cc.Prefab; uuid: string }> {
|
|
634
602
|
try {
|
|
635
|
-
const res = await FW.Entry.resMgr.loadAssetData<cc.Prefab>(
|
|
636
|
-
layerData.layerAssetProperty
|
|
637
|
-
);
|
|
603
|
+
const res = await FW.Entry.resMgr.loadAssetData<cc.Prefab>(layerData.layerAssetProperty);
|
|
638
604
|
res.user = layerData.layerName;
|
|
639
605
|
res.autoRelease = layerData.controller.autoRelease;
|
|
640
606
|
res.dependentBundle = layerData.controller.layerAssetProperty.bundle;
|
|
641
607
|
return { asset: res.asset as cc.Prefab, uuid: res.uuid };
|
|
642
608
|
} catch (e) {
|
|
643
|
-
|
|
609
|
+
FW.Log.error(`loadLayerAsync failed:`, e);
|
|
644
610
|
throw e;
|
|
645
611
|
}
|
|
646
612
|
}
|
|
@@ -648,9 +614,7 @@ class FWLayerResourceManager {
|
|
|
648
614
|
loadLayerSync(layerData: FWLayerData): { asset: cc.Prefab; uuid: string } {
|
|
649
615
|
layerData.layerAssetProperty.bundle =
|
|
650
616
|
layerData.layerAssetProperty.bundle || FW.Entry.bundleName;
|
|
651
|
-
const res = FW.Entry.resMgr.getAssetData<cc.Prefab>(
|
|
652
|
-
layerData.layerAssetProperty
|
|
653
|
-
);
|
|
617
|
+
const res = FW.Entry.resMgr.getAssetData<cc.Prefab>(layerData.layerAssetProperty);
|
|
654
618
|
res.user = layerData.layerName;
|
|
655
619
|
res.autoRelease = layerData.controller.autoRelease;
|
|
656
620
|
res.dependentBundle = layerData.controller.layerAssetProperty.bundle;
|
|
@@ -662,9 +626,7 @@ class FWLayerStackManager {
|
|
|
662
626
|
private layerStack: FWLayerData[] = [];
|
|
663
627
|
|
|
664
628
|
push(layerData: FWLayerData): void {
|
|
665
|
-
if (
|
|
666
|
-
layerData.controller.layerType !== FWSystemDefine.FWLayerType.PERMANENT
|
|
667
|
-
) {
|
|
629
|
+
if (layerData.controller.layerType !== FW.SystemDefine.FWLayerType.PERMANENT) {
|
|
668
630
|
this.layerStack.push(layerData);
|
|
669
631
|
}
|
|
670
632
|
}
|
|
@@ -674,9 +636,7 @@ class FWLayerStackManager {
|
|
|
674
636
|
}
|
|
675
637
|
|
|
676
638
|
remove(layerData: FWLayerData): void {
|
|
677
|
-
const index = this.layerStack.findIndex(
|
|
678
|
-
(v) => v.controller === layerData.controller
|
|
679
|
-
);
|
|
639
|
+
const index = this.layerStack.findIndex((v) => v.controller === layerData.controller);
|
|
680
640
|
if (index > -1) {
|
|
681
641
|
this.layerStack.splice(index, 1);
|
|
682
642
|
}
|
|
@@ -692,32 +652,26 @@ class FWLayerStackManager {
|
|
|
692
652
|
}
|
|
693
653
|
|
|
694
654
|
class FWLayerStateManager {
|
|
695
|
-
private layerStates = new Map<
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
>();
|
|
699
|
-
|
|
700
|
-
setState(
|
|
701
|
-
ctrType: new () => FW.LayerController,
|
|
702
|
-
state: FWSystemDefine.FWLayerState
|
|
703
|
-
): void {
|
|
655
|
+
private layerStates = new Map<new () => FW.LayerController, FW.SystemDefine.FWLayerState>();
|
|
656
|
+
|
|
657
|
+
setState(ctrType: new () => FW.LayerController, state: FW.SystemDefine.FWLayerState): void {
|
|
704
658
|
this.layerStates.set(ctrType, state);
|
|
705
659
|
}
|
|
706
660
|
|
|
707
|
-
getState(ctrType: new () => FW.LayerController):
|
|
708
|
-
return this.layerStates.get(ctrType) ||
|
|
661
|
+
getState(ctrType: new () => FW.LayerController): FW.SystemDefine.FWLayerState {
|
|
662
|
+
return this.layerStates.get(ctrType) || FW.SystemDefine.FWLayerState.CLOSED;
|
|
709
663
|
}
|
|
710
664
|
|
|
711
665
|
isOpening(ctrType: new () => FW.LayerController): boolean {
|
|
712
|
-
return this.getState(ctrType) ===
|
|
666
|
+
return this.getState(ctrType) === FW.SystemDefine.FWLayerState.OPENING;
|
|
713
667
|
}
|
|
714
668
|
|
|
715
669
|
isOpened(ctrType: new () => FW.LayerController): boolean {
|
|
716
|
-
return this.getState(ctrType) ===
|
|
670
|
+
return this.getState(ctrType) === FW.SystemDefine.FWLayerState.OPENED;
|
|
717
671
|
}
|
|
718
672
|
|
|
719
673
|
isClosing(ctrType: new () => FW.LayerController): boolean {
|
|
720
|
-
return this.getState(ctrType) ===
|
|
674
|
+
return this.getState(ctrType) === FW.SystemDefine.FWLayerState.CLOSING;
|
|
721
675
|
}
|
|
722
676
|
|
|
723
677
|
removeState(ctrType: new () => FW.LayerController): void {
|
|
@@ -734,13 +688,11 @@ class FWLayerQueueManager {
|
|
|
734
688
|
|
|
735
689
|
handlePopupQueue(
|
|
736
690
|
layerData: FWLayerData,
|
|
737
|
-
layerMap: Map<new () => FW.LayerController, FWLayerData
|
|
691
|
+
layerMap: Map<new () => FW.LayerController, FWLayerData>,
|
|
738
692
|
): boolean {
|
|
739
|
-
if (
|
|
740
|
-
layerData.controller.layerType === FWSystemDefine.FWLayerType.POPUP_QUEUE
|
|
741
|
-
) {
|
|
693
|
+
if (layerData.controller.layerType === FW.SystemDefine.FWLayerType.POPUP_QUEUE) {
|
|
742
694
|
const hasNonPermanentLayers = Array.from(layerMap.values()).some(
|
|
743
|
-
(value) => value.layerType ===
|
|
695
|
+
(value) => value.layerType === FW.SystemDefine.FWLayerType.POPUP_QUEUE,
|
|
744
696
|
);
|
|
745
697
|
|
|
746
698
|
if (hasNonPermanentLayers) {
|
|
@@ -777,45 +729,45 @@ class FWLayerQueueManager {
|
|
|
777
729
|
}
|
|
778
730
|
|
|
779
731
|
class FWLayerLifecycleManager {
|
|
780
|
-
setupLifecycleHooks(layer:
|
|
781
|
-
const originalOnLoad = layer[
|
|
782
|
-
layer[
|
|
732
|
+
setupLifecycleHooks(layer: FW.Layer, ctr: FW.LayerController): void {
|
|
733
|
+
const originalOnLoad = layer['onLoad'];
|
|
734
|
+
layer['onLoad'] = function () {
|
|
783
735
|
originalOnLoad?.call(this);
|
|
784
736
|
ctr.onLoad?.();
|
|
785
737
|
};
|
|
786
738
|
|
|
787
|
-
const originalStart = layer[
|
|
788
|
-
layer[
|
|
739
|
+
const originalStart = layer['start'];
|
|
740
|
+
layer['start'] = function () {
|
|
789
741
|
originalStart?.call(this);
|
|
790
742
|
ctr.onStart?.();
|
|
791
743
|
};
|
|
792
744
|
|
|
793
|
-
const originalOnEnable = layer[
|
|
794
|
-
layer[
|
|
745
|
+
const originalOnEnable = layer['onEnable'];
|
|
746
|
+
layer['onEnable'] = function () {
|
|
795
747
|
originalOnEnable?.call(this);
|
|
796
748
|
ctr.onEnable?.();
|
|
797
749
|
};
|
|
798
750
|
|
|
799
|
-
const originalOnDisable = layer[
|
|
800
|
-
layer[
|
|
751
|
+
const originalOnDisable = layer['onDisable'];
|
|
752
|
+
layer['onDisable'] = function () {
|
|
801
753
|
originalOnDisable?.call(this);
|
|
802
754
|
ctr.onDisable?.();
|
|
803
755
|
};
|
|
804
756
|
|
|
805
|
-
const originalOnDestroy = layer[
|
|
806
|
-
layer[
|
|
757
|
+
const originalOnDestroy = layer['onDestroy'];
|
|
758
|
+
layer['onDestroy'] = function () {
|
|
807
759
|
originalOnDestroy?.call(this);
|
|
808
760
|
ctr.onDestroy?.();
|
|
809
761
|
};
|
|
810
762
|
|
|
811
|
-
const originalUpdate = layer[
|
|
812
|
-
layer[
|
|
763
|
+
const originalUpdate = layer['update'];
|
|
764
|
+
layer['update'] = function (dt: number) {
|
|
813
765
|
originalUpdate?.call(this, dt);
|
|
814
766
|
ctr.onUpdate?.(dt);
|
|
815
767
|
};
|
|
816
768
|
|
|
817
|
-
const originalLateUpdate = layer[
|
|
818
|
-
layer[
|
|
769
|
+
const originalLateUpdate = layer['lateUpdate'];
|
|
770
|
+
layer['lateUpdate'] = function () {
|
|
819
771
|
originalLateUpdate?.call(this);
|
|
820
772
|
ctr.onLateUpdate?.();
|
|
821
773
|
};
|
|
@@ -826,9 +778,7 @@ class FWLayerControllerFactory {
|
|
|
826
778
|
/**
|
|
827
779
|
* 创建并初始化 LayerController
|
|
828
780
|
*/
|
|
829
|
-
createController<Ctr extends FW.LayerController = FW.LayerController>(
|
|
830
|
-
type: new () => Ctr
|
|
831
|
-
): Ctr {
|
|
781
|
+
createController<Ctr extends FW.LayerController = FW.LayerController>(type: new () => Ctr): Ctr {
|
|
832
782
|
const ctr = new type();
|
|
833
783
|
|
|
834
784
|
if (ctr instanceof FrameworkBase) {
|
package/manager/FWManager.ts
CHANGED
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
export abstract class FWManager extends FrameworkBase implements FW.Manager {
|
|
1
|
+
export abstract class FWManager extends FW.FrameworkBase implements FW.Manager {
|
|
4
2
|
public abstract initialize(): void;
|
|
5
3
|
public abstract onDestroy(): void;
|
|
6
4
|
|
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
import { FWSystemDefine } from '../define/FWSystemDefine';
|
|
2
1
|
import FWObject from '../utils/FWObject';
|
|
3
2
|
import { FWObjectPool } from '../utils/FWObjectPool';
|
|
4
3
|
import { FWManager } from './FWManager';
|
|
5
|
-
import FWLog from '../log/FWLog';
|
|
6
4
|
|
|
7
5
|
export default class FWObjectManager extends FWManager implements FW.ObjectManager {
|
|
8
6
|
public initialize(): void {
|
|
@@ -15,7 +13,7 @@ export default class FWObjectManager extends FWManager implements FW.ObjectManag
|
|
|
15
13
|
try {
|
|
16
14
|
pool.onDestroy();
|
|
17
15
|
} catch (error) {
|
|
18
|
-
|
|
16
|
+
FW.Log.error(`销毁对象池失败: ${tag}`, error);
|
|
19
17
|
}
|
|
20
18
|
});
|
|
21
19
|
this.poolMap.clear();
|
|
@@ -56,7 +54,7 @@ export default class FWObjectManager extends FWManager implements FW.ObjectManag
|
|
|
56
54
|
): Promise<FWObjectPool>;
|
|
57
55
|
async createObjectPool<T extends FWObject = FWObject>(): Promise<FWObjectPool> {
|
|
58
56
|
if (arguments.length < 2 || arguments.length > 3) {
|
|
59
|
-
|
|
57
|
+
FW.Log.error('createObjectPool 参数数量错误,需要2-3个参数');
|
|
60
58
|
throw new Error('Invalid arguments count');
|
|
61
59
|
}
|
|
62
60
|
|
|
@@ -65,7 +63,7 @@ export default class FWObjectManager extends FWManager implements FW.ObjectManag
|
|
|
65
63
|
let objectAssetProperty: FW.AssetProperty = null;
|
|
66
64
|
let objectParent: cc.Node;
|
|
67
65
|
let objectTag: string;
|
|
68
|
-
let objectType:
|
|
66
|
+
let objectType: FW.SystemDefine.FWObjectType;
|
|
69
67
|
|
|
70
68
|
try {
|
|
71
69
|
const resources = arguments[0];
|
|
@@ -91,13 +89,13 @@ export default class FWObjectManager extends FWManager implements FW.ObjectManag
|
|
|
91
89
|
const arg = arguments[2];
|
|
92
90
|
if (typeof arg === 'string') {
|
|
93
91
|
objectTag = arg;
|
|
94
|
-
objectType =
|
|
92
|
+
objectType = FW.SystemDefine.FWObjectType.OPACITY;
|
|
95
93
|
} else if (typeof arg === 'number') {
|
|
96
94
|
objectTag = `pool_${this.poolIdCounter++}`;
|
|
97
95
|
objectType = arg;
|
|
98
96
|
} else {
|
|
99
97
|
objectTag = `pool_${this.poolIdCounter++}`;
|
|
100
|
-
objectType =
|
|
98
|
+
objectType = FW.SystemDefine.FWObjectType.OPACITY;
|
|
101
99
|
}
|
|
102
100
|
|
|
103
101
|
if (this.poolMap.has(objectTag)) {
|
|
@@ -109,7 +107,7 @@ export default class FWObjectManager extends FWManager implements FW.ObjectManag
|
|
|
109
107
|
|
|
110
108
|
return pool;
|
|
111
109
|
} catch (error) {
|
|
112
|
-
|
|
110
|
+
FW.Log.error('创建对象池失败:', error);
|
|
113
111
|
|
|
114
112
|
if (objectNode && objectNode.isValid) {
|
|
115
113
|
objectNode.destroy();
|
|
@@ -121,7 +119,7 @@ export default class FWObjectManager extends FWManager implements FW.ObjectManag
|
|
|
121
119
|
|
|
122
120
|
getObjectPool(tag: string): FWObjectPool | undefined {
|
|
123
121
|
if (!this.poolMap.has(tag)) {
|
|
124
|
-
|
|
122
|
+
FW.Log.warn(`对象池不存在: ${tag}`);
|
|
125
123
|
return undefined;
|
|
126
124
|
}
|
|
127
125
|
return this.poolMap.get(tag);
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import FWLog from '../log/FWLog';
|
|
2
1
|
import { FWManager } from './FWManager';
|
|
3
2
|
|
|
4
3
|
/**
|
|
@@ -55,7 +54,7 @@ export class FWPerformanceManager extends FWManager implements FW.PerformanceMan
|
|
|
55
54
|
this.updateModuleStats(module, duration);
|
|
56
55
|
|
|
57
56
|
if (duration > this.performanceOptions.warningThreshold!) {
|
|
58
|
-
|
|
57
|
+
FW.Log.warn(`Performance warning: ${module}.${operation} took ${duration}ms`);
|
|
59
58
|
}
|
|
60
59
|
}
|
|
61
60
|
|
|
@@ -154,7 +153,7 @@ export class FWPerformanceManager extends FWManager implements FW.PerformanceMan
|
|
|
154
153
|
|
|
155
154
|
const removedCount = initialLength - this.metrics.length;
|
|
156
155
|
if (removedCount > 0) {
|
|
157
|
-
|
|
156
|
+
FW.Log.debug(`Cleaned up ${removedCount} old performance records`);
|
|
158
157
|
}
|
|
159
158
|
|
|
160
159
|
return removedCount;
|