cb/assets/Script/RedeemCode.ts
2025-12-23 16:57:46 +08:00

107 lines
3.6 KiB
TypeScript

import Utils from "./module/Pay/Utils";
import { MiniGameSdk } from "./Sdk/MiniGameSdk";
const { ccclass, property } = cc._decorator;
@ccclass
export default class RedeemCode extends cc.Component {
@property(cc.Button)
onBtn: cc.Button = null;
@property(cc.EditBox)
editBoxCode: cc.EditBox = null;
start() {
}
onConfirm() {
const account = this.editBoxCode ? this.editBoxCode.string.trim() : "";
// 判断用户输入的值是否为空
if (!account) {
console.log("兑换码不能为空");
return;
}
// 如果不为空,发送给服务器
console.log("发送兑换码到服务器:", account);
// let res = { code: 1, data: { reward: { 1001: 1000, 2001: 1, 2002: 1, 2003: 1 } } }
Utils.getRedeemInfo((res) => {
if (res.code === 1) {
let rewards = res.data.reward;
const rewardData = [];
const canvasTemp = cc.find("Canvas");
let JiaZai = null;
if (canvasTemp) {
JiaZai = canvasTemp.getComponent("JiaZai");
}
for (let itemId in rewards) {
let itemNum = rewards[itemId];
cc.fx.GameTool.getPassCheckPorp(parseInt(itemId), itemNum, false, true);
let typeStr = '';
let finalItemNum = itemNum;
switch (parseInt(itemId)) {
case 1001: // 金币
typeStr = 'coin';
break;
case 2001: // 冰冻道具
typeStr = 'freeze';
break;
case 2002: // 锤子道具
typeStr = 'hammer';
break;
case 2003: // 魔棒道具
typeStr = 'magic';
break;
case 3001: // 无限体力 900秒
typeStr = 'infinite_health';
finalItemNum = 900;
break;
case 3002: // 无限体力 1800秒
typeStr = 'infinite_health';
finalItemNum = 1800;
break;
case 3003: // 无限体力 3600秒
typeStr = 'infinite_health';
finalItemNum = 3600;
break;
default:
typeStr = 'infinite_health'; // 默认类型
finalItemNum = itemNum * 900;
break;
}
// let itemIdType = this.getItemIdType(itemId, itemNum);
rewardData.push({ type: typeStr, count: finalItemNum });
}
// 领取物品弹窗
console.log("rewardData", rewardData)
if (JiaZai && rewardData.length > 0) {
JiaZai.openRewardWindow(rewardData);
}
JiaZai.updateCoin();
const data = {
code: account,
}
cc.fx.GameTool.shushu_Track("redeem", data);
setTimeout(() => {
this.onClose();
}, 1000);
} else {
MiniGameSdk.API.showToast(res.msg);
}
}, account)
}
onClose() {
this.node.destroy();
}
// update (dt) {}
}