@ives_xxz/framework 1.5.4 → 1.5.7
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 +129 -56
- package/Framework.ts +64 -24
- package/FrameworkBase.ts +58 -26
- package/controller/FWLayerController.ts +17 -12
- package/data/FWData.ts +3 -5
- package/logic/FWLogic.ts +4 -6
- package/manager/FWLayerManager.ts +124 -69
- package/manager/FWTaskManager.ts +2 -2
- package/package.json +4 -2
- package/service/FWService.ts +2 -4
- package/service/socket/FWSocket.ts +44 -33
- package/service/socket/FWSocketHandle.ts +14 -14
- package/service/socket/FWSocketSender.ts +11 -12
- package/package-lock.json.meta +0 -6
|
@@ -1,11 +1,16 @@
|
|
|
1
|
-
import { FWManager } from
|
|
2
|
-
import { FWLayerController } from
|
|
3
|
-
import { FWSystemDefine } from
|
|
4
|
-
import FWLayer from
|
|
5
|
-
import FWLog from
|
|
6
|
-
import { FWQueue } from
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
import { FWManager } from "./FWManager";
|
|
2
|
+
import { FWLayerController } from "../controller/FWLayerController";
|
|
3
|
+
import { FWSystemDefine } from "../define/FWSystemDefine";
|
|
4
|
+
import FWLayer from "../layer/FWLayer";
|
|
5
|
+
import FWLog from "../log/FWLog";
|
|
6
|
+
import { FWQueue } from "../utils/FWQueue";
|
|
7
|
+
import FWAssetConfig from "../config/FWAssetConfig";
|
|
8
|
+
import FWLogic from "../logic/FWLogic";
|
|
9
|
+
import FWData from "../data/FWData";
|
|
10
|
+
import FWSocketSender from "../service/socket/FWSocketSender";
|
|
11
|
+
import FWSocketHandle from "../service/socket/FWSocketHandle";
|
|
12
|
+
|
|
13
|
+
const ADD_EXTERNAL_REFERENCE: string = "addExternalReference";
|
|
9
14
|
|
|
10
15
|
export class FWLayerManager extends FWManager implements FW.LayerManager {
|
|
11
16
|
private resourceManager: FWLayerResourceManager;
|
|
@@ -29,7 +34,7 @@ export class FWLayerManager extends FWManager implements FW.LayerManager {
|
|
|
29
34
|
this.resourceManager,
|
|
30
35
|
this.createManager,
|
|
31
36
|
this.stackManager,
|
|
32
|
-
this.queueManager
|
|
37
|
+
this.queueManager
|
|
33
38
|
);
|
|
34
39
|
}
|
|
35
40
|
|
|
@@ -37,7 +42,7 @@ export class FWLayerManager extends FWManager implements FW.LayerManager {
|
|
|
37
42
|
* 异步打开Layer
|
|
38
43
|
*/
|
|
39
44
|
async openAsync<Ctr extends FW.LayerController = FW.LayerController>(
|
|
40
|
-
data: FW.LayerOpenArgs
|
|
45
|
+
data: FW.LayerOpenArgs
|
|
41
46
|
): Promise<Ctr> {
|
|
42
47
|
return this.openManager.openLayerAsync(data) as Promise<Ctr>;
|
|
43
48
|
}
|
|
@@ -45,17 +50,23 @@ export class FWLayerManager extends FWManager implements FW.LayerManager {
|
|
|
45
50
|
/**
|
|
46
51
|
* 同步打开
|
|
47
52
|
*/
|
|
48
|
-
openSync<Ctr extends FW.LayerController = FW.LayerController>(
|
|
53
|
+
openSync<Ctr extends FW.LayerController = FW.LayerController>(
|
|
54
|
+
data: FW.LayerOpenArgs
|
|
55
|
+
): Ctr {
|
|
49
56
|
return this.openManager.openLayerSync(data) as unknown as Ctr;
|
|
50
57
|
}
|
|
51
58
|
|
|
52
59
|
/**
|
|
53
60
|
* 显示layer并恢复所有节点事件
|
|
54
61
|
*/
|
|
55
|
-
displayLayer<Ctr extends FW.LayerController = FW.LayerController>(
|
|
62
|
+
displayLayer<Ctr extends FW.LayerController = FW.LayerController>(
|
|
63
|
+
ctr: Ctr
|
|
64
|
+
): Ctr {
|
|
56
65
|
const layerData = ctr.layerData;
|
|
57
66
|
|
|
58
|
-
if (
|
|
67
|
+
if (
|
|
68
|
+
!this.dataManager.getLayerMap().has(ctr.layerData.controllerConstructor)
|
|
69
|
+
) {
|
|
59
70
|
FWLog.warn(`display layer failed,layer name : ${layerData.layerName}`);
|
|
60
71
|
return;
|
|
61
72
|
}
|
|
@@ -75,9 +86,13 @@ export class FWLayerManager extends FWManager implements FW.LayerManager {
|
|
|
75
86
|
/**
|
|
76
87
|
* 隐藏layer并隐藏所有节点事件
|
|
77
88
|
*/
|
|
78
|
-
hideLayer<Ctr extends FW.LayerController = FW.LayerController>(
|
|
89
|
+
hideLayer<Ctr extends FW.LayerController = FW.LayerController>(
|
|
90
|
+
ctr: Ctr
|
|
91
|
+
): Ctr {
|
|
79
92
|
const layerData = ctr.layerData;
|
|
80
|
-
if (
|
|
93
|
+
if (
|
|
94
|
+
!this.dataManager.getLayerMap().has(ctr.layerData.controllerConstructor)
|
|
95
|
+
) {
|
|
81
96
|
FWLog.warn(`hide layer failed,layer name : ${layerData.layerName}`);
|
|
82
97
|
return;
|
|
83
98
|
}
|
|
@@ -121,7 +136,9 @@ export class FWLayerManager extends FWManager implements FW.LayerManager {
|
|
|
121
136
|
for (let i = 0; i < count; i++) {
|
|
122
137
|
let layerData = this.stackManager.pop();
|
|
123
138
|
let ctr = layerData.controller;
|
|
124
|
-
if (
|
|
139
|
+
if (
|
|
140
|
+
!this.dataManager.getLayerMap().has(layerData.controllerConstructor)
|
|
141
|
+
) {
|
|
125
142
|
return;
|
|
126
143
|
}
|
|
127
144
|
if (cc.isValid(ctr.layer?.node)) {
|
|
@@ -153,7 +170,7 @@ export class FWLayerManager extends FWManager implements FW.LayerManager {
|
|
|
153
170
|
* 关闭layer
|
|
154
171
|
*/
|
|
155
172
|
async close<Ctr extends FW.LayerController = FW.LayerController>(
|
|
156
|
-
ctr: Ctr
|
|
173
|
+
ctr: Ctr
|
|
157
174
|
): Promise<FW.LayerController> {
|
|
158
175
|
if (!ctr) return;
|
|
159
176
|
|
|
@@ -246,7 +263,7 @@ class FWLayerDataManager {
|
|
|
246
263
|
* 获取已存在的Layer
|
|
247
264
|
*/
|
|
248
265
|
getExistingLayer<Ctr extends FW.LayerController = FW.LayerController>(
|
|
249
|
-
type: new () => Ctr
|
|
266
|
+
type: new () => Ctr
|
|
250
267
|
): Ctr | undefined {
|
|
251
268
|
for (const [key, value] of this.layerMap) {
|
|
252
269
|
if (value.controllerConstructor === type) {
|
|
@@ -260,11 +277,11 @@ class FWLayerDataManager {
|
|
|
260
277
|
* 从类型创建Layer数据
|
|
261
278
|
*/
|
|
262
279
|
createLayerData<Ctr extends FW.LayerController = FW.LayerController>(
|
|
263
|
-
type: new () => Ctr
|
|
280
|
+
type: new () => Ctr
|
|
264
281
|
): FW.LayerData {
|
|
265
282
|
const ctr = new type();
|
|
266
283
|
const ctrName = cc.js.getClassName(ctr);
|
|
267
|
-
const layerData = this.
|
|
284
|
+
const layerData = this.generationData(ctr);
|
|
268
285
|
|
|
269
286
|
layerData.controllerConstructor = type;
|
|
270
287
|
layerData.controller = ctr;
|
|
@@ -280,12 +297,18 @@ class FWLayerDataManager {
|
|
|
280
297
|
}
|
|
281
298
|
|
|
282
299
|
/**
|
|
283
|
-
*
|
|
300
|
+
* 生成数据
|
|
284
301
|
*/
|
|
285
|
-
private
|
|
302
|
+
private generationData(ctr: FW.LayerController): FWLayerData {
|
|
286
303
|
const layerData = new FWLayerData();
|
|
287
304
|
const layerType = ctr.layerType;
|
|
288
305
|
|
|
306
|
+
ctr.config = FW.Entry.getComponent(FWAssetConfig);
|
|
307
|
+
ctr.logic = FW.Entry.getComponent(FWLogic);
|
|
308
|
+
ctr.data = FW.Entry.getComponent(FWData);
|
|
309
|
+
ctr.sender = FW.Entry.getComponent(FWSocketSender);
|
|
310
|
+
ctr.handle = FW.Entry.getComponent(FWSocketHandle);
|
|
311
|
+
|
|
289
312
|
layerData.layerRenderOrder = ctr.renderOrder;
|
|
290
313
|
layerData.layerAssetProperty = ctr.layerAssetProperty;
|
|
291
314
|
layerData.layerType = layerType;
|
|
@@ -311,7 +334,7 @@ class FWLayerDataManager {
|
|
|
311
334
|
* 获取已存在的代理
|
|
312
335
|
*/
|
|
313
336
|
getExistingProxy<Ctr extends FW.LayerController = FW.LayerController>(
|
|
314
|
-
type: new () => Ctr
|
|
337
|
+
type: new () => Ctr
|
|
315
338
|
): Ctr | undefined {
|
|
316
339
|
return this.layerMap.get(type)?.controllerProxy as Ctr;
|
|
317
340
|
}
|
|
@@ -323,7 +346,7 @@ class FWLayerDataManager {
|
|
|
323
346
|
layerData: FWLayerData,
|
|
324
347
|
res: { asset: cc.Prefab; uuid: string },
|
|
325
348
|
layer: FWLayer,
|
|
326
|
-
layerName: string
|
|
349
|
+
layerName: string
|
|
327
350
|
): void {
|
|
328
351
|
layerData.loaded = true;
|
|
329
352
|
layerData.layer = layer;
|
|
@@ -369,7 +392,7 @@ class FWLayerDataManager {
|
|
|
369
392
|
try {
|
|
370
393
|
cb?.(null);
|
|
371
394
|
} catch (e) {
|
|
372
|
-
FWLog.error(
|
|
395
|
+
FWLog.error("External ref update callback error:", e);
|
|
373
396
|
}
|
|
374
397
|
});
|
|
375
398
|
layerData.externalReference.clear();
|
|
@@ -394,7 +417,8 @@ class FWLayerDataManager {
|
|
|
394
417
|
}
|
|
395
418
|
|
|
396
419
|
class FWLayerCreateManager {
|
|
397
|
-
private lifecycleManager: FWLayerLifecycleManager =
|
|
420
|
+
private lifecycleManager: FWLayerLifecycleManager =
|
|
421
|
+
new FWLayerLifecycleManager();
|
|
398
422
|
|
|
399
423
|
/**
|
|
400
424
|
* 创建Layer节点
|
|
@@ -404,7 +428,7 @@ class FWLayerCreateManager {
|
|
|
404
428
|
layerComponent: string,
|
|
405
429
|
renderOrder: number,
|
|
406
430
|
parent: cc.Node,
|
|
407
|
-
position: FW.Vec3
|
|
431
|
+
position: FW.Vec3
|
|
408
432
|
): FWLayer {
|
|
409
433
|
parent = parent || FW.Entry.scene?.node;
|
|
410
434
|
position = position || cc.Vec3.ZERO;
|
|
@@ -446,14 +470,14 @@ class FWLayerOpenManager {
|
|
|
446
470
|
private resourceManager: FWLayerResourceManager,
|
|
447
471
|
private createManager: FWLayerCreateManager,
|
|
448
472
|
private stackManager: FWLayerStackManager,
|
|
449
|
-
private queueManager: FWLayerQueueManager
|
|
473
|
+
private queueManager: FWLayerQueueManager
|
|
450
474
|
) {}
|
|
451
475
|
|
|
452
476
|
/**
|
|
453
477
|
* 统一的Layer打开方法
|
|
454
478
|
*/
|
|
455
479
|
async openLayerAsync<Ctr extends FW.LayerController = FW.LayerController>(
|
|
456
|
-
data: FW.LayerOpenArgs
|
|
480
|
+
data: FW.LayerOpenArgs
|
|
457
481
|
): Promise<Ctr> {
|
|
458
482
|
if (!this.validateOpenData(data)) {
|
|
459
483
|
return undefined;
|
|
@@ -475,7 +499,12 @@ class FWLayerOpenManager {
|
|
|
475
499
|
return proxy as Ctr;
|
|
476
500
|
}
|
|
477
501
|
|
|
478
|
-
if (
|
|
502
|
+
if (
|
|
503
|
+
this.queueManager.handlePopupQueue(
|
|
504
|
+
layerData,
|
|
505
|
+
this.dataManager.getLayerMap()
|
|
506
|
+
)
|
|
507
|
+
) {
|
|
479
508
|
return undefined;
|
|
480
509
|
}
|
|
481
510
|
|
|
@@ -484,7 +513,9 @@ class FWLayerOpenManager {
|
|
|
484
513
|
return this.asyncGenerationLayer(layerData, data);
|
|
485
514
|
}
|
|
486
515
|
|
|
487
|
-
openLayerSync<Ctr extends FW.LayerController = FW.LayerController>(
|
|
516
|
+
openLayerSync<Ctr extends FW.LayerController = FW.LayerController>(
|
|
517
|
+
data: FW.LayerOpenArgs
|
|
518
|
+
): Ctr {
|
|
488
519
|
if (!this.validateOpenData(data)) {
|
|
489
520
|
return undefined;
|
|
490
521
|
}
|
|
@@ -505,7 +536,12 @@ class FWLayerOpenManager {
|
|
|
505
536
|
return proxy as Ctr;
|
|
506
537
|
}
|
|
507
538
|
|
|
508
|
-
if (
|
|
539
|
+
if (
|
|
540
|
+
this.queueManager.handlePopupQueue(
|
|
541
|
+
layerData,
|
|
542
|
+
this.dataManager.getLayerMap()
|
|
543
|
+
)
|
|
544
|
+
) {
|
|
509
545
|
return undefined;
|
|
510
546
|
}
|
|
511
547
|
|
|
@@ -542,10 +578,9 @@ class FWLayerOpenManager {
|
|
|
542
578
|
/**
|
|
543
579
|
* 异步生成Layer
|
|
544
580
|
*/
|
|
545
|
-
private async asyncGenerationLayer<
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
): Promise<Ctr> {
|
|
581
|
+
private async asyncGenerationLayer<
|
|
582
|
+
Ctr extends FW.LayerController = FW.LayerController
|
|
583
|
+
>(layerData: FWLayerData, data: FW.LayerOpenArgs): Promise<Ctr> {
|
|
549
584
|
try {
|
|
550
585
|
const res = await this.resourceManager.loadLayerAsync(layerData);
|
|
551
586
|
const ctr = this.createLayer(layerData, res, data) as Ctr;
|
|
@@ -561,10 +596,9 @@ class FWLayerOpenManager {
|
|
|
561
596
|
/**
|
|
562
597
|
* 同步创建Layer
|
|
563
598
|
*/
|
|
564
|
-
private syncGenerationLayer<
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
): Ctr {
|
|
599
|
+
private syncGenerationLayer<
|
|
600
|
+
Ctr extends FW.LayerController = FW.LayerController
|
|
601
|
+
>(layerData: FWLayerData, data: FW.LayerOpenArgs): Ctr {
|
|
568
602
|
try {
|
|
569
603
|
const res = this.resourceManager.loadLayerSync(layerData);
|
|
570
604
|
const ctr = this.createLayer(layerData, res, data) as Ctr;
|
|
@@ -583,14 +617,14 @@ class FWLayerOpenManager {
|
|
|
583
617
|
private createLayer<Ctr extends FW.LayerController = FW.LayerController>(
|
|
584
618
|
layerData: FWLayerData,
|
|
585
619
|
res: { asset: cc.Prefab; uuid: string },
|
|
586
|
-
data: FW.LayerOpenArgs
|
|
620
|
+
data: FW.LayerOpenArgs
|
|
587
621
|
): Ctr {
|
|
588
622
|
const layer = this.createManager.createLayer(
|
|
589
623
|
res.asset,
|
|
590
624
|
res.asset.name,
|
|
591
625
|
layerData.controller.renderOrder,
|
|
592
626
|
data.parent,
|
|
593
|
-
data.position
|
|
627
|
+
data.position
|
|
594
628
|
);
|
|
595
629
|
const layerName = cc.js.getClassName(layer);
|
|
596
630
|
|
|
@@ -600,22 +634,29 @@ class FWLayerOpenManager {
|
|
|
600
634
|
|
|
601
635
|
this.createManager.setupLayerLifecycle(layer, layerData.controller);
|
|
602
636
|
|
|
603
|
-
if (
|
|
637
|
+
if (
|
|
638
|
+
layerData.controller.layerType !== FWSystemDefine.FWLayerType.PERMANENT
|
|
639
|
+
) {
|
|
604
640
|
this.stackManager.push(layerData);
|
|
605
641
|
}
|
|
606
642
|
|
|
607
643
|
this.dataManager.removeFromRegistry(layerData.controllerConstructor);
|
|
608
644
|
|
|
609
|
-
layerData.controllerProxy =
|
|
645
|
+
layerData.controllerProxy =
|
|
646
|
+
this.dataManager.createControllerProxy(layerData);
|
|
610
647
|
|
|
611
648
|
return layerData.controllerProxy as Ctr;
|
|
612
649
|
}
|
|
613
650
|
}
|
|
614
651
|
|
|
615
652
|
class FWLayerResourceManager {
|
|
616
|
-
async loadLayerAsync(
|
|
653
|
+
async loadLayerAsync(
|
|
654
|
+
layerData: FWLayerData
|
|
655
|
+
): Promise<{ asset: cc.Prefab; uuid: string }> {
|
|
617
656
|
try {
|
|
618
|
-
const res = await FW.Entry.resMgr.loadAssetData<cc.Prefab>(
|
|
657
|
+
const res = await FW.Entry.resMgr.loadAssetData<cc.Prefab>(
|
|
658
|
+
layerData.layerAssetProperty
|
|
659
|
+
);
|
|
619
660
|
res.user = layerData.layerName;
|
|
620
661
|
res.autoRelease = layerData.controller.autoRelease;
|
|
621
662
|
res.dependentBundle = layerData.controller.layerAssetProperty.bundle;
|
|
@@ -629,7 +670,9 @@ class FWLayerResourceManager {
|
|
|
629
670
|
loadLayerSync(layerData: FWLayerData): { asset: cc.Prefab; uuid: string } {
|
|
630
671
|
layerData.layerAssetProperty.bundle =
|
|
631
672
|
layerData.layerAssetProperty.bundle || FW.Entry.bundleName;
|
|
632
|
-
const res = FW.Entry.resMgr.getAssetData<cc.Prefab>(
|
|
673
|
+
const res = FW.Entry.resMgr.getAssetData<cc.Prefab>(
|
|
674
|
+
layerData.layerAssetProperty
|
|
675
|
+
);
|
|
633
676
|
res.user = layerData.layerName;
|
|
634
677
|
res.autoRelease = layerData.controller.autoRelease;
|
|
635
678
|
res.dependentBundle = layerData.controller.layerAssetProperty.bundle;
|
|
@@ -641,7 +684,9 @@ class FWLayerStackManager {
|
|
|
641
684
|
private layerStack: FWLayerData[] = [];
|
|
642
685
|
|
|
643
686
|
push(layerData: FWLayerData): void {
|
|
644
|
-
if (
|
|
687
|
+
if (
|
|
688
|
+
layerData.controller.layerType !== FWSystemDefine.FWLayerType.PERMANENT
|
|
689
|
+
) {
|
|
645
690
|
this.layerStack.push(layerData);
|
|
646
691
|
}
|
|
647
692
|
}
|
|
@@ -651,7 +696,9 @@ class FWLayerStackManager {
|
|
|
651
696
|
}
|
|
652
697
|
|
|
653
698
|
remove(layerData: FWLayerData): void {
|
|
654
|
-
const index = this.layerStack.findIndex(
|
|
699
|
+
const index = this.layerStack.findIndex(
|
|
700
|
+
(v) => v.controller === layerData.controller
|
|
701
|
+
);
|
|
655
702
|
if (index > -1) {
|
|
656
703
|
this.layerStack.splice(index, 1);
|
|
657
704
|
}
|
|
@@ -667,9 +714,15 @@ class FWLayerStackManager {
|
|
|
667
714
|
}
|
|
668
715
|
|
|
669
716
|
class FWLayerStateManager {
|
|
670
|
-
private layerStates = new Map<
|
|
671
|
-
|
|
672
|
-
|
|
717
|
+
private layerStates = new Map<
|
|
718
|
+
new () => FW.LayerController,
|
|
719
|
+
FWSystemDefine.FWLayerState
|
|
720
|
+
>();
|
|
721
|
+
|
|
722
|
+
setState(
|
|
723
|
+
ctrType: new () => FW.LayerController,
|
|
724
|
+
state: FWSystemDefine.FWLayerState
|
|
725
|
+
): void {
|
|
673
726
|
this.layerStates.set(ctrType, state);
|
|
674
727
|
}
|
|
675
728
|
|
|
@@ -703,11 +756,13 @@ class FWLayerQueueManager {
|
|
|
703
756
|
|
|
704
757
|
handlePopupQueue(
|
|
705
758
|
layerData: FWLayerData,
|
|
706
|
-
layerMap: Map<new () => FW.LayerController, FWLayerData
|
|
759
|
+
layerMap: Map<new () => FW.LayerController, FWLayerData>
|
|
707
760
|
): boolean {
|
|
708
|
-
if (
|
|
761
|
+
if (
|
|
762
|
+
layerData.controller.layerType === FWSystemDefine.FWLayerType.POPUP_QUEUE
|
|
763
|
+
) {
|
|
709
764
|
const hasNonPermanentLayers = Array.from(layerMap.values()).some(
|
|
710
|
-
(value) => value.layerType === FWSystemDefine.FWLayerType.POPUP_QUEUE
|
|
765
|
+
(value) => value.layerType === FWSystemDefine.FWLayerType.POPUP_QUEUE
|
|
711
766
|
);
|
|
712
767
|
|
|
713
768
|
if (hasNonPermanentLayers) {
|
|
@@ -745,44 +800,44 @@ class FWLayerQueueManager {
|
|
|
745
800
|
|
|
746
801
|
class FWLayerLifecycleManager {
|
|
747
802
|
setupLifecycleHooks(layer: FWLayer, ctr: FW.LayerController): void {
|
|
748
|
-
const originalOnLoad = layer[
|
|
749
|
-
layer[
|
|
803
|
+
const originalOnLoad = layer["onLoad"];
|
|
804
|
+
layer["onLoad"] = function () {
|
|
750
805
|
originalOnLoad?.call(this);
|
|
751
806
|
ctr.onLoad?.();
|
|
752
807
|
};
|
|
753
808
|
|
|
754
|
-
const originalStart = layer[
|
|
755
|
-
layer[
|
|
809
|
+
const originalStart = layer["start"];
|
|
810
|
+
layer["start"] = function () {
|
|
756
811
|
originalStart?.call(this);
|
|
757
812
|
ctr.onStart?.();
|
|
758
813
|
};
|
|
759
814
|
|
|
760
|
-
const originalOnEnable = layer[
|
|
761
|
-
layer[
|
|
815
|
+
const originalOnEnable = layer["onEnable"];
|
|
816
|
+
layer["onEnable"] = function () {
|
|
762
817
|
originalOnEnable?.call(this);
|
|
763
818
|
ctr.onEnable?.();
|
|
764
819
|
};
|
|
765
820
|
|
|
766
|
-
const originalOnDisable = layer[
|
|
767
|
-
layer[
|
|
821
|
+
const originalOnDisable = layer["onDisable"];
|
|
822
|
+
layer["onDisable"] = function () {
|
|
768
823
|
originalOnDisable?.call(this);
|
|
769
824
|
ctr.onDisable?.();
|
|
770
825
|
};
|
|
771
826
|
|
|
772
|
-
const originalOnDestroy = layer[
|
|
773
|
-
layer[
|
|
827
|
+
const originalOnDestroy = layer["onDestroy"];
|
|
828
|
+
layer["onDestroy"] = function () {
|
|
774
829
|
originalOnDestroy?.call(this);
|
|
775
830
|
ctr.onDestroy?.();
|
|
776
831
|
};
|
|
777
832
|
|
|
778
|
-
const originalUpdate = layer[
|
|
779
|
-
layer[
|
|
833
|
+
const originalUpdate = layer["update"];
|
|
834
|
+
layer["update"] = function (dt: number) {
|
|
780
835
|
originalUpdate?.call(this, dt);
|
|
781
836
|
ctr.onUpdate?.(dt);
|
|
782
837
|
};
|
|
783
838
|
|
|
784
|
-
const originalLateUpdate = layer[
|
|
785
|
-
layer[
|
|
839
|
+
const originalLateUpdate = layer["lateUpdate"];
|
|
840
|
+
layer["lateUpdate"] = function () {
|
|
786
841
|
originalLateUpdate?.call(this);
|
|
787
842
|
ctr.onLateUpdate?.();
|
|
788
843
|
};
|
package/manager/FWTaskManager.ts
CHANGED
|
@@ -22,14 +22,14 @@ export default class FWTaskManager extends FWManager implements FW.TaskManager {
|
|
|
22
22
|
taskId: options?.taskId || ++this.taskId,
|
|
23
23
|
log: options?.log,
|
|
24
24
|
});
|
|
25
|
-
this.tasks.set(task.id, task);
|
|
25
|
+
this.tasks.set(task.id, task);
|
|
26
26
|
return task;
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
getTask(taskId: number): FW.Task | undefined {
|
|
30
30
|
return this.tasks.get(taskId);
|
|
31
31
|
}
|
|
32
|
-
|
|
32
|
+
|
|
33
33
|
stopTask(taskId: number): void {
|
|
34
34
|
this.tasks.get(taskId)?.stop();
|
|
35
35
|
this.tasks.delete(taskId);
|
package/package.json
CHANGED
package/service/FWService.ts
CHANGED
|
@@ -1,9 +1,7 @@
|
|
|
1
|
-
import { FrameworkBase } from
|
|
1
|
+
import { FrameworkBase } from "../FrameworkBase";
|
|
2
2
|
|
|
3
3
|
export default abstract class FWService extends FrameworkBase {
|
|
4
|
-
public initialize()
|
|
5
|
-
this.dependencies();
|
|
6
|
-
}
|
|
4
|
+
public abstract initialize();
|
|
7
5
|
public abstract onDestroy(): void;
|
|
8
6
|
|
|
9
7
|
protected onRestart() {
|
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
import { FWSystemConfig } from
|
|
2
|
-
import FWLog from
|
|
3
|
-
import FWService from
|
|
4
|
-
import FWSocketHandle from './FWSocketHandle';
|
|
5
|
-
import FWSocketSender from './FWSocketSender';
|
|
1
|
+
import { FWSystemConfig } from "../../config/FWSystemConfig";
|
|
2
|
+
import FWLog from "../../log/FWLog";
|
|
3
|
+
import FWService from "../FWService";
|
|
6
4
|
|
|
7
5
|
/**
|
|
8
6
|
* TODO 犹豫socket没有改版暂时已老的cmd字符串映射方式做,后期优化
|
|
@@ -15,9 +13,9 @@ export default class FWSocket extends FWService implements FW.Socket {
|
|
|
15
13
|
/** socket */
|
|
16
14
|
socket: WebSocket = null;
|
|
17
15
|
/** 消息发送者 */
|
|
18
|
-
protected socketSender:
|
|
16
|
+
protected socketSender: FW.SocketSender;
|
|
19
17
|
/** 消息处理者 */
|
|
20
|
-
protected socketHandle:
|
|
18
|
+
protected socketHandle: FW.SocketHandle;
|
|
21
19
|
/** 重连次数 */
|
|
22
20
|
protected reconnectTimes: number;
|
|
23
21
|
/** 心跳间隔时间 */
|
|
@@ -56,7 +54,6 @@ export default class FWSocket extends FWService implements FW.Socket {
|
|
|
56
54
|
protected messageEvents: { [key: string]: (msg: any) => void };
|
|
57
55
|
|
|
58
56
|
public initialize(): void {
|
|
59
|
-
super.initialize();
|
|
60
57
|
this.messageEvents = cc.js.createMap();
|
|
61
58
|
this.protocolContainer = new Map<Symbol, FW.ProtocolPolling>();
|
|
62
59
|
this.protocolRegistry = new Map<string, Set<Symbol>>();
|
|
@@ -68,7 +65,7 @@ export default class FWSocket extends FWService implements FW.Socket {
|
|
|
68
65
|
tag: string,
|
|
69
66
|
socketSender: FW.SocketSender,
|
|
70
67
|
socketHandle: FW.SocketHandle,
|
|
71
|
-
config: FW.SocketConfig
|
|
68
|
+
config: FW.SocketConfig
|
|
72
69
|
): FW.SocketPromiseProxy {
|
|
73
70
|
try {
|
|
74
71
|
FW.Entry.timeMgr.unSchedule(this);
|
|
@@ -112,10 +109,14 @@ export default class FWSocket extends FWService implements FW.Socket {
|
|
|
112
109
|
this.heartInternal = config?.heartInternal || defaultConfig.heartInternal;
|
|
113
110
|
this.heartTimeout = config?.heartTimeout || defaultConfig.heartTimeout;
|
|
114
111
|
this.heartWeakTime = config?.heartWeakTime || defaultConfig.heartWeakTime;
|
|
115
|
-
this.maxReconnectTimes =
|
|
116
|
-
|
|
117
|
-
this.
|
|
118
|
-
|
|
112
|
+
this.maxReconnectTimes =
|
|
113
|
+
config?.maxReconnectTimes || defaultConfig.maxReconnectTimes;
|
|
114
|
+
this.reconnectInternal =
|
|
115
|
+
config?.reconnectInternal || defaultConfig.reconnectInternal;
|
|
116
|
+
this.protocolSymbol =
|
|
117
|
+
config?.protocolSymbol || defaultConfig.protocolSymbol;
|
|
118
|
+
this.protocolPollingTime =
|
|
119
|
+
config?.protocolPollingTime || defaultConfig.protocolPollingTime;
|
|
119
120
|
|
|
120
121
|
this.promiseProxy = {
|
|
121
122
|
promise: undefined,
|
|
@@ -129,7 +130,7 @@ export default class FWSocket extends FWService implements FW.Socket {
|
|
|
129
130
|
|
|
130
131
|
return this.promiseProxy;
|
|
131
132
|
} catch (e) {
|
|
132
|
-
FWLog.error(
|
|
133
|
+
FWLog.error("创建socket失败:", e);
|
|
133
134
|
}
|
|
134
135
|
}
|
|
135
136
|
/**
|
|
@@ -195,7 +196,7 @@ export default class FWSocket extends FWService implements FW.Socket {
|
|
|
195
196
|
if (force) this.reconnectTimes = 0;
|
|
196
197
|
|
|
197
198
|
FWLog.debug(
|
|
198
|
-
`socket reconnect : reconnectTimes->${this.reconnectTimes},maxReconnectTimes->${this.maxReconnectTimes}
|
|
199
|
+
`socket reconnect : reconnectTimes->${this.reconnectTimes},maxReconnectTimes->${this.maxReconnectTimes}`
|
|
199
200
|
);
|
|
200
201
|
if (++this.reconnectTimes >= this.maxReconnectTimes) {
|
|
201
202
|
this.socketHandle?.onTimeout?.();
|
|
@@ -206,16 +207,22 @@ export default class FWSocket extends FWService implements FW.Socket {
|
|
|
206
207
|
this.socket?.close();
|
|
207
208
|
this.socket = null;
|
|
208
209
|
|
|
209
|
-
this.createSocket(
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
210
|
+
this.createSocket(
|
|
211
|
+
this.address,
|
|
212
|
+
this.tag,
|
|
213
|
+
this.socketSender,
|
|
214
|
+
this.socketHandle,
|
|
215
|
+
{
|
|
216
|
+
heartInternal: this.heartInternal,
|
|
217
|
+
heartTimeout: this.heartTimeout,
|
|
218
|
+
heartWeakTime: this.heartWeakTime,
|
|
219
|
+
maxReconnectTimes: this.maxReconnectTimes,
|
|
220
|
+
reconnectInternal: this.reconnectInternal,
|
|
221
|
+
protocolSymbol: this.protocolSymbol,
|
|
222
|
+
protocolPollingTime: this.protocolPollingTime,
|
|
223
|
+
certificate: this.certificate,
|
|
224
|
+
}
|
|
225
|
+
);
|
|
219
226
|
}
|
|
220
227
|
|
|
221
228
|
async send(msg: string) {
|
|
@@ -225,7 +232,8 @@ export default class FWSocket extends FWService implements FW.Socket {
|
|
|
225
232
|
const protocolKey = this.socketSender.getProtocolKey?.(msg);
|
|
226
233
|
if (protocolKey) {
|
|
227
234
|
const symbol = Symbol(protocolKey);
|
|
228
|
-
const registry =
|
|
235
|
+
const registry =
|
|
236
|
+
this.protocolRegistry.get(protocolKey) || new Set<Symbol>();
|
|
229
237
|
const protocolPolling: FW.ProtocolPolling = {
|
|
230
238
|
msg: msg,
|
|
231
239
|
schedule: FW.Entry.timeMgr.schedule(
|
|
@@ -234,7 +242,7 @@ export default class FWSocket extends FWService implements FW.Socket {
|
|
|
234
242
|
},
|
|
235
243
|
this.protocolPollingTime,
|
|
236
244
|
cc.macro.REPEAT_FOREVER,
|
|
237
|
-
this
|
|
245
|
+
this
|
|
238
246
|
),
|
|
239
247
|
};
|
|
240
248
|
this.protocolRegistry.set(protocolKey, registry.add(symbol));
|
|
@@ -246,7 +254,7 @@ export default class FWSocket extends FWService implements FW.Socket {
|
|
|
246
254
|
|
|
247
255
|
/** 连接打开 */
|
|
248
256
|
private onSocketOpen() {
|
|
249
|
-
FWLog.debug(
|
|
257
|
+
FWLog.debug("on open!");
|
|
250
258
|
FW.Entry.timeMgr.unSchedule(this);
|
|
251
259
|
this.reconnectTimes = 0;
|
|
252
260
|
this.sendHeartTimestamp = 0;
|
|
@@ -271,7 +279,7 @@ export default class FWSocket extends FWService implements FW.Socket {
|
|
|
271
279
|
},
|
|
272
280
|
this.heartInternal / 1000,
|
|
273
281
|
cc.macro.REPEAT_FOREVER,
|
|
274
|
-
this
|
|
282
|
+
this
|
|
275
283
|
);
|
|
276
284
|
}
|
|
277
285
|
|
|
@@ -290,17 +298,20 @@ export default class FWSocket extends FWService implements FW.Socket {
|
|
|
290
298
|
|
|
291
299
|
/** socket关闭 */
|
|
292
300
|
private onSocketClose() {
|
|
293
|
-
FWLog.debug(
|
|
301
|
+
FWLog.debug("on close!");
|
|
294
302
|
this.socketHandle?.onClose?.();
|
|
295
303
|
FW.Entry.timeMgr.scheduleOnce(
|
|
296
304
|
() => {
|
|
297
|
-
if (
|
|
298
|
-
|
|
305
|
+
if (
|
|
306
|
+
this.getReadyState() == WebSocket.CLOSING ||
|
|
307
|
+
this.getReadyState() == WebSocket.CLOSED
|
|
308
|
+
) {
|
|
309
|
+
FWLog.debug("on close!");
|
|
299
310
|
this.reconnect();
|
|
300
311
|
}
|
|
301
312
|
},
|
|
302
313
|
this.reconnectInternal,
|
|
303
|
-
this
|
|
314
|
+
this
|
|
304
315
|
);
|
|
305
316
|
}
|
|
306
317
|
|