@cc-component/cc-core 1.2.8 → 1.2.9
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/assets/core/config/CommonEnum.ts +8 -2
- package/assets/core/config/CommonEnum.ts.meta +1 -1
- package/assets/core/config/IConfig.ts +1 -1
- package/assets/core/config/IConfig.ts.meta +1 -1
- package/assets/core/config/LayerType.ts.meta +1 -1
- package/assets/core/config/LayerUI.ts +14 -12
- package/assets/core/config/LayerUI.ts.meta +1 -1
- package/assets/core/config.meta +1 -1
- package/assets/core/editor/LanguageManager.ts +5 -5
- package/assets/core/editor/LanguageManager.ts.meta +1 -1
- package/assets/core/editor/SpineRunner.ts.meta +1 -1
- package/assets/core/editor/i18nEditorComponent.ts +12 -12
- package/assets/core/editor/i18nEditorComponent.ts.meta +1 -1
- package/assets/core/editor.meta +1 -1
- package/assets/core/home/AudioUtil.ts +5 -11
- package/assets/core/home/AudioUtil.ts.meta +1 -1
- package/assets/core/home/BaseBoxView.ts +13 -16
- package/assets/core/home/BaseBoxView.ts.meta +1 -1
- package/assets/core/home/BaseLaunchComponent.ts.meta +1 -1
- package/assets/core/home/BaseLoading.ts +34 -18
- package/assets/core/home/BaseLoading.ts.meta +1 -1
- package/assets/core/home/BaseModuleConfig.ts +46 -0
- package/assets/core/home/{ProgessView.ts.meta → BaseModuleConfig.ts.meta} +9 -9
- package/assets/core/home/BaseSkeleton.ts +4 -4
- package/assets/core/home/BaseSkeleton.ts.meta +1 -1
- package/assets/core/home/CameraAngel.ts +41 -41
- package/assets/core/home/CameraAngel.ts.meta +1 -1
- package/assets/core/home/DouYinShow.ts +1 -1
- package/assets/core/home/DouYinShow.ts.meta +1 -1
- package/assets/core/home/EventManager.ts +2 -10
- package/assets/core/home/EventManager.ts.meta +1 -1
- package/assets/core/home/FollowCamera.ts +28 -29
- package/assets/core/home/FollowCamera.ts.meta +1 -1
- package/assets/core/home/InViewCenter.ts +1 -1
- package/assets/core/home/InViewCenter.ts.meta +1 -1
- package/assets/core/home/LoadingWindow.ts.meta +1 -1
- package/assets/core/home/ParabolaTween.ts.meta +1 -1
- package/assets/core/home/ProgessWindow.ts +109 -0
- package/assets/core/home/{ExView.ts.meta → ProgessWindow.ts.meta} +1 -1
- package/assets/core/home/Quaternion.ts.meta +1 -1
- package/assets/core/home/ResUtil.ts.meta +1 -1
- package/assets/core/home/ResourceManager.ts +13 -14
- package/assets/core/home/ResourceManager.ts.meta +1 -1
- package/assets/core/home/StateMachine.ts +9 -9
- package/assets/core/home/StateMachine.ts.meta +1 -1
- package/assets/core/home/StorageManager.ts +1 -1
- package/assets/core/home/StorageManager.ts.meta +1 -1
- package/assets/core/home/ThirdFreeLookCamera.ts +2 -2
- package/assets/core/home/ThirdFreeLookCamera.ts.meta +1 -1
- package/assets/core/home/TimeManager.ts +1 -1
- package/assets/core/home/TimeManager.ts.meta +1 -1
- package/assets/core/home/Tools.ts +209 -0
- package/assets/core/home/Tools.ts.meta +1 -1
- package/assets/core/home/util/EncryptUtil.ts.meta +1 -1
- package/assets/core/home/util/MathUtil.ts.meta +1 -1
- package/assets/core/home/util/Md5.ts.meta +1 -1
- package/assets/core/home/util/RandomUtil.ts +41 -41
- package/assets/core/home/util/RandomUtil.ts.meta +1 -1
- package/assets/core/home/util/ResUtil.ts.meta +1 -1
- package/assets/core/home/util/crypto-js.d.ts.meta +1 -1
- package/assets/core/home/util/crypto-js.js.meta +1 -1
- package/assets/core/home/util.meta +1 -1
- package/assets/core/home.meta +1 -1
- package/assets/core/interface/App.ts +545 -0
- package/assets/core/interface/{MainModule.ts.meta → App.ts.meta} +1 -1
- package/assets/core/interface/ISceneParam.ts.meta +1 -1
- package/assets/core/interface/Interface.ts +66 -77
- package/assets/core/interface/Interface.ts.meta +1 -1
- package/assets/core/interface.meta +1 -1
- package/assets/core/lib/language/Language.ts +3 -4
- package/assets/core/lib/language/Language.ts.meta +1 -1
- package/assets/core/lib/language/LanguageData.ts +4 -4
- package/assets/core/lib/language/LanguageData.ts.meta +1 -1
- package/assets/core/lib/language/LanguageLabel.ts +6 -6
- package/assets/core/lib/language/LanguageLabel.ts.meta +1 -1
- package/assets/core/lib/language/LanguagePack.ts +8 -9
- package/assets/core/lib/language/LanguagePack.ts.meta +1 -1
- package/assets/core/lib/language/LanguagePointLabel.ts.meta +1 -1
- package/assets/core/lib/language/LanguageSpine.ts +1 -1
- package/assets/core/lib/language/LanguageSpine.ts.meta +1 -1
- package/assets/core/lib/language/LanguageSprite.ts +7 -7
- package/assets/core/lib/language/LanguageSprite.ts.meta +1 -1
- package/assets/core/lib/language.meta +1 -1
- package/assets/core/lib/logger/ELoggerLevel.ts +0 -12
- package/assets/core/lib/logger/ELoggerLevel.ts.meta +1 -1
- package/assets/core/lib/logger/MLogger.ts +7 -8
- package/assets/core/lib/logger/MLogger.ts.meta +1 -1
- package/assets/core/lib/logger.meta +1 -1
- package/assets/core/lib/net/libs/proto/output/protobuf.d.ts.meta +1 -1
- package/assets/core/lib/net/libs/proto/output/protobuf.min.js.meta +1 -1
- package/assets/core/lib/net/libs/proto/output/protobuf_custom.d.ts.meta +1 -1
- package/assets/core/lib/net/libs/proto/output/protobuf_custom.js.meta +1 -1
- package/assets/core/lib/net/libs/proto/output.meta +1 -1
- package/assets/core/lib/net/libs/proto/source/Cmd.proto.meta +1 -1
- package/assets/core/lib/net/libs/proto/source/UserLogin.proto.meta +1 -1
- package/assets/core/lib/net/libs/proto/source/base.proto.meta +1 -1
- package/assets/core/lib/net/libs/proto/source/command.proto.meta +1 -1
- package/assets/core/lib/net/libs/proto/source/domain/boos_battle_info.proto.meta +1 -1
- package/assets/core/lib/net/libs/proto/source/domain/player_auth.proto.meta +1 -1
- package/assets/core/lib/net/libs/proto/source/domain.meta +1 -1
- package/assets/core/lib/net/libs/proto/source/message/game_push.proto.meta +1 -1
- package/assets/core/lib/net/libs/proto/source/message/game_request.proto.meta +1 -1
- package/assets/core/lib/net/libs/proto/source/message/game_response.proto.meta +1 -1
- package/assets/core/lib/net/libs/proto/source/message.meta +1 -1
- package/assets/core/lib/net/libs/proto/source/push/boss_battle_events.proto.meta +1 -1
- package/assets/core/lib/net/libs/proto/source/push.meta +1 -1
- package/assets/core/lib/net/libs/proto/source.meta +1 -1
- package/assets/core/lib/net/libs/proto.meta +1 -1
- package/assets/core/lib/net/libs.meta +1 -1
- package/assets/core/lib/net/net/HttpManager.ts +2 -2
- package/assets/core/lib/net/net/HttpManager.ts.meta +1 -1
- package/assets/core/lib/net/net/NetInterface.ts.meta +1 -1
- package/assets/core/lib/net/net/NetManager.ts.meta +1 -1
- package/assets/core/lib/net/net/NetNode.ts +16 -17
- package/assets/core/lib/net/net/NetNode.ts.meta +1 -1
- package/assets/core/lib/net/net/WebSock.ts +1 -2
- package/assets/core/lib/net/net/WebSock.ts.meta +1 -1
- package/assets/core/lib/net/net/custom/NetChannelManager.ts.meta +1 -1
- package/assets/core/lib/net/net/custom/NetConfig.ts.meta +1 -1
- package/assets/core/lib/net/net/custom/NetErrorCode.ts.meta +1 -1
- package/assets/core/lib/net/net/custom/NetGameTips.ts +8 -9
- package/assets/core/lib/net/net/custom/NetGameTips.ts.meta +1 -1
- package/assets/core/lib/net/net/custom/NetNodeGame.ts +1 -1
- package/assets/core/lib/net/net/custom/NetNodeGame.ts.meta +1 -1
- package/assets/core/lib/net/net/custom.meta +1 -1
- package/assets/core/lib/net/net/protocol/NetProtocolJson.ts.meta +1 -1
- package/assets/core/lib/net/net/protocol/NetProtocolProtobuf.ts.meta +1 -1
- package/assets/core/lib/net/net/protocol.meta +1 -1
- package/assets/core/lib/net/net.meta +1 -1
- package/assets/core/lib/net/prompt.meta +1 -1
- package/assets/core/lib/net.meta +1 -1
- package/assets/core/lib/old.meta +1 -1
- package/assets/core/lib/tabbar/TabBarComponent.ts.meta +1 -1
- package/assets/core/lib/tabbar/TabBarController.ts.meta +1 -1
- package/assets/core/lib/tabbar/TabBarItem.ts.meta +1 -1
- package/assets/core/lib/tabbar.meta +1 -1
- package/assets/core/lib.meta +1 -1
- package/assets/core.meta +1 -1
- package/assets.meta +1 -1
- package/index.ts +14 -0
- package/index.ts.meta +1 -1
- package/package.json +1 -1
- package/package.json.meta +1 -1
- package/assets/core/home/ExView.ts +0 -9
- package/assets/core/home/JsonUtil.ts +0 -102
- package/assets/core/home/JsonUtil.ts.meta +0 -9
- package/assets/core/home/ProgessView.ts +0 -96
- package/assets/core/home/prefabs.meta +0 -12
- package/assets/core/interface/MainModule.ts +0 -1019
- package/assets/core/lib/Logger.ts +0 -286
- package/assets/core/lib/Logger.ts.meta +0 -9
- package/assets/core/lib/old/VM2.ts +0 -619
- package/assets/core/lib/old/VM2.ts.meta +0 -9
- package/assets/core/lib/old/ViewModel.ts +0 -905
- package/assets/core/lib/old/ViewModel.ts.meta +0 -9
- package/assets/core/lib/old/ViewSearch.ts +0 -125
- package/assets/core/lib/old/ViewSearch.ts.meta +0 -9
|
@@ -77,12 +77,11 @@ export class ResourceManager {
|
|
|
77
77
|
if (record) {
|
|
78
78
|
let { asset } = record;
|
|
79
79
|
record.refCount--;
|
|
80
|
-
ResourceManager.instance.LogAssets(bundleName)
|
|
81
80
|
if (record.refCount <= 0) {
|
|
82
81
|
asset.decRef(); // 减少引用计数
|
|
83
82
|
this.loadedAssets.delete(key);
|
|
84
|
-
|
|
85
83
|
}
|
|
84
|
+
ResourceManager.instance.LogAssets(bundleName)
|
|
86
85
|
}
|
|
87
86
|
}
|
|
88
87
|
|
|
@@ -208,7 +207,7 @@ export class ResourceManager {
|
|
|
208
207
|
list.push({ name: asset.name, refCount: asset.refCount })
|
|
209
208
|
}
|
|
210
209
|
});
|
|
211
|
-
|
|
210
|
+
Logger.debug("资源计数:\n", list)
|
|
212
211
|
}
|
|
213
212
|
|
|
214
213
|
LogAssetsAll() {
|
|
@@ -229,10 +228,10 @@ export class ResourceManager {
|
|
|
229
228
|
const { asset, refCount } = record;
|
|
230
229
|
list.push({ bundle_name: record.bundleName, name: asset.name, refCount: refCount, refCountAsset: asset.refCount })
|
|
231
230
|
});
|
|
232
|
-
|
|
231
|
+
Logger.warn("资源计数:\n", Array.from(bundle_map.values()))
|
|
233
232
|
|
|
234
|
-
|
|
235
|
-
|
|
233
|
+
Logger.warn("资源总数:", assetManager.assets.count)
|
|
234
|
+
Logger.warn("资源总数:", assetManager.assets)
|
|
236
235
|
}, 500)
|
|
237
236
|
|
|
238
237
|
}
|
|
@@ -294,7 +293,7 @@ export class ResourceManager {
|
|
|
294
293
|
let asset = bundle.get(path);
|
|
295
294
|
|
|
296
295
|
if (asset) {
|
|
297
|
-
//
|
|
296
|
+
//Logger.debug('已加载==', asset.refCount)
|
|
298
297
|
// 记录加载的资源
|
|
299
298
|
ResourceManager.instance.trackAsset(path, asset, bundleName);
|
|
300
299
|
ResourceManager.instance.LogAssets(bundleName)
|
|
@@ -309,7 +308,7 @@ export class ResourceManager {
|
|
|
309
308
|
resolve(null);
|
|
310
309
|
return;
|
|
311
310
|
}
|
|
312
|
-
|
|
311
|
+
Logger.debug('--加载', path)
|
|
313
312
|
// 记录加载的资源
|
|
314
313
|
ResourceManager.instance.trackAsset(path, asset, bundleName);
|
|
315
314
|
ResourceManager.instance.LogAssets(bundleName)
|
|
@@ -335,7 +334,7 @@ export class ResourceManager {
|
|
|
335
334
|
//加载bundle——预制体
|
|
336
335
|
assetManager.loadBundle(name, (err, ab: AssetManager.Bundle) => {
|
|
337
336
|
if (err) {
|
|
338
|
-
|
|
337
|
+
Logger.warn(`bundle名称:${name} `, err);
|
|
339
338
|
return;
|
|
340
339
|
}
|
|
341
340
|
resolve(ab);
|
|
@@ -358,7 +357,7 @@ export class ResourceManager {
|
|
|
358
357
|
|
|
359
358
|
static async loadDir(bundleName: string, dirName: string, type: any, pre: Function) {
|
|
360
359
|
return new Promise<void>(resolve => {
|
|
361
|
-
//
|
|
360
|
+
//Logger.warn(bundleName, dirName)
|
|
362
361
|
|
|
363
362
|
assetManager.getBundle(bundleName).loadDir(dirName, type, (finished: number, total: number, item: any) => {
|
|
364
363
|
pre(Math.floor((finished / total * 100)));
|
|
@@ -366,7 +365,7 @@ export class ResourceManager {
|
|
|
366
365
|
// 记录加载的资源
|
|
367
366
|
assets.forEach(asset => {
|
|
368
367
|
const asset_info: { uuid: string, path: string } = assetManager.getBundle(bundleName).getAssetInfo(asset.uuid) as { uuid: string, path: string }
|
|
369
|
-
//
|
|
368
|
+
//Logger.warn(asset_info.path)
|
|
370
369
|
ResourceManager.instance.trackAsset(asset_info.path, asset, bundleName);
|
|
371
370
|
});
|
|
372
371
|
resolve();
|
|
@@ -382,7 +381,7 @@ export class ResourceManager {
|
|
|
382
381
|
static async loadScene(bundleName: string, name: string, pre: Function): Promise<SceneAsset> {
|
|
383
382
|
var promise = new Promise<SceneAsset>(async resolve => {
|
|
384
383
|
let bundle = assetManager.getBundle(bundleName)
|
|
385
|
-
//
|
|
384
|
+
// Logger.warn("-111-加载c错了=", bun);
|
|
386
385
|
if (!bundle) {
|
|
387
386
|
bundle = await new Promise<any>(resolve => {
|
|
388
387
|
assetManager.loadBundle(bundleName, (err, bundle) => {
|
|
@@ -395,7 +394,7 @@ export class ResourceManager {
|
|
|
395
394
|
pre(Math.floor((finished / total * 100)));
|
|
396
395
|
}, (err, prefab) => {
|
|
397
396
|
if (err) {
|
|
398
|
-
|
|
397
|
+
Logger.warn("--加载c错了=", bundleName, name, err);
|
|
399
398
|
}
|
|
400
399
|
resolve(prefab);
|
|
401
400
|
});
|
|
@@ -415,7 +414,7 @@ export class ResourceManager {
|
|
|
415
414
|
pre(Math.floor((finished / total * 100)));
|
|
416
415
|
}, (err) => {
|
|
417
416
|
if (err) {
|
|
418
|
-
|
|
417
|
+
Logger.warn("预加载c错了=", bundleName, name, err);
|
|
419
418
|
}
|
|
420
419
|
resolve(null)
|
|
421
420
|
});
|
|
@@ -8,7 +8,7 @@ abstract class GameState {
|
|
|
8
8
|
abstract enter(): void;
|
|
9
9
|
abstract execute(): void;
|
|
10
10
|
exit(): void {
|
|
11
|
-
|
|
11
|
+
Logger.debug(`${this.constructor.name} 状态退出`);
|
|
12
12
|
}
|
|
13
13
|
}
|
|
14
14
|
export interface IStateMachine {
|
|
@@ -50,27 +50,27 @@ export class GameController {
|
|
|
50
50
|
|
|
51
51
|
// 具体状态类:开始游戏
|
|
52
52
|
export class StartGameState extends GameState {
|
|
53
|
-
enter() {
|
|
53
|
+
enter() { Logger.debug("进入游戏..."); }
|
|
54
54
|
execute() {
|
|
55
|
-
|
|
55
|
+
Logger.debug("准备开始游戏...");
|
|
56
56
|
setTimeout(() => this.delegate.next(), 1000); // 自动进入下一个状态
|
|
57
57
|
}
|
|
58
58
|
}
|
|
59
59
|
|
|
60
60
|
// 具体状态类:游戏中
|
|
61
61
|
export class InGameState extends GameState {
|
|
62
|
-
enter() {
|
|
62
|
+
enter() { Logger.debug("进入游戏中..."); }
|
|
63
63
|
execute() {
|
|
64
|
-
|
|
64
|
+
Logger.debug("正在游戏中...");
|
|
65
65
|
setTimeout(() => this.delegate.next(), 1000);
|
|
66
66
|
}
|
|
67
67
|
}
|
|
68
68
|
|
|
69
69
|
// 具体状态类:弹出选择框
|
|
70
70
|
export class PopupState extends GameState {
|
|
71
|
-
enter() {
|
|
71
|
+
enter() { Logger.debug("弹出选择框..."); }
|
|
72
72
|
execute() {
|
|
73
|
-
|
|
73
|
+
Logger.debug("等待玩家选择...");
|
|
74
74
|
setTimeout(() => {
|
|
75
75
|
const choice = prompt("请选择 (确认/取消): ");
|
|
76
76
|
this.onUserChoice(choice || "取消");
|
|
@@ -88,6 +88,6 @@ export class PopupState extends GameState {
|
|
|
88
88
|
|
|
89
89
|
// 具体状态类:结束游戏
|
|
90
90
|
export class EndGameState extends GameState {
|
|
91
|
-
enter() {
|
|
92
|
-
execute() {
|
|
91
|
+
enter() { Logger.debug("游戏结束..."); }
|
|
92
|
+
execute() { Logger.debug("感谢您的游玩!"); }
|
|
93
93
|
}
|
|
@@ -72,7 +72,7 @@ export class ThirdFreeLookCamera extends Component {
|
|
|
72
72
|
isDown: boolean = false;
|
|
73
73
|
private MouseDown(e: EventTouch) {
|
|
74
74
|
this.isDown = true;
|
|
75
|
-
|
|
75
|
+
Logger.debug("点击");
|
|
76
76
|
}
|
|
77
77
|
|
|
78
78
|
private MouseMove(e: EventTouch) {
|
|
@@ -181,7 +181,7 @@ export class ThirdFreeLookCamera extends Component {
|
|
|
181
181
|
this.angle = Quaternion.GetEulerFromQuat(_quat);
|
|
182
182
|
this.MouseX = this.angle.y;
|
|
183
183
|
this.MouseY = this.angle.x;
|
|
184
|
-
//
|
|
184
|
+
//Logger.debug(this.MouseX.toFixed(2),this.MouseY.toFixed(2));
|
|
185
185
|
}
|
|
186
186
|
|
|
187
187
|
/*************************FollowIndependentRotation end***************** */
|
|
@@ -98,7 +98,7 @@ export class TimeManager {
|
|
|
98
98
|
updateCountdownTime(key: string, minutes: number): boolean {
|
|
99
99
|
const countdownInfo = this.countdowns.get(key);
|
|
100
100
|
if (!countdownInfo) {
|
|
101
|
-
|
|
101
|
+
Logger.warn(`倒计时 ${key} 不存在`);
|
|
102
102
|
return false;
|
|
103
103
|
}
|
|
104
104
|
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
|
|
2
|
+
import { Vec3, v3 } from 'cc';
|
|
2
3
|
import { Button, Toggle, PageView, ToggleContainer, EventHandler, js } from 'cc';
|
|
3
4
|
import { _decorator, Component, Node } from 'cc';
|
|
5
|
+
import { BYTEDANCE } from 'cc/env';
|
|
6
|
+
import { ParabolaTween } from './ParabolaTween';
|
|
4
7
|
const { ccclass, property } = _decorator;
|
|
5
8
|
|
|
6
9
|
/**
|
|
@@ -35,6 +38,211 @@ export class Tools {
|
|
|
35
38
|
}
|
|
36
39
|
}
|
|
37
40
|
}
|
|
41
|
+
|
|
42
|
+
//#region 工具
|
|
43
|
+
/**任务进度队列 */
|
|
44
|
+
static PromiseQueue<T>(promises: Promise<T>[], onProgress: (completed: number, total: number) => void): Promise<T[]> {
|
|
45
|
+
const total = promises.length;
|
|
46
|
+
let completed = 0;
|
|
47
|
+
|
|
48
|
+
// 包装每个 Promise,以便在完成时触发进度更新
|
|
49
|
+
const trackedPromises = promises.map(promise =>
|
|
50
|
+
promise.then(result => {
|
|
51
|
+
completed++;
|
|
52
|
+
onProgress(completed, total); // 更新进度
|
|
53
|
+
return result;
|
|
54
|
+
})
|
|
55
|
+
);
|
|
56
|
+
|
|
57
|
+
// 返回一个新的 Promise.all,确保所有任务完成后返回结果
|
|
58
|
+
return Promise.all(trackedPromises);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
GetListPos(objectCount: number, circleRadius: number, startPos: Vec3) {
|
|
62
|
+
let list: Vec3[] = []
|
|
63
|
+
// 生成指定数量的物体,并按照圆形排列
|
|
64
|
+
for (let i = 0; i < objectCount; i++) {
|
|
65
|
+
// 计算每个物体在圆周上的角度
|
|
66
|
+
let angle = (i / objectCount) * 2 * Math.PI;
|
|
67
|
+
|
|
68
|
+
// 计算每个物体在圆周上的位置
|
|
69
|
+
let x = startPos.x + circleRadius * Math.cos(angle);
|
|
70
|
+
let z = startPos.z + circleRadius * Math.sin(angle);
|
|
71
|
+
|
|
72
|
+
// 创建物体
|
|
73
|
+
const pos = v3(x, 15, z);
|
|
74
|
+
list.push(pos)
|
|
75
|
+
}
|
|
76
|
+
return list
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
//抛物线
|
|
80
|
+
//计算贝塞尔曲线坐标函数
|
|
81
|
+
static twoBezier(k3, startPos, controlPos, endPos) {
|
|
82
|
+
let twoBezier = (t: number, p1: Vec3, cp: Vec3, p2: Vec3) => {
|
|
83
|
+
let x = (1 - t) * (1 - t) * p1.x + 2 * t * (1 - t) * cp.x + t * t * p2.x;
|
|
84
|
+
let y = (1 - t) * (1 - t) * p1.y + 2 * t * (1 - t) * cp.y + t * t * p2.y;
|
|
85
|
+
return new Vec3(x, y, 0);
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
let result_pos = twoBezier(k3, startPos, controlPos, endPos)
|
|
89
|
+
return result_pos
|
|
90
|
+
}
|
|
91
|
+
static customEaseOutInWithSpeed(t) {
|
|
92
|
+
let speedFactor = 0.6
|
|
93
|
+
if (t < 0.5) {
|
|
94
|
+
return 0.5 * Tools.customEaseOut(2 * t, speedFactor);
|
|
95
|
+
} else {
|
|
96
|
+
return 0.5 * Tools.customEaseIn(2 * t - 1, speedFactor) + 0.5;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
static customEaseOut(t, speedFactor) {
|
|
101
|
+
return 1 - Math.pow(1 - t, 2 * speedFactor);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
static customEaseIn(t, speedFactor) {
|
|
105
|
+
return Math.pow(t, 2 * speedFactor);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
//检测碰撞
|
|
109
|
+
static Collision(box1: { x1: number, y1: number, x2: number, y2: number },
|
|
110
|
+
box2: { x1: number, y1: number, x2: number, y2: number }): boolean {
|
|
111
|
+
// 碰撞检测逻辑
|
|
112
|
+
return !(box1.x2 <= box2.x1 || box1.x1 >= box2.x2 ||
|
|
113
|
+
box1.y2 <= box2.y1 || box1.y1 >= box2.y2);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
//朝向
|
|
117
|
+
static CalculateAngle(pointA: Vec3, pointB: Vec3): number {
|
|
118
|
+
// const dx = pointB.x - pointA.x;
|
|
119
|
+
// const dy = pointB.y - pointA.y;
|
|
120
|
+
// return Math.atan2(dy, dx) * (180 / Math.PI);
|
|
121
|
+
|
|
122
|
+
const dx = pointB.x - pointA.x;
|
|
123
|
+
const dy = pointB.y - pointA.y;
|
|
124
|
+
let angle = Math.atan2(dy, dx)
|
|
125
|
+
angle = angle * (180 / Math.PI);
|
|
126
|
+
return angle
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
static LookAtTarget(self: Vec3, target: Vec3) {
|
|
130
|
+
if (target == null) { return }
|
|
131
|
+
// //计算朝向
|
|
132
|
+
let angle = Tools.CalculateAngle(self, target);
|
|
133
|
+
//物体朝向
|
|
134
|
+
return v3(0, 0, angle);
|
|
135
|
+
}
|
|
136
|
+
/**向量的新的位置 */
|
|
137
|
+
static DirectionPosition(start: Vec3, endPos: Vec3, scalar: number) {
|
|
138
|
+
const direction = endPos.clone().subtract(start);
|
|
139
|
+
const pos = direction.normalize().multiplyScalar(scalar);
|
|
140
|
+
return pos
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* 开始抛物线缓动
|
|
145
|
+
* @param item 运动节点
|
|
146
|
+
* @param target_postion 目标位置
|
|
147
|
+
* @param update 更新 运动中回调
|
|
148
|
+
* @param offset_ratio 最高点 的偏移量
|
|
149
|
+
* @param time 动画时间
|
|
150
|
+
*/
|
|
151
|
+
static RunParabolaTween(item: Node, target_postion: Vec3, update: (ratio: number) => void, param?: { offset_ratio?: number, is_random: boolean, time?: number, start_position?: Vec3 }) {
|
|
152
|
+
new ParabolaTween().RunParabolaTween(item, target_postion, update, param);
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
public static IsTT() {
|
|
156
|
+
if (BYTEDANCE) {
|
|
157
|
+
//@ts-ignore
|
|
158
|
+
const info = tt.getSystemInfoSync();
|
|
159
|
+
Logger.debug('-------抖音', info.appName);
|
|
160
|
+
const appName = info.appName;
|
|
161
|
+
if (appName.toUpperCase() === "DOUYIN") {//抖音
|
|
162
|
+
// do something
|
|
163
|
+
return true
|
|
164
|
+
}
|
|
165
|
+
else if (appName.toUpperCase() === "TOUTIAO") {//今日头条
|
|
166
|
+
// do something
|
|
167
|
+
}
|
|
168
|
+
else if (appName.toUpperCase() === "TOUTIAO_PRO") {//今日头条专业版
|
|
169
|
+
// do something
|
|
170
|
+
}
|
|
171
|
+
else if (appName.toUpperCase() === 'NEWS_ARTICLE_LITE') {//今日头条极速版
|
|
172
|
+
// do something
|
|
173
|
+
}
|
|
174
|
+
else if (appName.toUpperCase() === "DOUYIN_LITE") {//抖音极速版
|
|
175
|
+
// do something
|
|
176
|
+
return true
|
|
177
|
+
}
|
|
178
|
+
else if (appName.toUpperCase() === "LIVE_STREAM") {//抖音火山版
|
|
179
|
+
// do something
|
|
180
|
+
return true
|
|
181
|
+
}
|
|
182
|
+
else if (appName.toUpperCase() === "TIKTOK") {//TikTok
|
|
183
|
+
// do something
|
|
184
|
+
return true
|
|
185
|
+
}
|
|
186
|
+
else if (appName.toUpperCase() === "MUSICALLY") {//TikTok.M
|
|
187
|
+
// do something
|
|
188
|
+
return true
|
|
189
|
+
}
|
|
190
|
+
else if (appName.toUpperCase() === "XiGua") {//西瓜视频
|
|
191
|
+
// do something
|
|
192
|
+
}
|
|
193
|
+
else if (appName.toUpperCase() === "PPX") {//皮皮虾
|
|
194
|
+
// do something
|
|
195
|
+
}
|
|
196
|
+
else if (appName.toUpperCase() === "automobile") {//懂车帝
|
|
197
|
+
// do something
|
|
198
|
+
}
|
|
199
|
+
else if (appName.toUpperCase() === "DeliverManager") {//巨量
|
|
200
|
+
// do something
|
|
201
|
+
}
|
|
202
|
+
else if (appName.toUpperCase() === "Reading") {//番茄小说
|
|
203
|
+
// do something
|
|
204
|
+
}
|
|
205
|
+
else if (appName.toUpperCase() === "xiaohe") {//小河
|
|
206
|
+
// do something
|
|
207
|
+
}
|
|
208
|
+
return false
|
|
209
|
+
}
|
|
210
|
+
return false
|
|
211
|
+
|
|
212
|
+
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
//抖音排行榜数据
|
|
216
|
+
public static UpdatePlayerRankData_tt(count: number) {
|
|
217
|
+
const isdy = Tools.IsTT()
|
|
218
|
+
// console.error('抖音22==', isdy)
|
|
219
|
+
if (!isdy) { return }
|
|
220
|
+
// const playerLevel = MeCenter.Ins.player.playerLevel;
|
|
221
|
+
// const levelName = MeCenter.Ins.player.levelName;
|
|
222
|
+
// const levelScore = MeCenter.Ins.player.levelScore;
|
|
223
|
+
// const count = MeCenter.Ins.player.levelScore;
|
|
224
|
+
// const value = `【${levelName}】x${levelScore}星` + ' 大逃杀:' + count + '块'
|
|
225
|
+
const value = '【大逃杀】' + count + '块'
|
|
226
|
+
|
|
227
|
+
if (BYTEDANCE) {
|
|
228
|
+
//一个moba游戏,想要对用户的段位进行排序
|
|
229
|
+
//@ts-ignore
|
|
230
|
+
tt.setImRankData({
|
|
231
|
+
dataType: 1, //成绩为枚举类型,因为段位不是一个数字
|
|
232
|
+
value: value, //该用户段位为白银
|
|
233
|
+
priority: count, //dataType为 1,需要权重,该游戏排序为 青铜(1)、白银(2)、黄金(3)、王者(4),因此此处传2
|
|
234
|
+
extra: "extra",
|
|
235
|
+
zoneId: "default",
|
|
236
|
+
success(res) {
|
|
237
|
+
Logger.debug(`排行榜设置成功: ${res}`);
|
|
238
|
+
},
|
|
239
|
+
fail(res) {
|
|
240
|
+
Logger.debug(`排行榜设置失败: ${res.errMsg}`);
|
|
241
|
+
},
|
|
242
|
+
});
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
}
|
|
38
246
|
}
|
|
39
247
|
|
|
40
248
|
|
|
@@ -100,4 +308,5 @@ export function BindEventClick(target: Node, delegate: Component, func_name?: st
|
|
|
100
308
|
comp.clickEvents.push(clickEventHandler);
|
|
101
309
|
//comp.clickEvents.push(clickEventHandler_sound);
|
|
102
310
|
}
|
|
311
|
+
|
|
103
312
|
}
|
|
@@ -12,50 +12,50 @@
|
|
|
12
12
|
*/
|
|
13
13
|
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
}
|
|
25
|
-
return min + Math.random() * (max - min);
|
|
15
|
+
/**
|
|
16
|
+
* 生成[0, max)的随机数
|
|
17
|
+
* @param max
|
|
18
|
+
* @returns
|
|
19
|
+
*/
|
|
20
|
+
export function random(min: number, max?: number) {
|
|
21
|
+
if (!max) {
|
|
22
|
+
max = min;
|
|
23
|
+
min = 0;
|
|
26
24
|
}
|
|
25
|
+
return min + Math.random() * (max - min);
|
|
26
|
+
}
|
|
27
27
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
28
|
+
/**
|
|
29
|
+
* 生成[0, max)的随机整数
|
|
30
|
+
* @param max
|
|
31
|
+
* @returns
|
|
32
|
+
*/
|
|
33
|
+
export function randomInt(min: number, max?: number) {
|
|
34
|
+
return Math.floor(random(min, max));
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* 从数组中随机取出不重复的元素
|
|
38
|
+
* @param array 原始数组
|
|
39
|
+
* @param count 要取的元素个数
|
|
40
|
+
* @returns 随机不重复的元素数组
|
|
41
|
+
*/
|
|
42
|
+
export function randomUniqueElements<T>(array: T[], count: number): T[] {
|
|
43
|
+
// 如果请求的元素数量大于数组长度,则警告并限制为数组长度
|
|
44
|
+
if (count > array.length) {
|
|
45
|
+
Logger.warn('请求的元素数量大于数组长度,将返回全部元素');
|
|
46
|
+
count = array.length;
|
|
35
47
|
}
|
|
36
|
-
/**
|
|
37
|
-
* 从数组中随机取出不重复的元素
|
|
38
|
-
* @param array 原始数组
|
|
39
|
-
* @param count 要取的元素个数
|
|
40
|
-
* @returns 随机不重复的元素数组
|
|
41
|
-
*/
|
|
42
|
-
export function randomUniqueElements<T>(array: T[], count: number): T[] {
|
|
43
|
-
// 如果请求的元素数量大于数组长度,则警告并限制为数组长度
|
|
44
|
-
if (count > array.length) {
|
|
45
|
-
console.warn('请求的元素数量大于数组长度,将返回全部元素');
|
|
46
|
-
count = array.length;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
// 创建数组副本,避免修改原始数组
|
|
50
|
-
const copy = [...array];
|
|
51
|
-
const result: T[] = [];
|
|
52
48
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
[copy[i], copy[j]] = [copy[j], copy[i]];
|
|
57
|
-
}
|
|
49
|
+
// 创建数组副本,避免修改原始数组
|
|
50
|
+
const copy = [...array];
|
|
51
|
+
const result: T[] = [];
|
|
58
52
|
|
|
59
|
-
|
|
60
|
-
|
|
53
|
+
// 使用 Fisher-Yates 洗牌算法打乱数组顺序
|
|
54
|
+
for (let i = copy.length - 1; i > 0; i--) {
|
|
55
|
+
const j = Math.floor(Math.random() * (i + 1));
|
|
56
|
+
[copy[i], copy[j]] = [copy[j], copy[i]];
|
|
61
57
|
}
|
|
58
|
+
|
|
59
|
+
// 返回打乱后的数组中前 count 个元素
|
|
60
|
+
return copy.slice(0, count);
|
|
61
|
+
}
|