546 lines
20 KiB
TypeScript
546 lines
20 KiB
TypeScript
// Learn TypeScript:
|
|
// - https://docs.cocos.com/creator/2.4/manual/en/scripting/typescript.html
|
|
// Learn Attribute:
|
|
// - https://docs.cocos.com/creator/2.4/manual/en/scripting/reference/attributes.html
|
|
// Learn life-cycle callbacks:
|
|
// - https://docs.cocos.com/creator/2.4/manual/en/scripting/life-cycle-callbacks.html
|
|
|
|
import JiaZai from "../../Script/JiaZai";
|
|
import Utils from "../../Script/module/Pay/Utils";
|
|
import NumberToImage from "../../Script/NumberToImage";
|
|
import { MiniGameSdk } from "../../Script/Sdk/MiniGameSdk";
|
|
|
|
// import JiaZai from "./JiaZai";
|
|
// import Utils from "./module/Pay/Utils";
|
|
// import NumberToImage from "./NumberToImage";
|
|
// import { MiniGameSdk } from "./Sdk/MiniGameSdk";
|
|
|
|
const { ccclass, property } = cc._decorator;
|
|
|
|
@ccclass
|
|
export default class DailyQuests extends cc.Component {
|
|
|
|
@property(cc.Node)
|
|
content: cc.Node = null;
|
|
//月卡按钮切换
|
|
@property(cc.Node)
|
|
getBtn: cc.Node = null;
|
|
|
|
public juwai = false;
|
|
btn_Touch: boolean = false;
|
|
|
|
private iosPrice: number = 0;
|
|
private iosProductId: string = "";
|
|
private iosCount: number = 1;
|
|
public home: number = 0;
|
|
public touchStart: boolean = false;
|
|
public reward: boolean = false;
|
|
|
|
onLoad() {
|
|
this.btn_Touch = true;
|
|
// 检测微信小游戏切到后台
|
|
this.home = 0;
|
|
}
|
|
|
|
|
|
|
|
start() {
|
|
// this.init();
|
|
}
|
|
init(data) {
|
|
cc.fx.GameConfig.GM_INFO.tasks.levelPass = data["levelPass"];
|
|
cc.fx.GameConfig.GM_INFO.tasks.share = data["share"];
|
|
cc.fx.GameConfig.GM_INFO.tasks.useEnergy = data["useEnergy"];
|
|
cc.fx.GameConfig.GM_INFO.tasks.useProp = data["useProp"];
|
|
this.touchStart = true;
|
|
this.reward = false;
|
|
// 一键领取按钮状态
|
|
this.getBtn.active = false;
|
|
this.node.getChildByName("finishi").active = false;
|
|
// 通过关卡已经领取
|
|
for (let i = this.content.children.length - 1; i >= 0; i--) {
|
|
const child = this.content.children[i];
|
|
// 根据索引匹配不同任务类型
|
|
if (
|
|
(i === 0 && data.levelPass.state === 2) ||
|
|
(i === 1 && data.share.state === 2) ||
|
|
(i === 2 && data.useEnergy.state === 2) ||
|
|
(i === 3 && data.useProp.state === 2)
|
|
) {
|
|
child.removeFromParent();
|
|
}
|
|
}
|
|
|
|
// 对剩余节点进行排序 - state == 1的排在上面
|
|
const children = this.content.children;
|
|
children.sort((a, b) => {
|
|
const aName = a.name;
|
|
const bName = b.name;
|
|
const aState = data[aName].state;
|
|
const bState = data[bName].state;
|
|
|
|
// state == 1的排前面
|
|
if (aState === 1 && bState !== 1) return -1;
|
|
if (aState !== 1 && bState === 1) return 1;
|
|
return 0;
|
|
});
|
|
|
|
// 重新设置节点顺序
|
|
for (let i = 0; i < children.length; i++) {
|
|
children[i].setSiblingIndex(i);
|
|
}
|
|
|
|
// 强制更新布局
|
|
this.content.getComponent(cc.Layout).updateLayout();
|
|
// 检查是否有未领取的任务
|
|
if (this.content.children.length == 0) {
|
|
this.node.getChildByName("finishi").active = true;
|
|
} else {
|
|
for (let j = 0; j < this.content.children.length; j++) {
|
|
let child = this.content.children[j];
|
|
child.getChildByName("progress").getComponent(cc.Sprite).fillRange = 0;
|
|
child.getChildByName("get").active = false;
|
|
child.getChildByName("jump").active = false;
|
|
let name = this.content.children[j].name;
|
|
if (data[name].value > data[name].target) {
|
|
data[name].value = data[name].target;
|
|
}
|
|
let progress = data[name].value / data[name].target;
|
|
if (data[name].state == 1 && progress == 1) {
|
|
child.getChildByName("get").active = true;
|
|
child.getChildByName("jump").active = false;
|
|
setTimeout(() => {
|
|
// this.getBtn.active = true;
|
|
}, 0);
|
|
}
|
|
else if (data[name].state == 0) {
|
|
child.getChildByName("get").active = false;
|
|
child.getChildByName("jump").active = true;
|
|
}
|
|
let time = 0.3;
|
|
if (progress == 0) time = 0;
|
|
cc.tween(child.getChildByName("progress").getComponent(cc.Sprite))
|
|
.delay(j * 0.1)
|
|
.to(time, { fillRange: progress })
|
|
.start();
|
|
NumberToImage.numberToImageNodes4(data[name].value, 40, 15, "white", child.getChildByName("target"), false);
|
|
NumberToImage.numberToImageNodes4(data[name].target, 40, 15, "white", child.getChildByName("total"), false);
|
|
let target = child.getChildByName("target");
|
|
for (let i = 0; i < target.children.length; i++) {
|
|
target.children[i].color = cc.Color.WHITE;
|
|
}
|
|
let total = child.getChildByName("total");
|
|
for (let i = 0; i < total.children.length; i++) {
|
|
total.children[i].color = cc.Color.WHITE;
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
//入场动画
|
|
setAction() {
|
|
this.node.getChildByName("gold_1").getComponent(sp.Skeleton).setAnimation(0, "animation", false);
|
|
setTimeout(() => {
|
|
this.node.getChildByName("qipao3").active = true;
|
|
this.node.getChildByName("qipao3").getComponent(sp.Skeleton).setAnimation(0, "animation", false);
|
|
cc.tween(this.node.getChildByName("propBg1"))
|
|
.delay(0.1)
|
|
.to(0.2, { opacity: 255 })
|
|
.start();
|
|
}, 400);
|
|
setTimeout(() => {
|
|
this.node.getChildByName("qipao2").active = true;
|
|
this.node.getChildByName("qipao2").getComponent(sp.Skeleton).setAnimation(0, "animation", false);
|
|
cc.tween(this.node.getChildByName("propBg2"))
|
|
.delay(0.1)
|
|
.to(0.2, { opacity: 255 })
|
|
.start();
|
|
}, 600);
|
|
setTimeout(() => {
|
|
this.node.getChildByName("gold_2").active = true;
|
|
this.node.getChildByName("qipao1").active = true;
|
|
this.node.getChildByName("qipao1").getComponent(sp.Skeleton).setAnimation(0, "animation", false);
|
|
cc.tween(this.node.getChildByName("propBg3"))
|
|
.delay(0.1)
|
|
.to(0.2, { opacity: 255 })
|
|
.start();
|
|
}, 800);
|
|
setTimeout(() => {
|
|
// this.node.getChildByName("gold_2").active = true;
|
|
this.node.getChildByName("baoxiang").active = true;
|
|
}, 1000);
|
|
}
|
|
|
|
//购买月卡
|
|
openReward(name, res) {
|
|
let data = null;
|
|
if (name == "levelPass") {
|
|
data = [
|
|
{ type: "coin", count: 100 },
|
|
{ type: "freeze", count: 2 }
|
|
]
|
|
let data2 = {
|
|
id: 0,
|
|
status: "claim"
|
|
}
|
|
cc.fx.GameTool.shushu_Track("daily_task", data2);
|
|
}
|
|
else if (name == "useProp") {
|
|
data = [
|
|
{ type: "hammer", count: 1 }
|
|
]
|
|
let data2 = {
|
|
id: 3,
|
|
status: "claim"
|
|
}
|
|
cc.fx.GameTool.shushu_Track("daily_task", data2);
|
|
}
|
|
else if (name == "useEnergy") {
|
|
data = [
|
|
{ type: "coin", count: 100 },
|
|
{ type: "magic", count: 1 }
|
|
]
|
|
let data2 = {
|
|
id: 2,
|
|
status: "claim"
|
|
}
|
|
cc.fx.GameTool.shushu_Track("daily_task", data2);
|
|
}
|
|
else if (name == "share") {
|
|
data = [
|
|
{ type: "infinite_health", count: 900 },
|
|
]
|
|
let data2 = {
|
|
id: 1,
|
|
status: "claim"
|
|
}
|
|
cc.fx.GameTool.shushu_Track("daily_task", data2);
|
|
}
|
|
else if (name == "all") {
|
|
data = res;
|
|
}
|
|
console.log("获得任务奖励", data);
|
|
let shuju = {
|
|
"coin": 0,
|
|
"freeze": 0,
|
|
"hammer": 0,
|
|
"magic": 0,
|
|
"infinite_health": 0,
|
|
}
|
|
for (let i = 0; i < data.length; i++) {
|
|
let type = data[i].type;
|
|
let count = data[i].count;
|
|
shuju[type] += count;
|
|
}
|
|
let propData = {
|
|
"freeze": shuju.freeze || 0,
|
|
"hammer": shuju.hammer || 0,
|
|
"magic_wand": shuju.magic || 0,
|
|
"price": 0
|
|
}
|
|
this.getShopProp(propData);
|
|
if (shuju.coin > 0) {
|
|
cc.fx.GameTool.changeCoin(shuju.coin);
|
|
}
|
|
if (shuju.infinite_health > 0) {
|
|
cc.fx.GameTool.setUserPowerTime(shuju.infinite_health);
|
|
}
|
|
|
|
const canvasTemp = cc.find("Canvas"); // 假设 Canvas 节点
|
|
if (canvasTemp) {
|
|
const JiaZai = canvasTemp.getComponent("JiaZai");
|
|
if (JiaZai) {
|
|
JiaZai.openRewardWindow(data);
|
|
if (shuju.coin > 0) {
|
|
JiaZai.updateCoin();
|
|
}
|
|
if (shuju.infinite_health > 0) {
|
|
JiaZai.updatePower();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
setReward(id) {
|
|
}
|
|
|
|
closeDailyQuests() {
|
|
this.node.active = false;
|
|
const jiazaiNode = cc.find("Canvas"); // 假设 JiaZai 挂在 Canvas 节点
|
|
const jiazaiComp = jiazaiNode.getComponent(JiaZai);
|
|
if (jiazaiComp) {
|
|
jiazaiComp.checkTasks();
|
|
}
|
|
}
|
|
|
|
openLoad() {
|
|
this.node.getChildByName("Loading").active = true;
|
|
this.node.getChildByName("Loading").getChildByName("load").stopAllActions();
|
|
this.node.getChildByName("Loading").getChildByName("load").runAction(cc.rotateTo(2, 1080).repeatForever());
|
|
}
|
|
|
|
openConfirmBox() {
|
|
this.closeLoad();
|
|
this.node.getChildByName("ConfirmBox").active = true;
|
|
}
|
|
closeConfirmBox() {
|
|
this.node.getChildByName("ConfirmBox").active = false;
|
|
}
|
|
|
|
closeLoad() {
|
|
this.node.getChildByName("Loading").active = false;
|
|
}
|
|
|
|
//点击去完成
|
|
clickBtn(event, data) {
|
|
if (data == "useProp" || data == "levelPass" || "useEnergy" == data) {
|
|
this.closeDailyQuests();
|
|
const jiazaiNode = cc.find("Canvas"); // 假设 JiaZai 挂在 Canvas 节点
|
|
const jiazaiComp = jiazaiNode.getComponent(JiaZai);
|
|
if (jiazaiComp) {
|
|
jiazaiComp.startGame();
|
|
}
|
|
}
|
|
else if (data == "share") {
|
|
let iphoneArr = [
|
|
"https://mmocgame.qpic.cn/wechatgame/Lf3SBqy9XpNkakoIZygRzXqww3HTibq6VyibazqmicwibjCS3YpgqbZtkdyABm4Y1wAr/0",
|
|
"https://mmocgame.qpic.cn/wechatgame/TWKuFxnCn7ksT3KXfhCC4yOfZeD4b0hrptDSJ2DFmwz02Yc8SppcwyPAOoS1MsMr/0",
|
|
"https://mmocgame.qpic.cn/wechatgame/dibaH2x79o1wSwBDymhyzXwfcyicaDb6R5icrFIO7251T4NgxIzXRXErHvAvn50vXFA/0",
|
|
"https://mmocgame.qpic.cn/wechatgame/Pgxad80d8ws3o69OicV3DTuTkcP81upQeJ0JBNS1xib3pzYLTF1ZqGY3niciaI7ICKlL/0",
|
|
"https://mmocgame.qpic.cn/wechatgame/SfB1vrRBIHKn9ffKFt5sib62yPLE31m2rCvk6DKlEicJNVZSoryEObD6ItwsQn4xibR/0",
|
|
"https://mmocgame.qpic.cn/wechatgame/OiaWk33I6QjgWiatrb5YVUq2p0QRmQgO6rLUWxEQDZ4ib9Ny4Pr8iaHnHI6WdxibY2nPL/0",
|
|
"https://mmocgame.qpic.cn/wechatgame/CG5xBibollws251aYD4msEPWCiafrcn4Fgtic4T2wME6sWmdfAUtfibgsWoxm59VadDD/0"
|
|
]
|
|
let randomIphone = iphoneArr[Math.floor(Math.random() * iphoneArr.length)];
|
|
let img = randomIphone;
|
|
const shareParams = {
|
|
title: '如果你突然打了个喷嚏,那一定是我在等你帮忙过关!', // 分享标题
|
|
imageUrl: img // 分享图片链接
|
|
};
|
|
// 调用微信分享 API
|
|
if (cc.sys.platform === cc.sys.WECHAT_GAME) {
|
|
//@ts-ignore
|
|
wx.shareAppMessage(shareParams);
|
|
setTimeout(() => {
|
|
this.closeDailyQuests();
|
|
}, 500);
|
|
const jiazaiNode = cc.find("Canvas"); // 假设 JiaZai 挂在 Canvas 节点
|
|
const jiazaiComp = jiazaiNode.getComponent(JiaZai);
|
|
console.log("分享出去了");
|
|
if (cc.fx.GameConfig.GM_INFO.tasks.share.value < cc.fx.GameConfig.GM_INFO.tasks.share.target) {
|
|
cc.fx.GameConfig.GM_INFO.tasks.share.value += 1;
|
|
cc.fx.GameTool.setDailyQuestInfo((data) => {
|
|
if (data.code == 1) {
|
|
if (jiazaiComp) {
|
|
setTimeout(() => {
|
|
jiazaiComp.openDailyQuests();
|
|
}, 1000);
|
|
}
|
|
}
|
|
});
|
|
if (cc.fx.GameConfig.GM_INFO.tasks.share.value == cc.fx.GameConfig.GM_INFO.tasks.share.target) {
|
|
let data = {
|
|
id: 1,
|
|
status: "complete"
|
|
}
|
|
cc.fx.GameTool.shushu_Track("daily_task", data);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
getReward(event, data) {
|
|
if (this.touchStart == false) {
|
|
return;
|
|
}
|
|
this.touchStart = false;
|
|
this.reward = true;
|
|
let shuju = [data];
|
|
Utils.getDailyQuestReward(shuju, (res) => {
|
|
this.touchStart = true;
|
|
this.reward = false;
|
|
if (res.code == 1) {
|
|
let dataNode = null;
|
|
for (let i = 0; i < this.content.children.length; i++) {
|
|
if (this.content.children[i].name === data) {
|
|
dataNode = this.content.children[i];
|
|
break;
|
|
}
|
|
}
|
|
dataNode.getChildByName("get").active = false;
|
|
cc.tween(dataNode)
|
|
.to(0.4, { x: dataNode.x - 1000, opacity: 50 })
|
|
.call(() => {
|
|
this.openReward(dataNode.name, null);
|
|
this.touchStart = true;
|
|
dataNode.removeFromParent();
|
|
this.content.getComponent(cc.Layout).updateLayout();
|
|
this.checkGetReward();
|
|
})
|
|
.start();
|
|
}
|
|
else {
|
|
MiniGameSdk.API.showToast("网络异常,领取奖励失败");
|
|
}
|
|
})
|
|
setTimeout(() => {
|
|
if (this.reward == true && this.touchStart == false) {
|
|
this.touchStart = true;
|
|
}
|
|
}, 5000);
|
|
}
|
|
|
|
getAllReward() {
|
|
if (this.touchStart == false) {
|
|
return;
|
|
}
|
|
this.touchStart = false;
|
|
this.reward = true;
|
|
let shuju = [];
|
|
for (let i = 0; i < this.content.children.length; i++) {
|
|
let dataNode = this.content.children[i];
|
|
if (dataNode.getChildByName("get").active == true) {
|
|
shuju.push(dataNode.name);
|
|
}
|
|
}
|
|
console.log("准备上传的任务", shuju);
|
|
Utils.getDailyQuestReward(shuju, (res) => {
|
|
this.touchStart = true;
|
|
this.reward = false;
|
|
if (res.code == 1) {
|
|
let data = [
|
|
{ type: "coin", count: 0 },
|
|
{ type: "freeze", count: 0 },
|
|
{ type: "hammer", count: 0 },
|
|
{ type: "magic", count: 0 },
|
|
{ type: "infinite_health", count: 0 },
|
|
]
|
|
for (let i = 0; i < this.content.children.length; i++) {
|
|
let dataNode = this.content.children[i];
|
|
if (dataNode.getChildByName("get").active == true) {
|
|
dataNode.getChildByName("get").active = false;
|
|
if (dataNode.name == "levelPass") {
|
|
data[0].count += 100;
|
|
data[1].count += 2;
|
|
let data2 = {
|
|
id: 0,
|
|
status: "claim"
|
|
}
|
|
cc.fx.GameTool.shushu_Track("daily_task", data2);
|
|
}
|
|
else if (dataNode.name == "useProp") {
|
|
data[2].count += 1;
|
|
let data2 = {
|
|
id: 3,
|
|
status: "claim"
|
|
}
|
|
cc.fx.GameTool.shushu_Track("daily_task", data2);
|
|
}
|
|
else if (dataNode.name == "useEnergy") {
|
|
data[0].count += 100;
|
|
data[3].count += 1;
|
|
let data2 = {
|
|
id: 2,
|
|
status: "claim"
|
|
}
|
|
cc.fx.GameTool.shushu_Track("daily_task", data2);
|
|
}
|
|
else if (dataNode.name == "share") {
|
|
data[4].count += 900;
|
|
let data2 = {
|
|
id: 1,
|
|
status: "claim"
|
|
}
|
|
cc.fx.GameTool.shushu_Track("daily_task", data2);
|
|
}
|
|
cc.tween(dataNode)
|
|
.to(0.4, { x: dataNode.x - 1000, opacity: 50 })
|
|
.call(() => {
|
|
this.touchStart = true;
|
|
dataNode.removeFromParent();
|
|
this.content.getComponent(cc.Layout).updateLayout();
|
|
this.checkGetReward();
|
|
})
|
|
.start();
|
|
}
|
|
}
|
|
for (let j = 0; j < data.length; j++) {
|
|
if (data[j].count == 0) {
|
|
data.splice(j, 1);
|
|
j--;
|
|
}
|
|
}
|
|
this.openReward("all", data);
|
|
}
|
|
else {
|
|
MiniGameSdk.API.showToast("网络异常,领取奖励失败");
|
|
}
|
|
})
|
|
setTimeout(() => {
|
|
if (this.reward == true && this.touchStart == false) {
|
|
this.touchStart = true;
|
|
}
|
|
}, 5000);
|
|
}
|
|
|
|
checkGetReward() {
|
|
this.getBtn.active = false;
|
|
if (this.content.children.length == 0) {
|
|
this.getBtn.active = false;
|
|
this.node.getChildByName("finishi").active = true;
|
|
}
|
|
else {
|
|
for (let j = 0; j < this.content.children.length; j++) {
|
|
let child = this.content.children[j];
|
|
if (child.getChildByName("get").active) {
|
|
// this.getBtn.active = true;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
getShopProp(propData) {
|
|
//@ts-ignore
|
|
if ((typeof wx !== 'undefined' && wx !== null) || (typeof tt !== 'undefined' && tt !== null)) {
|
|
const num = 0;
|
|
//console.log("_________道具增加的数量为:", num);
|
|
cc.fx.GameConfig.GM_INFO.freezeAmount += propData.freeze;
|
|
cc.fx.GameConfig.GM_INFO.hammerAmount += propData.hammer;
|
|
cc.fx.GameConfig.GM_INFO.magicAmount += propData.magic_wand;
|
|
cc.fx.GameTool.setUserProp(0, num, (data) => {
|
|
})
|
|
const data1 = {
|
|
change_reason: "quests",
|
|
id: 2001,
|
|
num: propData.freeze,
|
|
compensate: false
|
|
}
|
|
cc.fx.GameTool.shushu_Track("resource_get", data1);
|
|
const data2 = {
|
|
change_reason: "quests",
|
|
id: 2002,
|
|
num: propData.hammer,
|
|
compensate: false
|
|
}
|
|
cc.fx.GameTool.shushu_Track("resource_get", data2);
|
|
const data3 = {
|
|
change_reason: "quests",
|
|
id: 2003,
|
|
num: propData.magic_wand,
|
|
compensate: false
|
|
}
|
|
cc.fx.GameTool.shushu_Track("resource_get", data3);
|
|
}
|
|
}
|
|
|
|
onDestroy() {
|
|
|
|
}
|
|
|
|
update() {
|
|
|
|
}
|
|
}
|