@cc-component/cc-core 1.2.8

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 (194) hide show
  1. package/.cc-ex-component.md +12 -0
  2. package/assets/core/config/CommonEnum.ts +94 -0
  3. package/assets/core/config/CommonEnum.ts.meta +9 -0
  4. package/assets/core/config/IConfig.ts +89 -0
  5. package/assets/core/config/IConfig.ts.meta +9 -0
  6. package/assets/core/config/LayerType.ts +44 -0
  7. package/assets/core/config/LayerType.ts.meta +9 -0
  8. package/assets/core/config/LayerUI.ts +113 -0
  9. package/assets/core/config/LayerUI.ts.meta +9 -0
  10. package/assets/core/config.meta +9 -0
  11. package/assets/core/editor/LanguageManager.ts +323 -0
  12. package/assets/core/editor/LanguageManager.ts.meta +9 -0
  13. package/assets/core/editor/SpineRunner.ts +39 -0
  14. package/assets/core/editor/SpineRunner.ts.meta +9 -0
  15. package/assets/core/editor/i18nEditorComponent.ts +137 -0
  16. package/assets/core/editor/i18nEditorComponent.ts.meta +9 -0
  17. package/assets/core/editor.meta +9 -0
  18. package/assets/core/home/AudioUtil.ts +164 -0
  19. package/assets/core/home/AudioUtil.ts.meta +9 -0
  20. package/assets/core/home/BaseBoxView.ts +60 -0
  21. package/assets/core/home/BaseBoxView.ts.meta +9 -0
  22. package/assets/core/home/BaseLaunchComponent.ts +9 -0
  23. package/assets/core/home/BaseLaunchComponent.ts.meta +9 -0
  24. package/assets/core/home/BaseLoading.ts +136 -0
  25. package/assets/core/home/BaseLoading.ts.meta +9 -0
  26. package/assets/core/home/BaseSkeleton.ts +39 -0
  27. package/assets/core/home/BaseSkeleton.ts.meta +9 -0
  28. package/assets/core/home/CameraAngel.ts +326 -0
  29. package/assets/core/home/CameraAngel.ts.meta +9 -0
  30. package/assets/core/home/DouYinShow.ts +27 -0
  31. package/assets/core/home/DouYinShow.ts.meta +9 -0
  32. package/assets/core/home/EventManager.ts +39 -0
  33. package/assets/core/home/EventManager.ts.meta +9 -0
  34. package/assets/core/home/ExView.ts +9 -0
  35. package/assets/core/home/ExView.ts.meta +9 -0
  36. package/assets/core/home/FollowCamera.ts +205 -0
  37. package/assets/core/home/FollowCamera.ts.meta +9 -0
  38. package/assets/core/home/InViewCenter.ts +52 -0
  39. package/assets/core/home/InViewCenter.ts.meta +9 -0
  40. package/assets/core/home/JsonUtil.ts +102 -0
  41. package/assets/core/home/JsonUtil.ts.meta +9 -0
  42. package/assets/core/home/LoadingWindow.ts +44 -0
  43. package/assets/core/home/LoadingWindow.ts.meta +9 -0
  44. package/assets/core/home/ParabolaTween.ts +110 -0
  45. package/assets/core/home/ParabolaTween.ts.meta +9 -0
  46. package/assets/core/home/ProgessView.ts +96 -0
  47. package/assets/core/home/ProgessView.ts.meta +9 -0
  48. package/assets/core/home/Quaternion.ts +237 -0
  49. package/assets/core/home/Quaternion.ts.meta +9 -0
  50. package/assets/core/home/ResUtil.ts +132 -0
  51. package/assets/core/home/ResUtil.ts.meta +9 -0
  52. package/assets/core/home/ResourceManager.ts +430 -0
  53. package/assets/core/home/ResourceManager.ts.meta +9 -0
  54. package/assets/core/home/StateMachine.ts +93 -0
  55. package/assets/core/home/StateMachine.ts.meta +9 -0
  56. package/assets/core/home/StorageManager.ts +161 -0
  57. package/assets/core/home/StorageManager.ts.meta +9 -0
  58. package/assets/core/home/ThirdFreeLookCamera.ts +201 -0
  59. package/assets/core/home/ThirdFreeLookCamera.ts.meta +9 -0
  60. package/assets/core/home/TimeManager.ts +486 -0
  61. package/assets/core/home/TimeManager.ts.meta +9 -0
  62. package/assets/core/home/Tools.ts +103 -0
  63. package/assets/core/home/Tools.ts.meta +9 -0
  64. package/assets/core/home/prefabs.meta +12 -0
  65. package/assets/core/home/util/EncryptUtil.ts +60 -0
  66. package/assets/core/home/util/EncryptUtil.ts.meta +11 -0
  67. package/assets/core/home/util/MathUtil.ts +22 -0
  68. package/assets/core/home/util/MathUtil.ts.meta +9 -0
  69. package/assets/core/home/util/Md5.ts +202 -0
  70. package/assets/core/home/util/Md5.ts.meta +11 -0
  71. package/assets/core/home/util/RandomUtil.ts +61 -0
  72. package/assets/core/home/util/RandomUtil.ts.meta +9 -0
  73. package/assets/core/home/util/ResUtil.ts +129 -0
  74. package/assets/core/home/util/ResUtil.ts.meta +9 -0
  75. package/assets/core/home/util/crypto-js.d.ts +30 -0
  76. package/assets/core/home/util/crypto-js.d.ts.meta +11 -0
  77. package/assets/core/home/util/crypto-js.js +6030 -0
  78. package/assets/core/home/util/crypto-js.js.meta +9 -0
  79. package/assets/core/home/util.meta +12 -0
  80. package/assets/core/home.meta +12 -0
  81. package/assets/core/interface/ISceneParam.ts +11 -0
  82. package/assets/core/interface/ISceneParam.ts.meta +9 -0
  83. package/assets/core/interface/Interface.ts +160 -0
  84. package/assets/core/interface/Interface.ts.meta +1 -0
  85. package/assets/core/interface/MainModule.ts +1019 -0
  86. package/assets/core/interface/MainModule.ts.meta +9 -0
  87. package/assets/core/interface.meta +9 -0
  88. package/assets/core/lib/Logger.ts +286 -0
  89. package/assets/core/lib/Logger.ts.meta +9 -0
  90. package/assets/core/lib/language/.language.md +1 -0
  91. package/assets/core/lib/language/Language.ts +133 -0
  92. package/assets/core/lib/language/Language.ts.meta +13 -0
  93. package/assets/core/lib/language/LanguageData.ts +114 -0
  94. package/assets/core/lib/language/LanguageData.ts.meta +9 -0
  95. package/assets/core/lib/language/LanguageLabel.ts +172 -0
  96. package/assets/core/lib/language/LanguageLabel.ts.meta +13 -0
  97. package/assets/core/lib/language/LanguagePack.ts +126 -0
  98. package/assets/core/lib/language/LanguagePack.ts.meta +13 -0
  99. package/assets/core/lib/language/LanguagePointLabel.ts.meta +16 -0
  100. package/assets/core/lib/language/LanguageSpine.ts +60 -0
  101. package/assets/core/lib/language/LanguageSpine.ts.meta +9 -0
  102. package/assets/core/lib/language/LanguageSprite.ts +138 -0
  103. package/assets/core/lib/language/LanguageSprite.ts.meta +13 -0
  104. package/assets/core/lib/language.meta +9 -0
  105. package/assets/core/lib/logger/ELoggerLevel.ts +16 -0
  106. package/assets/core/lib/logger/ELoggerLevel.ts.meta +9 -0
  107. package/assets/core/lib/logger/MLogger.ts +118 -0
  108. package/assets/core/lib/logger/MLogger.ts.meta +9 -0
  109. package/assets/core/lib/logger.meta +9 -0
  110. package/assets/core/lib/net/libs/proto/output/protobuf.d.ts +2729 -0
  111. package/assets/core/lib/net/libs/proto/output/protobuf.d.ts.meta +9 -0
  112. package/assets/core/lib/net/libs/proto/output/protobuf.min.js +8 -0
  113. package/assets/core/lib/net/libs/proto/output/protobuf.min.js.meta +9 -0
  114. package/assets/core/lib/net/libs/proto/output/protobuf_custom.d.ts +102 -0
  115. package/assets/core/lib/net/libs/proto/output/protobuf_custom.d.ts.meta +9 -0
  116. package/assets/core/lib/net/libs/proto/output/protobuf_custom.js +222 -0
  117. package/assets/core/lib/net/libs/proto/output/protobuf_custom.js.meta +9 -0
  118. package/assets/core/lib/net/libs/proto/output.meta +9 -0
  119. package/assets/core/lib/net/libs/proto/source/Cmd.proto +6 -0
  120. package/assets/core/lib/net/libs/proto/source/Cmd.proto.meta +11 -0
  121. package/assets/core/lib/net/libs/proto/source/UserLogin.proto +12 -0
  122. package/assets/core/lib/net/libs/proto/source/UserLogin.proto.meta +11 -0
  123. package/assets/core/lib/net/libs/proto/source/base.proto +24 -0
  124. package/assets/core/lib/net/libs/proto/source/base.proto.meta +11 -0
  125. package/assets/core/lib/net/libs/proto/source/command.proto +31 -0
  126. package/assets/core/lib/net/libs/proto/source/command.proto.meta +11 -0
  127. package/assets/core/lib/net/libs/proto/source/domain/boos_battle_info.proto +13 -0
  128. package/assets/core/lib/net/libs/proto/source/domain/boos_battle_info.proto.meta +11 -0
  129. package/assets/core/lib/net/libs/proto/source/domain/player_auth.proto +26 -0
  130. package/assets/core/lib/net/libs/proto/source/domain/player_auth.proto.meta +11 -0
  131. package/assets/core/lib/net/libs/proto/source/domain.meta +9 -0
  132. package/assets/core/lib/net/libs/proto/source/message/game_push.proto +23 -0
  133. package/assets/core/lib/net/libs/proto/source/message/game_push.proto.meta +11 -0
  134. package/assets/core/lib/net/libs/proto/source/message/game_request.proto +24 -0
  135. package/assets/core/lib/net/libs/proto/source/message/game_request.proto.meta +11 -0
  136. package/assets/core/lib/net/libs/proto/source/message/game_response.proto +24 -0
  137. package/assets/core/lib/net/libs/proto/source/message/game_response.proto.meta +11 -0
  138. package/assets/core/lib/net/libs/proto/source/message.meta +9 -0
  139. package/assets/core/lib/net/libs/proto/source/push/boss_battle_events.proto +43 -0
  140. package/assets/core/lib/net/libs/proto/source/push/boss_battle_events.proto.meta +11 -0
  141. package/assets/core/lib/net/libs/proto/source/push.meta +9 -0
  142. package/assets/core/lib/net/libs/proto/source.meta +12 -0
  143. package/assets/core/lib/net/libs/proto.meta +9 -0
  144. package/assets/core/lib/net/libs.meta +9 -0
  145. package/assets/core/lib/net/net/HttpManager.ts +307 -0
  146. package/assets/core/lib/net/net/HttpManager.ts.meta +9 -0
  147. package/assets/core/lib/net/net/NetInterface.ts +114 -0
  148. package/assets/core/lib/net/net/NetInterface.ts.meta +9 -0
  149. package/assets/core/lib/net/net/NetManager.ts +77 -0
  150. package/assets/core/lib/net/net/NetManager.ts.meta +9 -0
  151. package/assets/core/lib/net/net/NetNode.ts +471 -0
  152. package/assets/core/lib/net/net/NetNode.ts.meta +9 -0
  153. package/assets/core/lib/net/net/WebSock.ts +81 -0
  154. package/assets/core/lib/net/net/WebSock.ts.meta +9 -0
  155. package/assets/core/lib/net/net/custom/NetChannelManager.ts +41 -0
  156. package/assets/core/lib/net/net/custom/NetChannelManager.ts.meta +9 -0
  157. package/assets/core/lib/net/net/custom/NetConfig.ts +11 -0
  158. package/assets/core/lib/net/net/custom/NetConfig.ts.meta +9 -0
  159. package/assets/core/lib/net/net/custom/NetErrorCode.ts +4 -0
  160. package/assets/core/lib/net/net/custom/NetErrorCode.ts.meta +9 -0
  161. package/assets/core/lib/net/net/custom/NetGameTips.ts +53 -0
  162. package/assets/core/lib/net/net/custom/NetGameTips.ts.meta +9 -0
  163. package/assets/core/lib/net/net/custom/NetNodeGame.ts +105 -0
  164. package/assets/core/lib/net/net/custom/NetNodeGame.ts.meta +9 -0
  165. package/assets/core/lib/net/net/custom.meta +9 -0
  166. package/assets/core/lib/net/net/protocol/NetProtocolJson.ts +39 -0
  167. package/assets/core/lib/net/net/protocol/NetProtocolJson.ts.meta +9 -0
  168. package/assets/core/lib/net/net/protocol/NetProtocolProtobuf.ts +85 -0
  169. package/assets/core/lib/net/net/protocol/NetProtocolProtobuf.ts.meta +9 -0
  170. package/assets/core/lib/net/net/protocol.meta +9 -0
  171. package/assets/core/lib/net/net.meta +9 -0
  172. package/assets/core/lib/net/prompt.meta +9 -0
  173. package/assets/core/lib/net.meta +9 -0
  174. package/assets/core/lib/old/VM2.ts +619 -0
  175. package/assets/core/lib/old/VM2.ts.meta +9 -0
  176. package/assets/core/lib/old/ViewModel.ts +905 -0
  177. package/assets/core/lib/old/ViewModel.ts.meta +9 -0
  178. package/assets/core/lib/old/ViewSearch.ts +125 -0
  179. package/assets/core/lib/old/ViewSearch.ts.meta +9 -0
  180. package/assets/core/lib/old.meta +9 -0
  181. package/assets/core/lib/tabbar/TabBarComponent.ts +113 -0
  182. package/assets/core/lib/tabbar/TabBarComponent.ts.meta +9 -0
  183. package/assets/core/lib/tabbar/TabBarController.ts +86 -0
  184. package/assets/core/lib/tabbar/TabBarController.ts.meta +9 -0
  185. package/assets/core/lib/tabbar/TabBarItem.ts +52 -0
  186. package/assets/core/lib/tabbar/TabBarItem.ts.meta +9 -0
  187. package/assets/core/lib/tabbar.meta +9 -0
  188. package/assets/core/lib.meta +12 -0
  189. package/assets/core.meta +9 -0
  190. package/assets.meta +9 -0
  191. package/index.ts +3 -0
  192. package/index.ts.meta +9 -0
  193. package/package.json +19 -0
  194. package/package.json.meta +11 -0
@@ -0,0 +1,9 @@
1
+ {
2
+ "ver": "4.0.24",
3
+ "importer": "typescript",
4
+ "imported": true,
5
+ "uuid": "2a625de7-3c1a-46f8-b2a9-4bcf30407cf6",
6
+ "files": [],
7
+ "subMetas": {},
8
+ "userData": {}
9
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "ver": "1.2.0",
3
+ "importer": "directory",
4
+ "imported": true,
5
+ "uuid": "b05086b8-fc86-4ae0-ac03-a2eba5a8f197",
6
+ "files": [],
7
+ "subMetas": {},
8
+ "userData": {}
9
+ }
@@ -0,0 +1,286 @@
1
+ import { log } from "cc";
2
+
3
+ /** 日志类型 */
4
+ export enum LogType {
5
+ Close = 100,
6
+ /** 网络层日志 */
7
+ Net = 1,
8
+ /** 数据结构层日志 */
9
+ Model = 2,
10
+ /** 业务逻辑层日志 */
11
+ Business = 4,
12
+ /** 视图层日志 */
13
+ View = 8,
14
+ /** 配置日志 */
15
+ Config = 16,
16
+ /** 标准日志 */
17
+ Trace = 32,
18
+ }
19
+
20
+ var names = {
21
+ "1": "网络日志",
22
+ "2": "数据日志",
23
+ "4": "业务日志",
24
+ "8": "视图日志",
25
+ "16": "配置日志",
26
+ "32": "标准日志",
27
+ }
28
+
29
+ /**
30
+ * 日志管理
31
+ * @example
32
+ oops.log.trace("默认标准日志");
33
+ oops.log.logConfig("灰色配置日志");
34
+ oops.log.logNet("橙色网络日志");
35
+ oops.log.logModel("紫色数据日志");
36
+ oops.log.logBusiness("蓝色业务日志");
37
+ oops.log.logView("绿色视图日志");
38
+ */
39
+ export class Logger {
40
+ private static tags: number = 0;
41
+
42
+ private static init(): void {
43
+ this.tags =
44
+ LogType.Net |
45
+ LogType.Model |
46
+ LogType.Business |
47
+ LogType.View |
48
+ LogType.Config |
49
+ LogType.Trace;
50
+
51
+ }
52
+
53
+ /**
54
+ * 设置显示的日志类型,默认值为不显示任何类型日志
55
+ * @example
56
+ oops.log.setTags(LogType.View|LogType.Business)
57
+ */
58
+ static setTags(tag: LogType = null!) {
59
+ if (tag) {
60
+ this.tags = tag;
61
+ }
62
+ }
63
+
64
+ /**
65
+ * 记录开始计时
66
+ * @param describe 标题描述
67
+ * @example
68
+ oops.log.start();
69
+ ...
70
+ 省略N行代码
71
+ ...
72
+ oops.log.end();
73
+ */
74
+ static start(describe: string = "Time"): void {
75
+ console.time(describe);
76
+ }
77
+
78
+ /**
79
+ * 打印范围内时间消耗
80
+ * @param describe 标题描述
81
+ * @example
82
+ oops.log.start();
83
+ ...
84
+ 省略N行代码
85
+ ...
86
+ oops.log.end();
87
+ */
88
+ static end(describe: string = "Time"): void {
89
+ console.timeEnd(describe);
90
+ }
91
+
92
+ /**
93
+ * 打印表格
94
+ * @param msg 日志消息
95
+ * @param describe 标题描述
96
+ * @example
97
+ var object:any = {uid:1000, name:"oops"};
98
+ oops.log.table(object);
99
+ */
100
+ static table(msg: any, describe?: string) {
101
+ if (!this.isOpen(LogType.Trace)) {
102
+ return;
103
+ }
104
+ console.table(msg);
105
+ }
106
+
107
+ /**
108
+ * 打印标准日志
109
+ * @param msg 日志消息
110
+ */
111
+ static trace(msg: any, color: string = "color:#000000;") {
112
+ // 标记没有打开,不打印该日志
113
+ if (!this.isOpen(LogType.Trace)) {
114
+ return;
115
+
116
+ }
117
+ var backLog = console.log || log;
118
+ backLog.call(null, "%c%s%s", color, this.getDateString(), msg);
119
+ }
120
+
121
+ /**
122
+ * 打印网络层日志
123
+ * @param msg 日志消息
124
+ * @param describe 标题描述
125
+ */
126
+ static logNet(msg: any, describe?: string) {
127
+ this.orange(LogType.Net, msg, describe);
128
+ }
129
+
130
+ /**
131
+ * 打印数据层日志
132
+ * @param msg 日志消息
133
+ * @param describe 标题描述
134
+ */
135
+ static logModel(msg: any, describe?: string) {
136
+ this.violet(LogType.Model, msg, describe);
137
+ }
138
+
139
+ /**
140
+ * 打印业务层日志
141
+ * @param msg 日志消息
142
+ * @param describe 标题描述
143
+ */
144
+ static logBusiness(msg: any, describe?: string) {
145
+ this.blue(LogType.Business, msg, describe);
146
+ }
147
+
148
+ /**
149
+ * 打印视图日志
150
+ * @param msg 日志消息
151
+ * @param describe 标题描述
152
+ */
153
+ static logView(msg: any, describe?: string) {
154
+ this.green(LogType.View, msg, describe);
155
+ }
156
+
157
+ /** 打印配置日志 */
158
+ static logConfig(msg: any, describe?: string) {
159
+ this.gray(LogType.Config, msg, describe);
160
+ }
161
+
162
+ // 橙色
163
+ private static orange(tag: LogType, msg: any, describe?: string) {
164
+ this.print(tag, msg, "color:#FFA442;", describe)
165
+ }
166
+
167
+ // 紫色
168
+ private static violet(tag: LogType, msg: any, describe?: string) {
169
+ this.print(tag, msg, "color:Violet;", describe)
170
+ }
171
+
172
+ // 蓝色
173
+ private static blue(tag: LogType, msg: any, describe?: string) {
174
+ this.print(tag, msg, "color:#3a5fcd;", describe)
175
+ }
176
+
177
+ // 绿色
178
+ private static green(tag: LogType, msg: any, describe?: string) {
179
+ this.print(tag, msg, "color:green;", describe)
180
+ }
181
+
182
+ // 灰色
183
+ private static gray(tag: LogType, msg: any, describe?: string) {
184
+ this.print(tag, msg, "color:gray;", describe)
185
+ }
186
+
187
+ private static isOpen(tag: LogType): boolean {
188
+ return (this.tags & tag) != 0;
189
+ }
190
+
191
+ /**
192
+ * 输出日志
193
+ * @param tag 日志类型
194
+ * @param msg 日志内容
195
+ * @param color 日志文本颜色
196
+ * @param describe 日志标题描述
197
+ */
198
+ private static print(tag: LogType, msg: any, color: string, describe?: string) {
199
+ // 标记没有打开,不打印该日志
200
+ if (!this.isOpen(tag)) {
201
+ return;
202
+
203
+ }
204
+ var backLog = console.log || log;
205
+ var type = names[tag];
206
+ if (describe) {
207
+ backLog.call(null, "%c%s%s%s:%s%o", color, this.getDateString(), '[' + type + ']', this.stack(5), describe, msg);
208
+ }
209
+ else {
210
+ backLog.call(null, "%c%s%s%s:%o", color, this.getDateString(), '[' + type + ']', this.stack(5), msg);
211
+ }
212
+ }
213
+
214
+ private static stack(index: number): string {
215
+ var e = new Error();
216
+ var lines = e.stack!.split("\n");
217
+ var result: Array<any> = [];
218
+ lines.forEach((line) => {
219
+ line = line.substring(7);
220
+ var lineBreak = line.split(" ");
221
+ if (lineBreak.length < 2) {
222
+ result.push(lineBreak[0]);
223
+ }
224
+ else {
225
+ result.push({ [lineBreak[0]]: lineBreak[1] });
226
+ }
227
+ });
228
+
229
+ var list: string[] = [];
230
+ var splitList: Array<string> = [];
231
+ if (index < result.length - 1) {
232
+ var value: string;
233
+ for (var a in result[index]) {
234
+ var splitList = a.split(".");
235
+
236
+ if (splitList.length == 2) {
237
+ list = splitList.concat();
238
+ }
239
+ else {
240
+ value = result[index][a];
241
+ if (typeof value === "string") {
242
+ var start = value!.lastIndexOf("/");
243
+ var end = value!.lastIndexOf(".");
244
+ if (start > -1 && end > -1) {
245
+ var r = value!.substring(start + 1, end);
246
+ list.push(r);
247
+ }
248
+ else {
249
+ list.push(value);
250
+ }
251
+ }
252
+
253
+ }
254
+ }
255
+ }
256
+
257
+ if (list.length == 1) {
258
+ return "[" + list[0] + ".ts]";
259
+ }
260
+ else if (list.length == 2) {
261
+ return "[" + list[0] + ".ts->" + list[1] + "]";
262
+ }
263
+ return "";
264
+ }
265
+
266
+ private static getDateString(): string {
267
+ let d = new Date();
268
+ let str = d.getHours().toString();
269
+ let timeStr = "";
270
+ timeStr += (str.length == 1 ? "0" + str : str) + ":";
271
+ str = d.getMinutes().toString();
272
+ timeStr += (str.length == 1 ? "0" + str : str) + ":";
273
+ str = d.getSeconds().toString();
274
+ timeStr += (str.length == 1 ? "0" + str : str) + ":";
275
+ str = d.getMilliseconds().toString();
276
+ if (str.length == 1) str = "00" + str;
277
+ if (str.length == 2) str = "0" + str;
278
+ timeStr += str;
279
+
280
+ timeStr = "[" + timeStr + "]";
281
+ return timeStr;
282
+ }
283
+ }
284
+
285
+ // @ts-ignore
286
+ Logger.init();
@@ -0,0 +1,9 @@
1
+ {
2
+ "ver": "4.0.24",
3
+ "importer": "typescript",
4
+ "imported": true,
5
+ "uuid": "eeda0ce3-1afb-4898-9449-53181c6e4288",
6
+ "files": [],
7
+ "subMetas": {},
8
+ "userData": {}
9
+ }
@@ -0,0 +1 @@
1
+ 游戏多语言组件
@@ -0,0 +1,133 @@
1
+ import { sys } from "cc";
2
+ import { LanguageData } from "./LanguageData";
3
+ import { LanguagePack } from "./LanguagePack";
4
+ import { Logger } from "../Logger";
5
+ import { LanguageLabel } from "./LanguageLabel";
6
+ import { LanguageSprite } from "./LanguageSprite";
7
+ import { EDITOR } from "cc/env";
8
+
9
+ /** 多语言管理器 */
10
+ export class LanguageManager {
11
+ private _languages: Array<string> = [sys.Language.CHINESE, sys.Language.ENGLISH]; // 支持的语言
12
+ private _languagePack: LanguagePack = new LanguagePack(); // 语言包
13
+ private _defaultLanguage: string = sys.Language.CHINESE; // 默认语言
14
+
15
+ labelArr: Map<string, LanguageLabel> = new Map();
16
+ spriteArr: Map<string, LanguageSprite> = new Map();
17
+
18
+ /** 支持的多种语言列表 */
19
+ get languages(): string[] {
20
+ return this._languages;
21
+ }
22
+ set languages(languages: Array<string>) {
23
+ this._languages = languages;
24
+ }
25
+
26
+ /** 设置的当前语言列表中没有配置时,使用默认语言 */
27
+ set default(lang: string) {
28
+ this._defaultLanguage = lang || sys.Language.CHINESE;
29
+ }
30
+
31
+ /** 获取当前语种 */
32
+ get current(): string {
33
+ return LanguageData.current;
34
+ }
35
+
36
+ /** 语言包 */
37
+ get pack(): LanguagePack {
38
+ return this._languagePack;
39
+ }
40
+
41
+ /**
42
+ * 是否存在指定语言
43
+ * @param lang 语言名
44
+ * @returns 存在返回true,则否false
45
+ */
46
+ isExist(lang: string): boolean {
47
+ return this.languages.indexOf(lang) > -1;
48
+ }
49
+
50
+ /** 获取下一个语种 */
51
+ getNextLang(): string {
52
+ let supportLangs = this.languages;
53
+ let index = supportLangs.indexOf(LanguageData.current);
54
+ return supportLangs[(index + 1) % supportLangs.length];
55
+ }
56
+
57
+ /**
58
+ * 改变语种,会自动下载对应的语种
59
+ * @param language 语言名
60
+ * @param callback 多语言资源数据加载完成回调
61
+ */
62
+ setLanguage(bundleName: string, language: string, callback?: Function) {
63
+ if (language == null || language == "") {
64
+ language = this._defaultLanguage;
65
+ }
66
+ else {
67
+ language = language.toLowerCase();
68
+ }
69
+
70
+ let index = this.languages.indexOf(language);
71
+ if (index < 0) {
72
+ console.log(`当前不支持【${language}】语言,将自动切换到【${this._defaultLanguage}】语言`);
73
+ language = this._defaultLanguage;
74
+ }
75
+
76
+ if (language === LanguageData.current) {
77
+ console.log(`当前语言【${language}】语言,没有改变`)
78
+ callback && callback();
79
+ return;
80
+ }
81
+
82
+ this.loadLanguageAssets(bundleName, language, (lang: string) => {
83
+ Logger.logConfig(`当前语言为【${language}】`);
84
+ const oldLanguage = LanguageData.current;
85
+ LanguageData.current = language;
86
+ this._languagePack.updateLanguage(language);
87
+ this._languagePack.releaseLanguageAssets(oldLanguage);
88
+ callback && callback();
89
+ });
90
+ }
91
+
92
+ /**
93
+ * 根据data获取对应语种的字符
94
+ * @param labId
95
+ * @param arr
96
+ */
97
+ getLangByID(labId: string): string {
98
+ return LanguageData.getLangByID(labId);
99
+ }
100
+
101
+ /**
102
+ * 下载语言包素材资源
103
+ * 包括语言json配置和语言纹理包
104
+ * @param lang
105
+ * @param callback
106
+ */
107
+ loadLanguageAssets(bundleName: string, lang: string, callback: Function) {
108
+ lang = lang.toLowerCase();
109
+ return this._languagePack.loadLanguageAssets(bundleName, lang, callback);
110
+ }
111
+
112
+ /**
113
+ * 释放不需要的语言包资源
114
+ * @param lang
115
+ */
116
+ releaseLanguageAssets(lang: string) {
117
+ lang = lang.toLowerCase();
118
+ this._languagePack.releaseLanguageAssets(lang);
119
+ }
120
+
121
+
122
+ async addEditorLabel(label: LanguageLabel) {
123
+ if (EDITOR) {
124
+ this.labelArr.set(label.uuid, label)
125
+ }
126
+
127
+ }
128
+ addEditorSprite(spr: LanguageSprite) {
129
+ if (EDITOR) {
130
+ this.spriteArr.set(spr.uuid, spr)
131
+ }
132
+ }
133
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "ver": "4.0.24",
3
+ "importer": "typescript",
4
+ "imported": true,
5
+ "uuid": "3757cc59-a8b6-4e6c-876f-3ff810e98ba3",
6
+ "files": [],
7
+ "subMetas": {},
8
+ "userData": {
9
+ "moduleId": "project:///assets/script/core/gui/language/Language.js",
10
+ "importerSettings": 4,
11
+ "simulateGlobals": []
12
+ }
13
+ }
@@ -0,0 +1,114 @@
1
+ import { assetManager, JsonAsset } from "cc";
2
+ import { Label } from "cc";
3
+ import { TTFFont, Node } from "cc";
4
+ import { IConfig } from "../../config/IConfig";
5
+ import { director } from "cc";
6
+
7
+ /*
8
+ * @Author: dgflash
9
+ * @Date: 2022-02-11 09:31:52
10
+ * @LastEditors: dgflash
11
+ * @LastEditTime: 2023-08-22 16:37:40
12
+ */
13
+
14
+ /** 框架支持的语言数据类型 */
15
+ export enum LanguageDataType {
16
+ /** Json格式配置 */
17
+ Json = "Json",
18
+ /** Excel生成的Json配置 */
19
+ Excel = "Excel",
20
+ }
21
+
22
+ export class LanguageData {
23
+ /** JSON资源目录 */
24
+ static path_json: string = "language/json";
25
+ /** 纹理资源目录 */
26
+ static path_texture: string = "language/texture";
27
+ /** SPINE资源目录 */
28
+ static path_spine: string = "language/spine";
29
+
30
+ /** 当前语言 */
31
+ static current: string = "";
32
+ /** 语言数据 */
33
+ static language: Map<string, any> = new Map();
34
+ /** TTF字体 */
35
+ static font: TTFFont = null!;
36
+ static current_def: string = "zh";
37
+
38
+
39
+
40
+ /**
41
+ * 通过多语言关键字获取语言文本
42
+ *
43
+ * 注:
44
+ *
45
+ * 1、先获取language/json中的配置数据,如果没有者获取config/game/Language配置表中的多语言数据
46
+ *
47
+ * 2、config/game/Language配置表可选使用,不用时不创建同名配置表即可
48
+ *
49
+ * 3、config/game/Language配置表使用oops-plugin-excel-to-json插件生成,点击项目根目录下载update-oops-plugin-framework.bat或update-oops-plugin-framework.sh脚本下载插件
50
+ */
51
+ static getLangByID(labId: string): string {
52
+ if (this.current === "") { this.current = this.current_def }
53
+ let content: string = null!;
54
+ for (const [key, value] of this.language) {
55
+ if (key == LanguageDataType.Excel) {
56
+ let lang = value[labId];
57
+ if (lang) content = lang[this.current];
58
+ }
59
+ else {
60
+ content = value[labId];
61
+ }
62
+ if (content) return content;
63
+ }
64
+ return labId;
65
+ }
66
+
67
+ static async loadDBEditor(node: Node) {
68
+ if (this.current === "") { this.current = this.current_def }
69
+ //@ts-ignore
70
+ let prefabInfo = node._prefab ?? null;
71
+ let prefabUid: string = prefabInfo?.asset?.uuid;
72
+ if (!prefabUid) {
73
+ //@ts-ignore
74
+ prefabUid = director.getScene()._prefab.fileId
75
+ }
76
+ let dbUrl: string = "";
77
+ if (prefabUid) {
78
+ //@ts-ignore
79
+ let absoluteUrl = await Editor.Message.request("asset-db", "query-url", prefabUid);
80
+ let url = absoluteUrl.split("://");
81
+ let paths = url[1].split("/");
82
+ dbUrl = url[0] + "://" + paths[0] + "/" + paths[1];
83
+ //console.log("absoluteUrl112222:", absoluteUrl, dbUrl);
84
+ //label
85
+ return dbUrl
86
+
87
+ }
88
+ }
89
+ /**编辑器环境下改变多语言 */
90
+ public static async loadConfig() {
91
+ const db_json = `db://assets/resources/config.json`
92
+
93
+ let uuid = await Editor.Message.request("asset-db", "query-uuid", db_json);
94
+ await new Promise<void>((resolve) => {
95
+ assetManager.loadAny(uuid, (err, jsonAsset: JsonAsset) => {
96
+ // console.log("2加载表格", jsonAsset, err);
97
+ MainModule.gui.config = jsonAsset.json as IConfig;
98
+ //console.error(MainModule.gui.config)
99
+ resolve()
100
+ });
101
+ })
102
+ }
103
+
104
+ public static updateLanguage() {
105
+ if (this.current === "") { this.current = this.current_def }
106
+
107
+ }
108
+ }
109
+
110
+ export const LanguageType = [
111
+ 'LanguageLabel',
112
+ 'LanguageSprite',
113
+ 'LanguageSpine'
114
+ ]
@@ -0,0 +1,9 @@
1
+ {
2
+ "ver": "4.0.24",
3
+ "importer": "typescript",
4
+ "imported": true,
5
+ "uuid": "27fb3b23-0fcd-4994-83f6-2854d2594a78",
6
+ "files": [],
7
+ "subMetas": {},
8
+ "userData": {}
9
+ }