@kkarum/framework 2.3.17

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.
Files changed (171) hide show
  1. package/Framework.ts +337 -0
  2. package/Framework.ts.meta +10 -0
  3. package/FrameworkBase.ts +207 -0
  4. package/FrameworkBase.ts.meta +10 -0
  5. package/FrameworkInitialize.ts +79 -0
  6. package/FrameworkInitialize.ts.meta +10 -0
  7. package/README.md +93 -0
  8. package/README.md.meta +6 -0
  9. package/animation/FWAnimation.ts +13 -0
  10. package/animation/FWAnimation.ts.meta +10 -0
  11. package/animation/FWSkeleton.ts +174 -0
  12. package/animation/FWSkeleton.ts.meta +10 -0
  13. package/animation/FWTween.ts +60 -0
  14. package/animation/FWTween.ts.meta +10 -0
  15. package/animation.meta +13 -0
  16. package/component/FWVirtuaScrollViewComponent.ts +56 -0
  17. package/component/FWVirtuaScrollViewComponent.ts.meta +10 -0
  18. package/component/FWVirtualViewComponent.ts +2212 -0
  19. package/component/FWVirtualViewComponent.ts.meta +10 -0
  20. package/component.meta +13 -0
  21. package/config/FWAssetConfig.ts +7 -0
  22. package/config/FWAssetConfig.ts.meta +10 -0
  23. package/config/FWSystemConfig.ts +29 -0
  24. package/config/FWSystemConfig.ts.meta +10 -0
  25. package/config.meta +13 -0
  26. package/controller/FWLayerController.ts +178 -0
  27. package/controller/FWLayerController.ts.meta +10 -0
  28. package/controller.meta +13 -0
  29. package/data/FWData.ts +6 -0
  30. package/data/FWData.ts.meta +10 -0
  31. package/data.meta +13 -0
  32. package/define/FWEventDefine.ts +28 -0
  33. package/define/FWEventDefine.ts.meta +10 -0
  34. package/define/FWSystemDefine.ts +154 -0
  35. package/define/FWSystemDefine.ts.meta +10 -0
  36. package/define.meta +13 -0
  37. package/entry/FWEntry.ts +219 -0
  38. package/entry/FWEntry.ts.meta +10 -0
  39. package/entry.meta +13 -0
  40. package/expand/FWCocosExpand.ts +73 -0
  41. package/expand/FWCocosExpand.ts.meta +10 -0
  42. package/expand/FWDecorator.ts +366 -0
  43. package/expand/FWDecorator.ts.meta +10 -0
  44. package/expand/FWNodeExpand.ts +147 -0
  45. package/expand/FWNodeExpand.ts.meta +10 -0
  46. package/expand/FWRollingViewNesting.ts +195 -0
  47. package/expand/FWRollingViewNesting.ts.meta +10 -0
  48. package/expand/FWTweenExpand.ts +44 -0
  49. package/expand/FWTweenExpand.ts.meta +10 -0
  50. package/expand.meta +13 -0
  51. package/item/FWVirtualListItem.ts +141 -0
  52. package/item/FWVirtualListItem.ts.meta +10 -0
  53. package/item.meta +13 -0
  54. package/language/FWLanguage.ts +71 -0
  55. package/language/FWLanguage.ts.meta +10 -0
  56. package/language/FWLanguageLabelLocalize.ts +144 -0
  57. package/language/FWLanguageLabelLocalize.ts.meta +10 -0
  58. package/language/FWLanguageSkeletonLocalize.ts +106 -0
  59. package/language/FWLanguageSkeletonLocalize.ts.meta +10 -0
  60. package/language/FWLanguageSpriteLocalize.ts +81 -0
  61. package/language/FWLanguageSpriteLocalize.ts.meta +10 -0
  62. package/language.meta +13 -0
  63. package/layer/FWLayer.ts +14 -0
  64. package/layer/FWLayer.ts.meta +10 -0
  65. package/layer.meta +13 -0
  66. package/log/FWLog.ts +135 -0
  67. package/log/FWLog.ts.meta +10 -0
  68. package/log.meta +13 -0
  69. package/logic/FWLogic.ts +6 -0
  70. package/logic/FWLogic.ts.meta +10 -0
  71. package/logic.meta +13 -0
  72. package/machine/FWAnimationMachine.ts +28 -0
  73. package/machine/FWAnimationMachine.ts.meta +10 -0
  74. package/machine/FWStateMachine.ts +74 -0
  75. package/machine/FWStateMachine.ts.meta +10 -0
  76. package/machine.meta +13 -0
  77. package/manager/FWAnimationManager.ts +89 -0
  78. package/manager/FWAnimationManager.ts.meta +10 -0
  79. package/manager/FWAssetManager.ts +451 -0
  80. package/manager/FWAssetManager.ts.meta +10 -0
  81. package/manager/FWAudioManager.ts +339 -0
  82. package/manager/FWAudioManager.ts.meta +10 -0
  83. package/manager/FWBundleManager.ts +97 -0
  84. package/manager/FWBundleManager.ts.meta +10 -0
  85. package/manager/FWComponentManager.ts +24 -0
  86. package/manager/FWComponentManager.ts.meta +10 -0
  87. package/manager/FWEngineManager.ts +74 -0
  88. package/manager/FWEngineManager.ts.meta +10 -0
  89. package/manager/FWEventManager.ts +361 -0
  90. package/manager/FWEventManager.ts.meta +10 -0
  91. package/manager/FWHotUpdateManager.ts +344 -0
  92. package/manager/FWHotUpdateManager.ts.meta +10 -0
  93. package/manager/FWLanguageManager.ts +114 -0
  94. package/manager/FWLanguageManager.ts.meta +10 -0
  95. package/manager/FWLayerManager.ts +862 -0
  96. package/manager/FWLayerManager.ts.meta +10 -0
  97. package/manager/FWManager.ts +9 -0
  98. package/manager/FWManager.ts.meta +10 -0
  99. package/manager/FWObjectManager.ts +161 -0
  100. package/manager/FWObjectManager.ts.meta +10 -0
  101. package/manager/FWPerformanceManager.ts +198 -0
  102. package/manager/FWPerformanceManager.ts.meta +10 -0
  103. package/manager/FWPromiseManager.ts +504 -0
  104. package/manager/FWPromiseManager.ts.meta +10 -0
  105. package/manager/FWResManager.ts +299 -0
  106. package/manager/FWResManager.ts.meta +10 -0
  107. package/manager/FWSocketManager.ts +93 -0
  108. package/manager/FWSocketManager.ts.meta +10 -0
  109. package/manager/FWStateManager.ts +100 -0
  110. package/manager/FWStateManager.ts.meta +10 -0
  111. package/manager/FWTaskManager.ts +41 -0
  112. package/manager/FWTaskManager.ts.meta +10 -0
  113. package/manager/FWTimeManager.ts +442 -0
  114. package/manager/FWTimeManager.ts.meta +10 -0
  115. package/manager/FWUiManager.ts +217 -0
  116. package/manager/FWUiManager.ts.meta +10 -0
  117. package/manager.meta +13 -0
  118. package/package.json +11 -0
  119. package/package.json.meta +6 -0
  120. package/registry/FWRegistry.ts +62 -0
  121. package/registry/FWRegistry.ts.meta +10 -0
  122. package/registry.meta +13 -0
  123. package/render/FWRenderAssembler.ts +620 -0
  124. package/render/FWRenderAssembler.ts.meta +10 -0
  125. package/render.meta +13 -0
  126. package/scene/FWScene.ts +23 -0
  127. package/scene/FWScene.ts.meta +10 -0
  128. package/scene.meta +13 -0
  129. package/service/FWService.ts +11 -0
  130. package/service/FWService.ts.meta +10 -0
  131. package/service/http/FWHttp.ts +103 -0
  132. package/service/http/FWHttp.ts.meta +10 -0
  133. package/service/http.meta +13 -0
  134. package/service/socket/FWSocket.ts +367 -0
  135. package/service/socket/FWSocket.ts.meta +10 -0
  136. package/service/socket/FWSocketHandle.ts +16 -0
  137. package/service/socket/FWSocketHandle.ts.meta +10 -0
  138. package/service/socket/FWSocketSender.ts +14 -0
  139. package/service/socket/FWSocketSender.ts.meta +10 -0
  140. package/service/socket/mock/FWSocketMock.ts +202 -0
  141. package/service/socket/mock/FWSocketMock.ts.meta +10 -0
  142. package/service/socket/mock.meta +13 -0
  143. package/service/socket.meta +13 -0
  144. package/service.meta +13 -0
  145. package/state/FWState.ts +8 -0
  146. package/state/FWState.ts.meta +10 -0
  147. package/state.meta +13 -0
  148. package/types/Creator.d.ts +121 -0
  149. package/types/Creator.d.ts.meta +6 -0
  150. package/types/FW.d.ts +3016 -0
  151. package/types/FW.d.ts.meta +6 -0
  152. package/types/Global.d.ts +22 -0
  153. package/types/Global.d.ts.meta +10 -0
  154. package/types.meta +13 -0
  155. package/utils/FWLodash.ts +105 -0
  156. package/utils/FWLodash.ts.meta +10 -0
  157. package/utils/FWMask.ts +222 -0
  158. package/utils/FWMask.ts.meta +10 -0
  159. package/utils/FWObject.ts +27 -0
  160. package/utils/FWObject.ts.meta +10 -0
  161. package/utils/FWObjectPool.ts +177 -0
  162. package/utils/FWObjectPool.ts.meta +10 -0
  163. package/utils/FWQueue.ts +55 -0
  164. package/utils/FWQueue.ts.meta +10 -0
  165. package/utils/FWResLoader.ts +139 -0
  166. package/utils/FWResLoader.ts.meta +10 -0
  167. package/utils/FWTask.ts +227 -0
  168. package/utils/FWTask.ts.meta +10 -0
  169. package/utils/FWUtils.ts +15 -0
  170. package/utils/FWUtils.ts.meta +10 -0
  171. package/utils.meta +13 -0
@@ -0,0 +1,299 @@
1
+ import { FWLodash } from "../utils/FWLodash";
2
+ import { FWAssetManager } from "./FWAssetManager";
3
+ import { FWBundleManager } from "./FWBundleManager";
4
+ import { FWManager } from "./FWManager";
5
+
6
+ export class FWResManager extends FWManager implements FW.ResManager {
7
+ private bundleMgr: FW.BundleManager;
8
+ private assetMgr: FW.AssetManager;
9
+ private rejectHandlerListener: FW.ResRejectHandlerListener;
10
+ public initialize() {
11
+ this.bundleMgr = new FWBundleManager(this);
12
+ this.assetMgr = new FWAssetManager(this);
13
+ }
14
+
15
+ registerRejectHandler(listener: FW.ResRejectHandlerListener): void {
16
+ this.rejectHandlerListener = listener;
17
+ }
18
+ /**
19
+ * 加载bundle
20
+ * @param bundleName
21
+ * @returns
22
+ */
23
+ async loadBundle(bundleName: string): Promise<cc.AssetManager.Bundle> {
24
+ return new Promise(async (resolve, reject) => {
25
+ try {
26
+ const depends = FWLodash.cloneDeep(FW.Entry.getDepend(bundleName));
27
+ if (depends && depends.length > 0) {
28
+ for (const depend of depends) {
29
+ if (depend === undefined) continue;
30
+
31
+ if (this.bundleMgr.has(depend)) continue;
32
+
33
+ await this.loadBundle(depend);
34
+
35
+ const config = FW.Entry.getComponent<FW.AssetConfig>(
36
+ `${depend}${FW.SystemDefine.FWBindTag.CONFIG}`,
37
+ );
38
+ if (!config) continue;
39
+ const preLoad = config.preLoad;
40
+ const keys = Object.keys(preLoad);
41
+
42
+ if (keys.length > 0) {
43
+ const preloadRecursive = async (
44
+ obj: FW.LoadConfig | FW.AssetProperty,
45
+ ) => {
46
+ for (const key of Object.keys(obj)) {
47
+ const value: any = (obj as any)[key];
48
+
49
+ if (value && typeof value.path === "string") {
50
+ const path: string = value.path;
51
+ const type: string = value.type;
52
+ const d: string = value.bundle || depend;
53
+ const priorityLoaded = value.priorityLoaded || false;
54
+
55
+ if (path && priorityLoaded) {
56
+ await this.assetMgr.load({
57
+ path,
58
+ bundle: d,
59
+ type,
60
+ });
61
+ }
62
+ } else if (value && typeof value === "object") {
63
+ await preloadRecursive(value);
64
+ }
65
+ }
66
+ };
67
+ await preloadRecursive(config.preLoad);
68
+ }
69
+ }
70
+ }
71
+
72
+ const bundle = await this.bundleMgr.load(bundleName);
73
+
74
+ resolve(bundle);
75
+ } catch (e) {
76
+ this.rejectHandlerListener?.loadBundleHandler?.(e, bundleName);
77
+ reject(e);
78
+ }
79
+ });
80
+ }
81
+ /**
82
+ * 从远程加载spine动画
83
+ * @param data
84
+ * @returns sp.skeletonData
85
+ */
86
+ async loadSpineDataFromRemote(data: {
87
+ img: string;
88
+ ske: string;
89
+ atlas: string;
90
+ bin?: boolean;
91
+ }): Promise<sp.SkeletonData> {
92
+ try {
93
+ return await this.assetMgr.loadSpineDataFromRemote(data);
94
+ } catch (e) {
95
+ this.rejectHandlerListener?.loadResHandler?.(e, data.ske);
96
+ throw e;
97
+ }
98
+ }
99
+
100
+ async loadRemote<T extends cc.Asset = cc.Asset>(
101
+ url: string,
102
+ options?: {
103
+ ext?: string;
104
+ enableCache?: boolean;
105
+ maxRetryCount?: number;
106
+ texture?: boolean;
107
+ cb?: (asset: T) => void;
108
+ },
109
+ ): Promise<T> {
110
+ try {
111
+ const asset = await this.assetMgr.loadRemote(url, options);
112
+ if (!options?.texture) {
113
+ return asset as T;
114
+ } else {
115
+ if (asset instanceof cc.Texture2D) {
116
+ return new cc.SpriteFrame(asset) as unknown as T;
117
+ } else {
118
+ return asset as T;
119
+ }
120
+ }
121
+ } catch (e) {
122
+ this.rejectHandlerListener?.loadResHandler?.(e, url);
123
+ throw e;
124
+ }
125
+ }
126
+
127
+ /**
128
+ * 获取bundle
129
+ * @param bundleName
130
+ * @returns
131
+ */
132
+ getBundle(bundleName: string): cc.AssetManager.Bundle {
133
+ return this.bundleMgr.get(bundleName);
134
+ }
135
+
136
+ getBundleMap(): Map<string, cc.AssetManager.Bundle> {
137
+ return this.bundleMgr.getBundleMap();
138
+ }
139
+
140
+ initializeRemoteBundleConfig(config: FW.RemoteBundleConfig) {
141
+ return this.bundleMgr.initializeRemoteBundleConfig(config);
142
+ }
143
+ /**
144
+ * 释放bundle
145
+ * @param bundleName
146
+ * @returns
147
+ */
148
+ releaseBundle(bundleName: string): void {
149
+ this.bundleMgr.release(bundleName);
150
+ }
151
+
152
+ /**
153
+ * 加载资源数据
154
+ * @param bundleName
155
+ * @returns
156
+ */
157
+ async loadAssetData<T extends cc.Asset>(assetProperty: FW.AssetProperty) {
158
+ try {
159
+ return this.process<T>(await this.assetMgr.load(assetProperty));
160
+ } catch (e) {
161
+ this.rejectHandlerListener?.loadResHandler?.(e, assetProperty.path);
162
+ throw e;
163
+ }
164
+ }
165
+ /**
166
+ * 加载资源
167
+ * @param assetProperty
168
+ * @returns
169
+ */
170
+ async loadAsset<T extends cc.Asset>(
171
+ assetProperty: FW.AssetProperty,
172
+ texture?: boolean,
173
+ ): Promise<T> {
174
+ try {
175
+ const res = await this.assetMgr.load(assetProperty);
176
+ if (texture) {
177
+ return res.asset as T;
178
+ }
179
+ return this.process<T>(res).asset as T;
180
+ } catch (e) {
181
+ this.rejectHandlerListener?.loadResHandler?.(e, assetProperty.path);
182
+ throw e;
183
+ }
184
+ }
185
+
186
+ async preLoad(assetProperty: FW.AssetProperty | FW.AssetProperty[]) {
187
+ try {
188
+ return this.assetMgr.preLoad(assetProperty);
189
+ } catch (e) {
190
+ const arr = Array.isArray(assetProperty)
191
+ ? assetProperty
192
+ : [assetProperty];
193
+ arr.forEach((item) => {
194
+ this.rejectHandlerListener?.loadResHandler?.(e, item.path);
195
+ });
196
+ throw e;
197
+ }
198
+ }
199
+
200
+ /**
201
+ * 加载文件夹
202
+ */
203
+ async loadDir(assetProperty: FW.AssetProperty) {
204
+ try {
205
+ const res = await this.assetMgr.loadDir(assetProperty);
206
+ return res;
207
+ } catch (e) {
208
+ this.rejectHandlerListener?.loadResHandler?.(e, assetProperty.path);
209
+ throw e;
210
+ }
211
+ }
212
+
213
+ /**
214
+ * 获取资源数据
215
+ * @param bundleName
216
+ * @returns
217
+ */
218
+ getAssetData<T extends cc.Asset>(
219
+ assetProperty: FW.AssetProperty,
220
+ texture?: boolean,
221
+ ) {
222
+ const res = this.assetMgr.get(assetProperty);
223
+ if (texture) {
224
+ return res;
225
+ }
226
+ return this.process<T>(res);
227
+ }
228
+ /**
229
+ * 获取资源
230
+ * @param assetProperty
231
+ * @returns
232
+ */
233
+ getAsset<T extends cc.Asset>(
234
+ assetProperty: FW.AssetProperty,
235
+ texture?: boolean,
236
+ ): T {
237
+ const res = this.assetMgr.get(assetProperty);
238
+ if (texture) {
239
+ return res.asset as T;
240
+ }
241
+ return this.process<T>(res).asset as T;
242
+ }
243
+
244
+ /**
245
+ * 释放资源
246
+ * @param bundleName
247
+ * @returns
248
+ */
249
+ releaseAsset(assetProperty: FW.AssetProperty): void {
250
+ this.assetMgr.release(assetProperty);
251
+ }
252
+ /**
253
+ * 包是否存在
254
+ * @param bundleName
255
+ */
256
+ hasBundle(bundleName: string): boolean {
257
+ return this.bundleMgr.has(bundleName);
258
+ }
259
+ /**
260
+ * 资源是否存在
261
+ * @param assetProperty
262
+ */
263
+ hasAsset(assetProperty: FW.AssetProperty): boolean {
264
+ return this.assetMgr.has(assetProperty);
265
+ }
266
+
267
+ /**
268
+ * 数据处理
269
+ * @param res
270
+ * @returns
271
+ */
272
+ private process<T extends cc.Asset>(res: FW.AssetData) {
273
+ let asset: cc.Asset;
274
+
275
+ if (res.asset instanceof cc.Texture2D) {
276
+ asset = new cc.SpriteFrame(res.asset);
277
+ } else {
278
+ asset = res.asset as T;
279
+ }
280
+
281
+ return {
282
+ asset: asset,
283
+ uuid: res.uuid,
284
+ user: res.user,
285
+ depend: res.depend,
286
+ reference: res.reference,
287
+ type: res.type,
288
+ dependentBundle: res.dependentBundle,
289
+ autoRelease: res.autoRelease,
290
+ loaded: res.loaded,
291
+ assetProperty: res.assetProperty,
292
+ };
293
+ }
294
+
295
+ public onDestroy(): void {
296
+ this.assetMgr.onDestroy();
297
+ this.bundleMgr.onDestroy();
298
+ }
299
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "ver": "1.1.0",
3
+ "uuid": "fcb5dbc8-82ed-473e-bc81-c3b9b11a6ac6",
4
+ "importer": "typescript",
5
+ "isPlugin": false,
6
+ "loadPluginInWeb": true,
7
+ "loadPluginInNative": true,
8
+ "loadPluginInEditor": false,
9
+ "subMetas": {}
10
+ }
@@ -0,0 +1,93 @@
1
+ import FWSocket from '../service/socket/FWSocket';
2
+ import { FWManager } from './FWManager';
3
+
4
+ /**
5
+ * socket管理器
6
+ */
7
+ export default class FWSocketManager extends FWManager implements FW.SocketManager {
8
+ protected socketMap: Map<string, FW.Socket>;
9
+
10
+ public initialize(): void {
11
+ this.socketMap = new Map<string, FW.Socket>();
12
+ }
13
+ public onDestroy(): void {}
14
+
15
+ /**
16
+ * 创建一个socket
17
+ * @param address
18
+ * heartTimeout:number 毫秒
19
+ * heartWeakTime: number 毫秒
20
+ * heartInternal: number 毫秒
21
+ */
22
+ async createSocket(
23
+ tag: string,
24
+ address: string,
25
+ sender: FW.Sender,
26
+ handle: FW.Handle,
27
+ config: FW.SocketConfig,
28
+ ): Promise<FW.Socket> {
29
+ const proxy = new FWSocket().createSocket(address, tag, sender, handle, {
30
+ heartTimeout: config.heartTimeout,
31
+ heartWeakTime: config.heartWeakTime,
32
+ heartInternal: config.heartInternal,
33
+ maxReconnectTimes: config.maxReconnectTimes,
34
+ reconnectInternal: config.reconnectInternal,
35
+ protocolSymbol: config.protocolSymbol,
36
+ protocolPollingTime: config.protocolPollingTime,
37
+ certificate: config.certificate,
38
+ });
39
+ this.socketMap.set(tag, proxy.socket);
40
+
41
+ await proxy.promise;
42
+
43
+ return proxy.socket;
44
+ }
45
+ /**
46
+ * 获取socket
47
+ * @param type
48
+ * @returns
49
+ */
50
+ getSocket(tag?: string) {
51
+ if (!this.socketMap.has(tag)) {
52
+ for (const [key, value] of this.socketMap) {
53
+ return value;
54
+ }
55
+ }
56
+ return this.socketMap.get(tag);
57
+ }
58
+
59
+ getSocketMap() {
60
+ return this.socketMap;
61
+ }
62
+ /** 暂停消息处理 */
63
+ pauseMessageHandle() {
64
+ for (const [key, socket] of this.socketMap) {
65
+ socket.pauseMessageHandle();
66
+ }
67
+ }
68
+
69
+ closeAll(): void {
70
+ for (const [key, socket] of this.socketMap) {
71
+ this.closeSocket(socket);
72
+ }
73
+ this.socketMap.clear();
74
+ }
75
+
76
+ /** 恢复消息处理 */
77
+ resumeMessageHandle() {
78
+ for (const [key, socket] of this.socketMap) {
79
+ socket.resumeMessageHandle();
80
+ }
81
+ }
82
+
83
+ /**
84
+ * 关闭
85
+ * @param fs
86
+ * @returns
87
+ */
88
+ closeSocket(fs: FW.Socket) {
89
+ FW.Log.debug('主动关闭socket!');
90
+ fs.close();
91
+ this.socketMap.delete(fs.getTag());
92
+ }
93
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "ver": "1.1.0",
3
+ "uuid": "0100af82-a0d2-4359-b2b7-3a384f150ce1",
4
+ "importer": "typescript",
5
+ "isPlugin": false,
6
+ "loadPluginInWeb": true,
7
+ "loadPluginInNative": true,
8
+ "loadPluginInEditor": false,
9
+ "subMetas": {}
10
+ }
@@ -0,0 +1,100 @@
1
+ import { FWManager } from './FWManager';
2
+ import FWStateMachine from '../machine/FWStateMachine';
3
+
4
+ export class FWStateManager extends FWManager implements FW.StateManager {
5
+ private stateMap: Map<string, FWStateMachine>;
6
+
7
+ public initialize(): void {
8
+ this.stateMap = new Map<string, FWStateMachine>();
9
+ }
10
+
11
+ /**
12
+ * 注册状态进指定状态机
13
+ * @param stateMachineName
14
+ * @param state
15
+ * @returns
16
+ */
17
+ register(
18
+ state: FW.StateMachineRegisterArgs | FW.StateMachineRegisterArgs[],
19
+ stateMachineName?: string,
20
+ ) {
21
+ stateMachineName = stateMachineName || FW.Entry.bundleName;
22
+
23
+ if (!this.stateMap.has(stateMachineName)) {
24
+ FW.Log.warn('stateMachine is not register!');
25
+ return;
26
+ }
27
+ const machine = this.stateMap.get(stateMachineName);
28
+
29
+ if (Array.isArray(state)) {
30
+ state.forEach((v) => machine.register(v));
31
+ } else {
32
+ machine.register(state);
33
+ }
34
+ }
35
+ /**
36
+ * 注销指定状态机的某个状态
37
+ * @param stateMachineName
38
+ * @param stateType
39
+ */
40
+ unRegister(stateType: number, stateMachineName?: string) {
41
+ stateMachineName = stateMachineName || FW.Entry.bundleName;
42
+ if (!this.stateMap.has(stateMachineName)) {
43
+ FW.Log.warn('stateMachine is not register!');
44
+ return;
45
+ }
46
+ this.stateMap.get(stateMachineName).unRegister(stateType);
47
+ }
48
+
49
+ /**
50
+ * 创建一个状态机
51
+ * @param stateMachineName
52
+ */
53
+ createStateMachine(stateMachineName?: string): FW.StateMachine {
54
+ stateMachineName = stateMachineName || FW.Entry.bundleName;
55
+ if (this.stateMap.has(stateMachineName)) {
56
+ this.stateMap.delete(stateMachineName);
57
+ }
58
+ const machine = new FWStateMachine();
59
+ this.stateMap.set(stateMachineName, machine);
60
+ return machine;
61
+ }
62
+ /**
63
+ * 移除一个状态机
64
+ * @param stateMachineName
65
+ * @returns
66
+ */
67
+ removeStateMachine(stateMachineName?: string) {
68
+ stateMachineName = stateMachineName || FW.Entry.bundleName;
69
+ if (!this.stateMap.has(stateMachineName)) {
70
+ return;
71
+ }
72
+ this.stateMap.delete(stateMachineName);
73
+ }
74
+ /**
75
+ * 暂停一个状态机
76
+ * @param stateMachineName
77
+ * @returns
78
+ */
79
+ pauseStateMachine(stateMachineName?: string) {
80
+ stateMachineName = stateMachineName || FW.Entry.bundleName;
81
+ if (!this.stateMap.has(stateMachineName)) {
82
+ return;
83
+ }
84
+ this.stateMap.get(stateMachineName).pause();
85
+ }
86
+ /**
87
+ * 恢复状态机
88
+ * @param stateMachineName
89
+ * @returns
90
+ */
91
+ resumeStateMachine(stateMachineName?: string) {
92
+ stateMachineName = stateMachineName || FW.Entry.bundleName;
93
+ if (!this.stateMap.has(stateMachineName)) {
94
+ this.createStateMachine(stateMachineName);
95
+ }
96
+ this.stateMap.get(stateMachineName).resume();
97
+ }
98
+
99
+ public onDestroy(): void {}
100
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "ver": "1.1.0",
3
+ "uuid": "23fb111f-4904-4335-9433-f24147af47c9",
4
+ "importer": "typescript",
5
+ "isPlugin": false,
6
+ "loadPluginInWeb": true,
7
+ "loadPluginInNative": true,
8
+ "loadPluginInEditor": false,
9
+ "subMetas": {}
10
+ }
@@ -0,0 +1,41 @@
1
+ import FWTask from '../utils/FWTask';
2
+ import { FWManager } from './FWManager';
3
+
4
+ export default class FWTaskManager extends FWManager implements FW.TaskManager {
5
+ public initialize(): void {}
6
+ public onDestroy(): void {
7
+ this.tasks.forEach((task) => task.stop());
8
+ }
9
+ /**
10
+ * 任务合集
11
+ */
12
+ private tasks: Map<number, FWTask> = new Map<number, FWTask>();
13
+ /**
14
+ * 任务id
15
+ */
16
+ private taskId = 0;
17
+
18
+ createTask(options?: Partial<FW.TaskOptions>): FW.Task {
19
+ const task = new FWTask({
20
+ tasksFrameCount: options?.tasksFrameCount,
21
+ frameBudget: options?.frameBudget,
22
+ taskId: options?.taskId || ++this.taskId,
23
+ log: options?.log,
24
+ });
25
+ this.tasks.set(task.id, task);
26
+ return task;
27
+ }
28
+
29
+ getTask(taskId: number): FW.Task | undefined {
30
+ return this.tasks.get(taskId);
31
+ }
32
+
33
+ stopTask(taskId: number): void {
34
+ this.tasks.get(taskId)?.stop();
35
+ this.tasks.delete(taskId);
36
+ }
37
+
38
+ getAllTasks(): FW.Task[] {
39
+ return Array.from(this.tasks.values());
40
+ }
41
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "ver": "1.1.0",
3
+ "uuid": "cd43dfbe-fd5d-4f6b-94de-01bc5c0a8368",
4
+ "importer": "typescript",
5
+ "isPlugin": false,
6
+ "loadPluginInWeb": true,
7
+ "loadPluginInNative": true,
8
+ "loadPluginInEditor": false,
9
+ "subMetas": {}
10
+ }