@chiyou/minigame-framework 1.0.0 → 1.0.2

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 (152) hide show
  1. package/assets/AssetsPackage/GUI/Images/Block.png +0 -0
  2. package/assets/AssetsPackage/GUI/Images/Block.png.meta +134 -0
  3. package/assets/AssetsPackage/GUI/Images.meta +9 -0
  4. package/assets/AssetsPackage/GUI/UIPrefabs/ChessBoard_Card.prefab +509 -0
  5. package/assets/AssetsPackage/GUI/UIPrefabs/ChessBoard_Card.prefab.meta +13 -0
  6. package/assets/AssetsPackage/GUI/UIPrefabs.meta +9 -0
  7. package/assets/AssetsPackage/GUI.meta +11 -0
  8. package/assets/AssetsPackage/SpriteAtlas/Card_Pattern.plist +1106 -0
  9. package/assets/AssetsPackage/SpriteAtlas/Card_Pattern.plist.meta +3329 -0
  10. package/assets/AssetsPackage/SpriteAtlas/Card_Pattern.png +0 -0
  11. package/assets/AssetsPackage/SpriteAtlas/Card_Pattern.png.meta +134 -0
  12. package/assets/AssetsPackage/SpriteAtlas/SA_Card.plist +1196 -0
  13. package/assets/AssetsPackage/SpriteAtlas/SA_Card.plist.meta +3605 -0
  14. package/assets/AssetsPackage/SpriteAtlas/SA_Card.png +0 -0
  15. package/assets/AssetsPackage/SpriteAtlas/SA_Card.png.meta +134 -0
  16. package/assets/AssetsPackage/SpriteAtlas.meta +11 -0
  17. package/assets/AssetsPackage/SpriteFrame/Card_PatternType_Back.png +0 -0
  18. package/assets/AssetsPackage/SpriteFrame/Card_PatternType_Back.png.meta +134 -0
  19. package/assets/AssetsPackage/SpriteFrame/Card_TowardType_Back_BG.png +0 -0
  20. package/assets/AssetsPackage/SpriteFrame/Card_TowardType_Back_BG.png.meta +134 -0
  21. package/assets/AssetsPackage/SpriteFrame/Card_TowardType_Back_FG.png +0 -0
  22. package/assets/AssetsPackage/SpriteFrame/Card_TowardType_Back_FG.png.meta +134 -0
  23. package/assets/AssetsPackage/SpriteFrame/Card_TowardType_Front_BG.png +0 -0
  24. package/assets/AssetsPackage/SpriteFrame/Card_TowardType_Front_BG.png.meta +134 -0
  25. package/assets/AssetsPackage/SpriteFrame/Card_TowardType_Front_FG.png +0 -0
  26. package/assets/AssetsPackage/SpriteFrame/Card_TowardType_Front_FG.png.meta +134 -0
  27. package/assets/AssetsPackage/SpriteFrame.meta +11 -0
  28. package/assets/AssetsPackage.meta +9 -0
  29. package/assets/Scenes/Game.scene +831 -0
  30. package/assets/Scenes/Game.scene.meta +11 -0
  31. package/assets/Scenes.meta +9 -0
  32. package/assets/Scripts/Biz.meta +9 -0
  33. package/assets/Scripts/Framework/Adapter/AdAdapter/AbsAdAdapter.ts +312 -0
  34. package/assets/Scripts/Framework/Adapter/AdAdapter/AbsAdAdapter.ts.meta +9 -0
  35. package/assets/Scripts/Framework/Adapter/AdAdapter/AdAdapterBilibili.ts +294 -0
  36. package/assets/Scripts/Framework/Adapter/AdAdapter/AdAdapterBilibili.ts.meta +9 -0
  37. package/assets/Scripts/Framework/Adapter/AdAdapter/AdAdapterDouYin.ts +650 -0
  38. package/assets/Scripts/Framework/Adapter/AdAdapter/AdAdapterDouYin.ts.meta +9 -0
  39. package/assets/Scripts/Framework/Adapter/AdAdapter/AdAdapterHonor.ts +782 -0
  40. package/assets/Scripts/Framework/Adapter/AdAdapter/AdAdapterHonor.ts.meta +9 -0
  41. package/assets/Scripts/Framework/Adapter/AdAdapter/AdAdapterHuaWei.ts +582 -0
  42. package/assets/Scripts/Framework/Adapter/AdAdapter/AdAdapterHuaWei.ts.meta +9 -0
  43. package/assets/Scripts/Framework/Adapter/AdAdapter/AdAdapterJingDong.ts +298 -0
  44. package/assets/Scripts/Framework/Adapter/AdAdapter/AdAdapterJingDong.ts.meta +9 -0
  45. package/assets/Scripts/Framework/Adapter/AdAdapter/AdAdapterKuaiShou.ts +575 -0
  46. package/assets/Scripts/Framework/Adapter/AdAdapter/AdAdapterKuaiShou.ts.meta +9 -0
  47. package/assets/Scripts/Framework/Adapter/AdAdapter/AdAdapterOppo.ts +946 -0
  48. package/assets/Scripts/Framework/Adapter/AdAdapter/AdAdapterOppo.ts.meta +9 -0
  49. package/assets/Scripts/Framework/Adapter/AdAdapter/AdAdapterTapTap.ts +643 -0
  50. package/assets/Scripts/Framework/Adapter/AdAdapter/AdAdapterTapTap.ts.meta +9 -0
  51. package/assets/Scripts/Framework/Adapter/AdAdapter/AdAdapterVivo.ts +616 -0
  52. package/assets/Scripts/Framework/Adapter/AdAdapter/AdAdapterVivo.ts.meta +9 -0
  53. package/assets/Scripts/Framework/Adapter/AdAdapter/AdAdapterWeiXin.ts +847 -0
  54. package/assets/Scripts/Framework/Adapter/AdAdapter/AdAdapterWeiXin.ts.meta +9 -0
  55. package/assets/Scripts/Framework/Adapter/AdAdapter/AdAdapterXiaoMi.ts +747 -0
  56. package/assets/Scripts/Framework/Adapter/AdAdapter/AdAdapterXiaoMi.ts.meta +9 -0
  57. package/assets/Scripts/Framework/Adapter/AdAdapter/AdAdapterZhiFuBao.ts +579 -0
  58. package/assets/Scripts/Framework/Adapter/AdAdapter/AdAdapterZhiFuBao.ts.meta +9 -0
  59. package/assets/Scripts/Framework/Adapter/AdAdapter.meta +9 -0
  60. package/assets/Scripts/Framework/Adapter/PlatformAdapter/AbsPlatformAdapter.ts +102 -0
  61. package/assets/Scripts/Framework/Adapter/PlatformAdapter/AbsPlatformAdapter.ts.meta +9 -0
  62. package/assets/Scripts/Framework/Adapter/PlatformAdapter/PlatformAdapterBilibili.ts +660 -0
  63. package/assets/Scripts/Framework/Adapter/PlatformAdapter/PlatformAdapterBilibili.ts.meta +9 -0
  64. package/assets/Scripts/Framework/Adapter/PlatformAdapter/PlatformAdapterDesktopBrowser.ts +224 -0
  65. package/assets/Scripts/Framework/Adapter/PlatformAdapter/PlatformAdapterDesktopBrowser.ts.meta +9 -0
  66. package/assets/Scripts/Framework/Adapter/PlatformAdapter/PlatformAdapterDouYin.ts +827 -0
  67. package/assets/Scripts/Framework/Adapter/PlatformAdapter/PlatformAdapterDouYin.ts.meta +9 -0
  68. package/assets/Scripts/Framework/Adapter/PlatformAdapter/PlatformAdapterHonor.ts +378 -0
  69. package/assets/Scripts/Framework/Adapter/PlatformAdapter/PlatformAdapterHonor.ts.meta +9 -0
  70. package/assets/Scripts/Framework/Adapter/PlatformAdapter/PlatformAdapterHuaWei.ts +363 -0
  71. package/assets/Scripts/Framework/Adapter/PlatformAdapter/PlatformAdapterHuaWei.ts.meta +9 -0
  72. package/assets/Scripts/Framework/Adapter/PlatformAdapter/PlatformAdapterJingDong.ts +368 -0
  73. package/assets/Scripts/Framework/Adapter/PlatformAdapter/PlatformAdapterJingDong.ts.meta +9 -0
  74. package/assets/Scripts/Framework/Adapter/PlatformAdapter/PlatformAdapterKuaiShou.ts +498 -0
  75. package/assets/Scripts/Framework/Adapter/PlatformAdapter/PlatformAdapterKuaiShou.ts.meta +9 -0
  76. package/assets/Scripts/Framework/Adapter/PlatformAdapter/PlatformAdapterOppo.ts +323 -0
  77. package/assets/Scripts/Framework/Adapter/PlatformAdapter/PlatformAdapterOppo.ts.meta +9 -0
  78. package/assets/Scripts/Framework/Adapter/PlatformAdapter/PlatformAdapterTapTap.ts +617 -0
  79. package/assets/Scripts/Framework/Adapter/PlatformAdapter/PlatformAdapterTapTap.ts.meta +9 -0
  80. package/assets/Scripts/Framework/Adapter/PlatformAdapter/PlatformAdapterVivo.ts +377 -0
  81. package/assets/Scripts/Framework/Adapter/PlatformAdapter/PlatformAdapterVivo.ts.meta +9 -0
  82. package/assets/Scripts/Framework/Adapter/PlatformAdapter/PlatformAdapterWeiXin.ts +1136 -0
  83. package/assets/Scripts/Framework/Adapter/PlatformAdapter/PlatformAdapterWeiXin.ts.meta +9 -0
  84. package/assets/Scripts/Framework/Adapter/PlatformAdapter/PlatformAdapterXiaoMi.ts +377 -0
  85. package/assets/Scripts/Framework/Adapter/PlatformAdapter/PlatformAdapterXiaoMi.ts.meta +9 -0
  86. package/assets/Scripts/Framework/Adapter/PlatformAdapter/PlatformAdapterZhiFuBao.ts +483 -0
  87. package/assets/Scripts/Framework/Adapter/PlatformAdapter/PlatformAdapterZhiFuBao.ts.meta +9 -0
  88. package/assets/Scripts/Framework/Adapter/PlatformAdapter.meta +9 -0
  89. package/assets/Scripts/Framework/Adapter.meta +9 -0
  90. package/assets/Scripts/Framework/Definition/AdDefinition.ts +284 -0
  91. package/assets/Scripts/Framework/Definition/AdDefinition.ts.meta +9 -0
  92. package/assets/Scripts/Framework/Definition/FrameworkBase.ts +15 -0
  93. package/assets/Scripts/Framework/Definition/FrameworkBase.ts.meta +9 -0
  94. package/assets/Scripts/Framework/Definition/PrivacyDefinition.ts +95 -0
  95. package/assets/Scripts/Framework/Definition/PrivacyDefinition.ts.meta +9 -0
  96. package/assets/Scripts/Framework/Definition/SocialDefinition.ts +21 -0
  97. package/assets/Scripts/Framework/Definition/SocialDefinition.ts.meta +9 -0
  98. package/assets/Scripts/Framework/Definition/SystemDefinition.ts +58 -0
  99. package/assets/Scripts/Framework/Definition/SystemDefinition.ts.meta +9 -0
  100. package/assets/Scripts/Framework/Definition/UIDefinition.ts +10 -0
  101. package/assets/Scripts/Framework/Definition/UIDefinition.ts.meta +9 -0
  102. package/assets/Scripts/Framework/Definition/UserDefinition.ts +17 -0
  103. package/assets/Scripts/Framework/Definition/UserDefinition.ts.meta +9 -0
  104. package/assets/Scripts/Framework/Definition.meta +9 -0
  105. package/assets/Scripts/Framework/Manager/AdMgr.ts +812 -0
  106. package/assets/Scripts/Framework/Manager/AdMgr.ts.meta +9 -0
  107. package/assets/Scripts/Framework/Manager/AudioMgr.ts +296 -0
  108. package/assets/Scripts/Framework/Manager/AudioMgr.ts.meta +9 -0
  109. package/assets/Scripts/Framework/Manager/BaseMgr.ts +130 -0
  110. package/assets/Scripts/Framework/Manager/BaseMgr.ts.meta +9 -0
  111. package/assets/Scripts/Framework/Manager/EventMgr.ts +102 -0
  112. package/assets/Scripts/Framework/Manager/EventMgr.ts.meta +9 -0
  113. package/assets/Scripts/Framework/Manager/ExcelMgr.ts +188 -0
  114. package/assets/Scripts/Framework/Manager/ExcelMgr.ts.meta +9 -0
  115. package/assets/Scripts/Framework/Manager/LifeCycleMgr.ts +142 -0
  116. package/assets/Scripts/Framework/Manager/LifeCycleMgr.ts.meta +9 -0
  117. package/assets/Scripts/Framework/Manager/NodePoolMgr.ts +385 -0
  118. package/assets/Scripts/Framework/Manager/NodePoolMgr.ts.meta +9 -0
  119. package/assets/Scripts/Framework/Manager/PrivacyMgr.ts +189 -0
  120. package/assets/Scripts/Framework/Manager/PrivacyMgr.ts.meta +9 -0
  121. package/assets/Scripts/Framework/Manager/ResMgr.ts +420 -0
  122. package/assets/Scripts/Framework/Manager/ResMgr.ts.meta +9 -0
  123. package/assets/Scripts/Framework/Manager/SocialMgr.ts +250 -0
  124. package/assets/Scripts/Framework/Manager/SocialMgr.ts.meta +9 -0
  125. package/assets/Scripts/Framework/Manager/SystemMgr.ts +264 -0
  126. package/assets/Scripts/Framework/Manager/SystemMgr.ts.meta +9 -0
  127. package/assets/Scripts/Framework/Manager/TimerMgr.ts +80 -0
  128. package/assets/Scripts/Framework/Manager/TimerMgr.ts.meta +9 -0
  129. package/assets/Scripts/Framework/Manager/UIMgr.ts +267 -0
  130. package/assets/Scripts/Framework/Manager/UIMgr.ts.meta +9 -0
  131. package/assets/Scripts/Framework/Manager/UserMgr.ts +162 -0
  132. package/assets/Scripts/Framework/Manager/UserMgr.ts.meta +9 -0
  133. package/assets/Scripts/Framework/Manager.meta +9 -0
  134. package/assets/Scripts/Framework/Utils/BezierUtils.ts +273 -0
  135. package/assets/Scripts/Framework/Utils/BezierUtils.ts.meta +9 -0
  136. package/assets/Scripts/Framework/Utils/CSVUtils.ts +396 -0
  137. package/assets/Scripts/Framework/Utils/CSVUtils.ts.meta +9 -0
  138. package/assets/Scripts/Framework/Utils/LogUtils.ts +32 -0
  139. package/assets/Scripts/Framework/Utils/LogUtils.ts.meta +9 -0
  140. package/assets/Scripts/Framework/Utils/NumberUtils.ts +51 -0
  141. package/assets/Scripts/Framework/Utils/NumberUtils.ts.meta +9 -0
  142. package/assets/Scripts/Framework/Utils/TaskUtils.ts +27 -0
  143. package/assets/Scripts/Framework/Utils/TaskUtils.ts.meta +9 -0
  144. package/assets/Scripts/Framework/Utils/TimeUtils.ts +38 -0
  145. package/assets/Scripts/Framework/Utils/TimeUtils.ts.meta +9 -0
  146. package/assets/Scripts/Framework/Utils/WXBizDataCryptUtils.ts +54 -0
  147. package/assets/Scripts/Framework/Utils/WXBizDataCryptUtils.ts.meta +9 -0
  148. package/assets/Scripts/Framework/Utils.meta +9 -0
  149. package/assets/Scripts/Framework.meta +9 -0
  150. package/assets/Scripts/index.ts +39 -0
  151. package/assets/Scripts.meta +9 -0
  152. package/package.json +2 -4
@@ -0,0 +1,385 @@
1
+ import { _decorator, Node, NodePool, Vec3 } from 'cc';
2
+ import { BaseMgr } from './BaseMgr';
3
+ import { LogUtils } from '../Utils/LogUtils';
4
+ import { UIMgr } from './UIMgr';
5
+
6
+ /**
7
+ * 节点池配置接口
8
+ */
9
+ export interface IPoolConfig {
10
+ prefabUiName?: string; // 节点池预制体名称
11
+ initCount?: number; // 初始节点数量
12
+ enableDebug?: boolean; // 启用调试
13
+ }
14
+
15
+ /**
16
+ * 节点池统计信息
17
+ */
18
+ export interface IPoolStatistics {
19
+ createdCount: number; // 创建次数(节点池大小)
20
+ reusedCount: number; // 复用次数
21
+ nowActiveCount: number; // 当前活跃节点数
22
+ maxActiveCount: number; // 历史最大活跃节点数
23
+ lastAccessTime: number; // 最后访问时间
24
+ }
25
+
26
+ export class PoolInfo {
27
+ poolConfig: IPoolConfig;
28
+ pool: NodePool;
29
+ usingNodeSet: Set<Node> = new Set<Node>();
30
+ statistics: IPoolStatistics;
31
+
32
+ constructor(poolConfig: Required<IPoolConfig>) {
33
+ this.poolConfig = poolConfig;
34
+ this.pool = new NodePool();
35
+ this.usingNodeSet = new Set<Node>();
36
+ this.statistics = {
37
+ createdCount: 0,
38
+ reusedCount: 0,
39
+ nowActiveCount: 0,
40
+ maxActiveCount: 0,
41
+ lastAccessTime: Date.now(),
42
+ };
43
+ }
44
+ }
45
+
46
+ export class NodePoolMgr extends BaseMgr {
47
+
48
+ public static Instance: NodePoolMgr = null;
49
+ static TAG: string = "NodePoolMgr";
50
+
51
+ private _poolInfoMap: Map<string, PoolInfo> = new Map<string, PoolInfo>();
52
+
53
+ private _defaultPoolConfig: Required<IPoolConfig> = {
54
+ prefabUiName: "",
55
+ initCount: 10,
56
+ enableDebug: false,
57
+ };
58
+
59
+ onLoad(): void {
60
+ super.onLoad();
61
+
62
+ if (NodePoolMgr.Instance === null) {
63
+ NodePoolMgr.Instance = this;
64
+ } else {
65
+ this.destroy();
66
+ return;
67
+ }
68
+ }
69
+
70
+ public init(): void {
71
+ this._poolInfoMap = new Map<string, PoolInfo>();
72
+
73
+ LogUtils.Instance.log(NodePoolMgr.TAG, "init() finished.");
74
+ }
75
+
76
+ public initPools(pools: Array<{poolName: string, config: IPoolConfig}>): void {
77
+ LogUtils.Instance.log(NodePoolMgr.TAG, `initPools()`);
78
+
79
+ if (pools === null || pools.length === 0) {
80
+ return;
81
+ }
82
+
83
+ pools.forEach(pool => {
84
+ this.initPool(pool.poolName, pool.config);
85
+ });
86
+ }
87
+
88
+ public initPool(poolName: string, config: IPoolConfig): boolean {
89
+ LogUtils.Instance.log(NodePoolMgr.TAG, `initPool() ${poolName}`);
90
+
91
+ if (this._poolInfoMap.has(poolName)) {
92
+ LogUtils.Instance.log(NodePoolMgr.TAG, `${poolName} already exist.`);
93
+ return false;
94
+ }
95
+
96
+ if (!config || config.prefabUiName === "") {
97
+ LogUtils.Instance.log(NodePoolMgr.TAG, `${poolName} config is invalid.`);
98
+ return false;
99
+ }
100
+
101
+ let poolConfig: Required<IPoolConfig> = {
102
+ ...this._defaultPoolConfig,
103
+ ...config
104
+ };
105
+
106
+ let poolInfo: PoolInfo = new PoolInfo(poolConfig);
107
+ this._poolInfoMap.set(poolName, poolInfo);
108
+
109
+ for (let index: number = 0; index < poolConfig.initCount; index++) {
110
+ this._createNode(poolName);
111
+ }
112
+
113
+ LogUtils.Instance.log(NodePoolMgr.TAG, `initPool() ${poolName} sucess.`);
114
+
115
+ return true;
116
+ }
117
+
118
+ // 销毁所有节点池
119
+ public destoryPools(): void {
120
+ LogUtils.Instance.log(NodePoolMgr.TAG, `destoryPools()`);
121
+
122
+ this.clearAllPools(true);
123
+ }
124
+
125
+ // 清空所有节点池
126
+ public clearAllPools(destoryNodes: boolean = true): void {
127
+ LogUtils.Instance.log(NodePoolMgr.TAG, `clearPools()`);
128
+
129
+ this._poolInfoMap.forEach((poolInfo: PoolInfo, poolName: string) => {
130
+ this.clearPool(poolName, destoryNodes);
131
+ });
132
+ }
133
+
134
+ public clearPool(poolName: string, destroyNodes: boolean = true): void {
135
+ LogUtils.Instance.log(NodePoolMgr.TAG, `clearPool() ${poolName}`);
136
+
137
+ if (!this._poolInfoMap.has(poolName)) {
138
+ LogUtils.Instance.log(NodePoolMgr.TAG, `${poolName} not exist.`);
139
+ return;
140
+ }
141
+
142
+ this.recyclePool(poolName);
143
+
144
+ let poolInfo: PoolInfo = this._poolInfoMap.get(poolName);
145
+ if (poolInfo.pool !== null && poolInfo.pool.size() > 0) {
146
+ if (destroyNodes) {
147
+ while (poolInfo.pool.size() > 0) {
148
+ let node: Node = poolInfo.pool.get() as Node;
149
+ this._destoryNode(poolName, node);
150
+ }
151
+
152
+ poolInfo.pool.clear();
153
+
154
+ poolInfo.statistics = {
155
+ createdCount: 0,
156
+ reusedCount: 0,
157
+ nowActiveCount: 0,
158
+ maxActiveCount: 0,
159
+ lastAccessTime: Date.now(),
160
+ }
161
+ }
162
+ }
163
+
164
+ this._poolInfoMap.set(poolName, poolInfo);
165
+
166
+ if (poolInfo.poolConfig && poolInfo.poolConfig.enableDebug) {
167
+ this._printPoolState(poolName);
168
+ }
169
+ }
170
+
171
+ public recyclePool(poolName: string): void {
172
+ LogUtils.Instance.log(NodePoolMgr.TAG, `recyclePool() ${poolName}`);
173
+
174
+ if (!this._poolInfoMap.has(poolName)) {
175
+ LogUtils.Instance.log(NodePoolMgr.TAG, `${poolName} not exist.`);
176
+ return;
177
+ }
178
+
179
+ let poolInfo: PoolInfo = this._poolInfoMap.get(poolName);
180
+ if (poolInfo.usingNodeSet !== null && poolInfo.usingNodeSet.size > 0) {
181
+ poolInfo.usingNodeSet.forEach((node: Node) => {
182
+ this._recycleNode(poolName, node, true);
183
+ });
184
+ poolInfo.usingNodeSet.clear();
185
+ }
186
+
187
+ this._poolInfoMap.set(poolName, poolInfo);
188
+ }
189
+
190
+ public getNodes(
191
+ poolName: string,
192
+ count: number,
193
+ parent?: Node,
194
+ callback?: (node: Node, index: number) => void
195
+ ): Node[] {
196
+ let nodes: Node[] = [];
197
+
198
+ for (let index: number = 0; index < count; index++) {
199
+ let node: Node = this.getNode(poolName, parent, (n: Node) => {
200
+ if (callback) {
201
+ callback(n, index);
202
+ }
203
+ });
204
+
205
+ if (node) {
206
+ nodes.push(node);
207
+ }
208
+ }
209
+
210
+ return nodes;
211
+ }
212
+
213
+ public getNode(
214
+ poolName: string,
215
+ parent?: Node,
216
+ callback?: (node: Node) => void
217
+ ): Node {
218
+ if (!this._poolInfoMap.has(poolName)) {
219
+ LogUtils.Instance.log(NodePoolMgr.TAG, `getNode() ${poolName} not exist.`);
220
+ return null;
221
+ }
222
+
223
+ let poolInfo: PoolInfo = this._poolInfoMap.get(poolName);
224
+ if (poolInfo.pool === null) {
225
+ poolInfo.pool = new NodePool();
226
+ }
227
+ if (poolInfo.pool.size() === 0) {
228
+ this._createNode(poolName);
229
+ }
230
+
231
+ let node: Node = poolInfo.pool.get() as Node;
232
+ poolInfo.usingNodeSet.add(node);
233
+
234
+ if (parent) {
235
+ parent.addChild(node);
236
+ }
237
+
238
+ node.active = true;
239
+
240
+ poolInfo.statistics.reusedCount++;
241
+ poolInfo.statistics.nowActiveCount++;
242
+ if (poolInfo.statistics.nowActiveCount > poolInfo.statistics.maxActiveCount) {
243
+ poolInfo.statistics.maxActiveCount = poolInfo.statistics.nowActiveCount;
244
+ }
245
+ poolInfo.statistics.lastAccessTime = Date.now();
246
+
247
+ this._poolInfoMap.set(poolName, poolInfo);
248
+
249
+ if (poolInfo.poolConfig && poolInfo.poolConfig.enableDebug) {
250
+ this._printPoolState(poolName);
251
+ }
252
+
253
+ if (callback) {
254
+ callback(node);
255
+ }
256
+
257
+ return node;
258
+ }
259
+
260
+ public putNodes(poolName: string, nodes: Node[], resetNode: boolean = true): void {
261
+ if (!nodes || nodes.length === 0) {
262
+ return;
263
+ }
264
+
265
+ nodes.forEach(node => {
266
+ this.putNode(poolName, node, resetNode);
267
+ });
268
+ }
269
+
270
+ public putNode(poolName: string, node: Node, immediate: boolean = true, resetNode: boolean = true): void {
271
+ if (!node || !node.isValid) {
272
+ return;
273
+ }
274
+
275
+ if (!this._poolInfoMap.has(poolName)) {
276
+ LogUtils.Instance.log(NodePoolMgr.TAG, `putNode() ${poolName} not exist.`);
277
+
278
+ this._destoryNode(poolName, node);
279
+ return;
280
+ }
281
+
282
+ let poolInfo: PoolInfo = this._poolInfoMap.get(poolName);
283
+ if (poolInfo.usingNodeSet.has(node)) {
284
+ poolInfo.usingNodeSet.delete(node);
285
+ }
286
+
287
+ if (immediate) {
288
+ this._recycleNode(poolName, node, resetNode);
289
+ } else {
290
+ this.scheduleOnce(() => {
291
+ this._recycleNode(poolName, node, resetNode);
292
+ });
293
+ }
294
+ }
295
+
296
+ private _createNode(poolName: string) {
297
+ let poolInfo: PoolInfo = this._poolInfoMap.get(poolName);
298
+ if (!poolInfo) {
299
+ LogUtils.Instance.log(NodePoolMgr.TAG, `_createNode() ${poolName} not exist.`);
300
+ return null;
301
+ }
302
+
303
+ let node: Node = UIMgr.Instance.create_ui(poolInfo.poolConfig.prefabUiName);
304
+ if (!node) {
305
+ LogUtils.Instance.log(NodePoolMgr.TAG, `_createNode() ${poolName} create node failed.`);
306
+ return null;
307
+ }
308
+ node.active = false;
309
+
310
+ poolInfo.pool.put(node);
311
+ poolInfo.statistics.createdCount++;
312
+ this._poolInfoMap.set(poolName, poolInfo);
313
+
314
+ if (poolInfo.poolConfig && poolInfo.poolConfig.enableDebug) {
315
+ this._printPoolState(poolName);
316
+ }
317
+ }
318
+
319
+ private _destoryNode(poolName: string, node: Node): void {
320
+ if (!node || !node.isValid) {
321
+ return;
322
+ }
323
+
324
+ let poolInfo: PoolInfo = this._poolInfoMap.get(poolName);
325
+
326
+ UIMgr.Instance.destroy_ui(poolName, node);
327
+
328
+ if (poolInfo.poolConfig && poolInfo.poolConfig.enableDebug) {
329
+ this._printPoolState(poolName);
330
+ }
331
+ }
332
+
333
+ private _recycleNode(poolName: string, node: Node, resetNode: boolean = true): void {
334
+ if (!node || !node.isValid) {
335
+ return;
336
+ }
337
+
338
+ if (node.parent) {
339
+ node.removeFromParent();
340
+ }
341
+
342
+ if (resetNode) {
343
+ this._resetNode(node);
344
+ }
345
+
346
+ let poolInfo: PoolInfo = this._poolInfoMap.get(poolName);
347
+
348
+ poolInfo.pool.put(node);
349
+
350
+ node.active = false;
351
+ poolInfo.statistics.nowActiveCount--;
352
+ poolInfo.statistics.lastAccessTime = Date.now();
353
+
354
+ this._poolInfoMap.set(poolName, poolInfo);
355
+
356
+ if (poolInfo.poolConfig && poolInfo.poolConfig.enableDebug) {
357
+ this._printPoolState(poolName);
358
+ }
359
+ }
360
+
361
+ private _resetNode(node: Node): void {
362
+ if (!node || !node.isValid) {
363
+ return;
364
+ }
365
+
366
+ node.position = Vec3.ZERO;
367
+ node.eulerAngles = Vec3.ZERO;
368
+ node.scale = Vec3.ONE;
369
+ }
370
+
371
+ private _printPoolState(poolName: string): void {
372
+ let poolInfo: PoolInfo = this._poolInfoMap.get(poolName);
373
+ if (!poolInfo) {
374
+ LogUtils.Instance.log(NodePoolMgr.TAG, `_printPoolState() ${poolName} not exist.`);
375
+ return;
376
+ }
377
+
378
+ if (!poolInfo.statistics) {
379
+ LogUtils.Instance.log(NodePoolMgr.TAG, `_printPoolState() ${poolName} statistics is null.`);
380
+ return;
381
+ }
382
+
383
+ LogUtils.Instance.log(NodePoolMgr.TAG, `节点池 ${poolName} 已创建数:${poolInfo.statistics.createdCount} ,复用数:${poolInfo.statistics.reusedCount},当前活跃数:${poolInfo.statistics.nowActiveCount},最大活跃数:${poolInfo.statistics.maxActiveCount}`);
384
+ }
385
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "ver": "4.0.24",
3
+ "importer": "typescript",
4
+ "imported": true,
5
+ "uuid": "910f0631-d7f0-4f7f-86e4-761c9da17c83",
6
+ "files": [],
7
+ "subMetas": {},
8
+ "userData": {}
9
+ }
@@ -0,0 +1,189 @@
1
+ import { LogUtils } from '../Utils/LogUtils';
2
+ import { AuthorizeResult, GetSettingResult, KindReminder, KindReminderType, PrivacyDefinition, PrivacyInfo, PrivacyPlatformInfo, PrivacyType, QueryPrivacyResult } from '../Definition/PrivacyDefinition';
3
+ import { UIMgr } from './UIMgr';
4
+ import { ToastDuration } from '../Definition/UIDefinition';
5
+ import { PlatformID } from '../Definition/SystemDefinition';
6
+ import { BaseMgr } from './BaseMgr';
7
+ import { FrameworkBase } from '../Definition/FrameworkBase';
8
+
9
+ export class PrivacyMgr extends BaseMgr {
10
+ public static Instance: PrivacyMgr = null;
11
+ static TAG: string = "PrivacyMgr";
12
+
13
+ private kindReminder: KindReminder = null;
14
+ private kindReminderAgreeVersion: string = "";
15
+
16
+ onLoad(): void {
17
+ super.onLoad();
18
+
19
+ if (PrivacyMgr.Instance === null) {
20
+ PrivacyMgr.Instance = this;
21
+ } else {
22
+ this.destroy();
23
+ return;
24
+ }
25
+ }
26
+
27
+ public init(kindReminder: KindReminder): void {
28
+ this.kindReminder = kindReminder;
29
+
30
+ let aggreeVersion = localStorage.getItem(FrameworkBase.LocalStorage.Key_PrivacyManager_KindReminder_AgreeVersion);
31
+ let aggreeVersionOld = localStorage.getItem(FrameworkBase.LocalStorage.Key_KindReminder_AgreeVersion);
32
+
33
+ if (aggreeVersion !== null && aggreeVersion !== "") {
34
+ this.kindReminderAgreeVersion = aggreeVersion;
35
+ } else if (aggreeVersionOld !== null && aggreeVersionOld !== "") {
36
+ this.kindReminderAgreeVersion = aggreeVersionOld;
37
+ localStorage.setItem(FrameworkBase.LocalStorage.Key_PrivacyManager_KindReminder_AgreeVersion, this.kindReminderAgreeVersion);
38
+ localStorage.removeItem(FrameworkBase.LocalStorage.Key_KindReminder_AgreeVersion);
39
+ } else {
40
+ this.kindReminderAgreeVersion = "";
41
+ localStorage.setItem(FrameworkBase.LocalStorage.Key_PrivacyManager_KindReminder_AgreeVersion, this.kindReminderAgreeVersion);
42
+ }
43
+
44
+ LogUtils.Instance.log(PrivacyMgr.TAG, "init() finished.");
45
+ }
46
+
47
+ public shouldShowKindReminderOnLaunch(): boolean {
48
+ let currentPlatformID: PlatformID = this.getCurrentPlatformID();
49
+ if (!this.kindReminder.shouldShowPlatform.has(currentPlatformID)) {
50
+ return false;
51
+ }
52
+
53
+ if (this.kindReminder.latestVersion !== this.kindReminderAgreeVersion) {
54
+ return true;
55
+ }
56
+ return false;
57
+ }
58
+
59
+ public shouldShowKindReminder(): boolean {
60
+ let currentPlatformID: PlatformID = this.getCurrentPlatformID();
61
+ if (!this.kindReminder.shouldShowPlatform.has(currentPlatformID)) {
62
+ return false;
63
+ }
64
+ return true;
65
+ }
66
+
67
+ public getKindReminderContent(type: KindReminderType): string {
68
+ let currentPlatformID: PlatformID = this.getCurrentPlatformID();
69
+
70
+ let content: string[][] = [];
71
+ if (type === KindReminderType.Type_UserAgreement) {
72
+ content = this.kindReminder.userAgreement.mainContent;
73
+
74
+ if (this.kindReminder.userAgreement.supplementaryContent !== null &&
75
+ this.kindReminder.userAgreement.supplementaryContent.has(currentPlatformID)) {
76
+ content = content.concat(this.kindReminder.userAgreement.supplementaryContent.get(currentPlatformID));
77
+ }
78
+ } else if (type === KindReminderType.Type_PrivacyPolicy) {
79
+ content = this.kindReminder.privacyPolicy.mainContent;
80
+
81
+ if (this.kindReminder.privacyPolicy.supplementaryContent !== null &&
82
+ this.kindReminder.privacyPolicy.supplementaryContent.has(currentPlatformID)) {
83
+ content = content.concat(this.kindReminder.privacyPolicy.supplementaryContent.get(currentPlatformID));
84
+ }
85
+ }
86
+
87
+ let resultStr: string = "";
88
+ for (let i: number = 1; i <= content.length; i++) {
89
+ let paragraph: string[] = content[i - 1];
90
+ for (let j: number = 1; j <= paragraph.length; j++) {
91
+ resultStr += paragraph[j - 1] + "\n";
92
+ }
93
+ resultStr += "\n";
94
+ }
95
+
96
+ return resultStr;
97
+ }
98
+
99
+ public setKindReminderAgreed(): void {
100
+ this.kindReminderAgreeVersion = this.kindReminder.latestVersion;
101
+ localStorage.setItem(FrameworkBase.LocalStorage.Key_PrivacyManager_KindReminder_AgreeVersion, this.kindReminderAgreeVersion);
102
+ }
103
+
104
+ public queryPrivacyAvailable(featureName: string, privacyType: PrivacyType, callback: Function): void {
105
+ LogUtils.Instance.log(PrivacyMgr.TAG, "checkPrivacyAvailable");
106
+ LogUtils.Instance.log("", "featureName=" + featureName + ",privacyType=" + PrivacyType[privacyType]);
107
+ if (callback === null) {
108
+ return;
109
+ }
110
+
111
+ if (this.getPlatformAdapter() === null) {
112
+ LogUtils.Instance.log("", QueryPrivacyResult[QueryPrivacyResult.Result_Invalid]);
113
+ callback(QueryPrivacyResult.Result_Invalid);
114
+ return;
115
+ }
116
+
117
+ let privacyInfo: PrivacyInfo = PrivacyDefinition.PrivacyConfig.get(privacyType);
118
+ if (privacyInfo === null) {
119
+ LogUtils.Instance.log("", QueryPrivacyResult[QueryPrivacyResult.Result_Invalid]);
120
+ callback(QueryPrivacyResult.Result_Invalid);
121
+ return;
122
+ }
123
+
124
+ this.getPlatformAdapter().requirePrivacyAuthorize((result) => {
125
+ if (!result) {
126
+ UIMgr.Instance.showToast("未同意隐私协议,无法使用" + featureName);
127
+ LogUtils.Instance.log("", QueryPrivacyResult[QueryPrivacyResult.Result_PrivacyReject]);
128
+ callback(QueryPrivacyResult.Result_PrivacyReject);
129
+ return;
130
+ }
131
+
132
+ let privacyPlatformInfo: PrivacyPlatformInfo = privacyInfo.privacyPlatformMap.get(this.getCurrentPlatformID());
133
+ let scopeDescription: string = privacyPlatformInfo.scopeDescription;
134
+ if (privacyPlatformInfo === null || privacyPlatformInfo.scopeDisable) {
135
+ UIMgr.Instance.showToast("不支持[" + scopeDescription + "],无法使用" + featureName);
136
+ LogUtils.Instance.log("", QueryPrivacyResult[QueryPrivacyResult.Result_ScopeDisable]);
137
+ callback(QueryPrivacyResult.Result_ScopeDisable);
138
+ return;
139
+ }
140
+
141
+ if (!privacyPlatformInfo.needAuthorize) {
142
+ LogUtils.Instance.log("", QueryPrivacyResult[QueryPrivacyResult.Result_Agree]);
143
+ callback(QueryPrivacyResult.Result_Agree);
144
+ return;
145
+ }
146
+
147
+ let scopeName: string = privacyPlatformInfo.scopeName;
148
+ this.getPlatformAdapter().getSetting(scopeName, (result: GetSettingResult) => {
149
+ if (result === GetSettingResult.Result_SettingNotAvailable) {
150
+ UIMgr.Instance.showToast("App版本过低,无法使用" + featureName, ToastDuration.Duration_Long);
151
+ LogUtils.Instance.log("", QueryPrivacyResult[QueryPrivacyResult.Result_Invalid]);
152
+ callback(QueryPrivacyResult.Result_Invalid);
153
+ return;
154
+ } else if (result === GetSettingResult.Result_Rejected) {
155
+ UIMgr.Instance.showToast("右上角...设置,开启[" + scopeDescription + "]权限,即可使用" + featureName, ToastDuration.Duration_Long);
156
+ LogUtils.Instance.log("", QueryPrivacyResult[QueryPrivacyResult.Result_AuthorizeReject]);
157
+ callback(QueryPrivacyResult.Result_AuthorizeReject);
158
+ return;
159
+ } else if (result === GetSettingResult.Result_NotExist_AuthorizeAvailable) {
160
+ this.getPlatformAdapter().authorize(scopeName, (result3) => {
161
+ if (result3 === AuthorizeResult.Result_AuthorizeNotAvailable) {
162
+ UIMgr.Instance.showToast("App版本过低,无法使用" + featureName, ToastDuration.Duration_Long);
163
+ LogUtils.Instance.log("", QueryPrivacyResult[QueryPrivacyResult.Result_Invalid]);
164
+ callback(QueryPrivacyResult.Result_Invalid);
165
+ return;
166
+ } else if (result3 === AuthorizeResult.Result_Rejected) {
167
+ UIMgr.Instance.showToast("右上角...设置,开启[" + scopeDescription + "]权限,即可使用" + featureName, ToastDuration.Duration_Long);
168
+ LogUtils.Instance.log("", QueryPrivacyResult[QueryPrivacyResult.Result_AuthorizeReject]);
169
+ callback(QueryPrivacyResult.Result_AuthorizeReject);
170
+ return;
171
+ } else if (result3 === AuthorizeResult.Result_Authorized) {
172
+ LogUtils.Instance.log("", QueryPrivacyResult[QueryPrivacyResult.Result_Agree]);
173
+ callback(QueryPrivacyResult.Result_Agree);
174
+ return;
175
+ }
176
+ });
177
+ } else if (result === GetSettingResult.Result_Authorized) {
178
+ LogUtils.Instance.log("", QueryPrivacyResult[QueryPrivacyResult.Result_Agree]);
179
+ callback(QueryPrivacyResult.Result_Agree);
180
+ return;
181
+ } else if (result === GetSettingResult.Result_NotExist_AuthorizeNotAvailable) {
182
+ LogUtils.Instance.log("", QueryPrivacyResult[QueryPrivacyResult.Result_Continue]);
183
+ callback(QueryPrivacyResult.Result_Continue);
184
+ return;
185
+ }
186
+ });
187
+ });
188
+ }
189
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "ver": "4.0.24",
3
+ "importer": "typescript",
4
+ "imported": true,
5
+ "uuid": "11bb5bfb-f5f9-4c91-abdd-017026b81446",
6
+ "files": [],
7
+ "subMetas": {},
8
+ "userData": {}
9
+ }