Files
Cocos3.8.5/assets/script/uiPanel/OverUI.ts
ZhouXiao 487c68994d feat: add builder configuration file
feat: add cocos-service configuration file
feat: add device configuration file
feat: add engine configuration file
feat: add information configuration file
feat: add program configuration file
feat: add project configuration file
feat: add TypeScript configuration file
2025-12-22 11:42:51 +08:00

164 lines
6.2 KiB
TypeScript

import { _decorator, Component, Node, Label, UIOpacity, v3, director, tween } from 'cc';
import { AdManager } from '../ads/AdManager';
import { Tools } from '../common/Tools';
import { weiSan } from '../common/weiSanTools';
import { NetworkManager } from '../manager/NetworkManager';
import { osType, PlatformManager, releaseType } from '../manager/PlatformManager';
import { UIManager } from '../manager/UIManager';
import { GameModel } from '../model/GameModel';
import { WordsModel } from '../model/WordsModel';
const { ccclass, property } = _decorator;
@ccclass('OverUI')
export class OverUI extends UIManager {
@property(Node)
bgSpr!: Node;
@property(Node)
viewNode!: Node;
@property(Label)
scoreLab!: Label;
@property(Label)
maxScoreLab!: Label;
@property(Label)
infoText!: Label;
@property(Node)
moreBtn!: Node;
@property(Node)
againBtn!: Node;
/** 是否可点击 按钮 */
isClick: boolean = false;
onLoad() {
this.bgSpr.getComponent(UIOpacity).opacity = 0;
this.viewNode.position.add(v3(0, 1000, 0));
this.againBtn.scale = v3(0, 0, 0);
this.moreBtn.position.add(v3(-2000, 0, 0));
// GameModel._ins.gameScore = Tools.random(100,200);
this.initShowInfo();
this.addBtnEvent();
// 提交分数 和 显示插屏广告
NetworkManager.sendGameScore(GameModel._ins.gameScore, 1);
AdManager.showIntersAd();
if (PlatformManager.osType != osType.h5) { //非H5平台 隐藏更多游戏按钮
this.moreBtn.active = false;
}
}
// start() {
// }
/** 显示结束页 信息 */
initShowInfo() {
this.scoreLab.string = GameModel._ins.gameScore.toString();
let tempNum = this.getBeatItScore(GameModel._ins.gameScore, GameModel._ins.standScore, GameModel._ins.gameMaxScore);
this.infoText.string = this.getBeatItStr(GameModel._ins.gameScore, tempNum, true);
let maxScore = Tools.getStorage("gameOverMaxScore");
if (!maxScore || maxScore <= GameModel._ins.gameScore) {
maxScore = GameModel._ins.gameScore;
Tools.setStorage("gameOverMaxScore", GameModel._ins.gameScore);
}
this.maxScoreLab.string = maxScore.toString();
if (PlatformManager.osType != osType.h5) { return; }
if (Tools.getLanguageType() == "CN" || Tools.getLanguageType() == "CHT") {
document.title = WordsModel.getStrForLanguage("overTitle_1", "CN") + "<" + WordsModel.getStrForLanguage("gameName", "CN")
+ ">" + WordsModel.getStrForLanguage("overTitle_2", "CN") + this.getBeatItStr(GameModel._ins.gameScore, tempNum, false);
} else {
document.title = WordsModel.getStrForLanguage("overTitle_1", "EN") + "<" + WordsModel.getStrForLanguage("gameName", "EN")
+ ">" + WordsModel.getStrForLanguage("overTitle_2", "EN") + this.getBeatItStr(GameModel._ins.gameScore, tempNum, false);
}
console.log(document.title);
}
addBtnEvent() {
this.againBtn.on("click", () => {
if (!this.isClick) { return; }
this.aginGame();
});
this.moreBtn.on("click", () => {
if (!this.isClick) { return; }
if (PlatformManager.releaseType == releaseType.test_TEST) {
weiSan.log("测试模式 更多游戏Url: " + NetworkManager.moreGameUrl);
return;
}
this.isClick = false;
window.location.href = NetworkManager.moreGameUrl;
});
}
/** 再玩一次 */
aginGame() {
this.isClick = false;
// AdManager.showIntersAd();
UIManager.CloseUI("OverUI");
this.scheduleOnce(() => {
director.preloadScene(GameModel._ins.mainScene, () => {
director.loadScene(GameModel._ins.mainScene);
});
}, 0.2);
}
/**
* 获取击败了 全球多少玩家
* @param gameScore 分数
* @param standScore 平均分
* @param maxScore 最高分
*/
getBeatItScore(gameScore: number, standScore: number, maxScore: number) {
if (gameScore >= maxScore) {
return 100;
}
if (gameScore <= standScore) {
let temp = (gameScore / standScore) * 80 + Tools.random(-3, 3);
return Math.max(Math.floor(temp), 5);
} else {
let temp = 80 + ((gameScore - standScore) / (maxScore - standScore)) * 20 + Tools.random(-3, 3);
return Math.min(Math.floor(temp), 99);
}
};
/**
* 获取击败了 全球多少玩家 文字 tempNum:百分之多少 是否是richText
*/
getBeatItStr(score: number, tempNum: number, isRichText = true): string {
var share_title = WordsModel.getStrForLanguage("overScoreInfo_0");
if (score > 0) {
if (isRichText) {
share_title = WordsModel.getStrForLanguage("overScoreInfo_1") +
tempNum + "%" + WordsModel.getStrForLanguage("overScoreInfo_2");
} else {
share_title = WordsModel.getStrForLanguage("overScoreInfo_1") + tempNum + "%" + WordsModel.getStrForLanguage("overScoreInfo_2");
}
}
return share_title;
};
// update (deltaTime: number) {
// }
public openUI() {
this.bgSpr.getComponent(UIOpacity)!.opacity = 0;
tween(this.bgSpr.getComponent(UIOpacity)).to(0.3, { opacity: 100 }).start();
tween(this.moreBtn).by(0.3, { position: v3(2000, 0, 0) }, { easing: "backOut" }).start();
tween(this.viewNode)
.by(0.3, { position: v3(0, -1000, 0) }, { easing: "backOut" })
.call(() => {
this.isClick = true;
tween(this.againBtn).to(0.3, { scale: v3(1, 1, 1) }, { easing: "backOut" }).start();
}).start();
}
public closeUI() {
tween(this.bgSpr.getComponent(UIOpacity)).to(0.2, { opacity: 0 }).start();
tween(this.viewNode)
.by(0.3, { position: v3(0, 100, 0) }, { easing: "backIn" })
.call(() => {
this.node.destroy();
}).start();
tween(this.moreBtn).by(0.2, { position: v3(-2000, 0, 0) }, { easing: "backIn" }).start();
}
public uiName: string;
}