import ViewObject from "../../../main/ViewObject"; import FqPay, { UM_EVENT_ID } from "../../../pay/FqPay"; import { HttpStateType, ReveData } from "../../../util/CHttp"; import { __FirstPayRewardData, __PayData, __WishData } from "../../data/sdata/SManage"; const { ccclass, property } = cc._decorator; interface WishData { playerPay: Map, hdPayData: Array<__WishData> } @ccclass export default class Wish extends ViewObject { @property([cc.Node]) itemList: cc.Node[] = []; @property(cc.Prefab) goodItem: cc.Prefab = null; wishData: WishData = null; curHdPayData = null; target: cc.Node = null; /** * * @param prev 父界面 */ public show(prev?: ViewObject) { if (prev) { this.prev = prev; this.prev.__close(); } this.main.viewManage.popView1(this.node); if (this.main && this.main.gameHttp) { this.main.gameHttp.pushEvent(this); } } getWishData() { let msg = {}; this.main.gameHttp.sendJson(`hdpay/v1/hdData`, msg, (state, reve: ReveData) => { this.main.stopLoad(); if (state == HttpStateType.SUCCESS) { if (reve.retCode == 0) { console.log("==reve=getWishData===", reve) this.wishData = reve.data; this.initItem(); this.show(); } else { this.main.showTips(reve.message); } } else { this.main.showTips('网络异常'); } }); } playVideo(callback: (result: number) => void) { let eventId1 = UM_EVENT_ID.ad_wish_0; let eventId2 = UM_EVENT_ID.ad_wish_1; let fqPay: FqPay = new FqPay(this.main); fqPay.adVideo(callback, eventId1, eventId2); } videoFree(id: number) { let msg = { hdId: id }; this.main.gameHttp.sendJson(`hdpay/v1/freeHd`, msg, (state, reve: ReveData) => { this.main.stopLoad(); if (state == HttpStateType.SUCCESS) { if (reve.retCode == 0) { this.refresh(); this.main.showReward(reve); } else { this.main.showTips(reve.message); } } else { this.main.showTips('网络异常'); } }); } initItem() { this.wishData.hdPayData.forEach((data, index) => { let item = this.itemList[index]; let parent = item.getChildByName("goodList"); let lbtimes = item.getChildByName("lbtimes"); let btnPay = item.getChildByName("btnPay"); let btnGeted = item.getChildByName("btnGeted"); let lbpay = btnPay.getChildByName("lbpay"); let times = !this.wishData.playerPay[data.id] ? 0 : this.wishData.playerPay[data.id]; if (lbpay) { let payData = this.getPayDataById(this.wishData.hdPayData[index].payId); lbpay.getComponent(cc.Label).string = `$ ${payData.usd}`; } lbtimes.getComponent(cc.Label).string = `限购:${times}/${data.maxCount}`; if (times == data.maxCount) { btnGeted.active = true; btnPay.active = false; } JSON.parse(data.reward).forEach(rd => { this.addGood(parent, rd); }); }) } addGood(parent: cc.Node, reward: __FirstPayRewardData) { let good = cc.instantiate(this.goodItem); parent.addChild(good); this.initGoodItem(good, reward); } initGoodItem(item: cc.Node, reward: __FirstPayRewardData) { let node = item.getChildByName("infoNode"); let icon = node.getChildByName("icon").getComponent(cc.Sprite); let frame = item.getChildByName("frame").getComponent(cc.Sprite); this.initIcon(icon, reward.icon); this.initFrameIcon(frame, reward.frame); node.getChildByName("countNode").getChildByName("count").getComponent(cc.Label).string = reward.count + ""; } public initIcon(icon: cc.Sprite, path: string) { cc.resources.load(`icon/${path}`, cc.SpriteFrame, (err, spriteFrame: cc.SpriteFrame) => { if (err) { cc.error(err); } else { icon.spriteFrame = spriteFrame; } }); } public initFrameIcon(icon: cc.Sprite, path: string | number) { cc.resources.load(`icon/frame/${path}`, cc.SpriteFrame, (err, spriteFrame: cc.SpriteFrame) => { if (err) { cc.error(err); } else { icon.spriteFrame = spriteFrame; } }); } onClick(eventTouch: cc.Event.EventTouch, data: string) { this.target = eventTouch.target; this.curHdPayData = this.wishData.hdPayData[data]; if (data == "0") { this.playVideo((result) => { if (result == 1) { this.videoFree(this.curHdPayData.id); } else { this.main.showTips("广告还未准备好"); } }); } else if (data == "1") { this.pay(this.curHdPayData.payId); } else if (data == "2") { this.pay(this.curHdPayData.payId); } } pay(payId: string) { let fqPay: FqPay = new FqPay(this.main); let payData = this.getPayDataById(payId); if (payData == null) { console.log("===payData=null===", payId) return } fqPay.pay(payData, () => { this.refresh(); }) } getPayDataById(payId: string) { let payData = null; this.main.sManage.payDatas.forEach(data => { if (data.id == Number(payId)) { payData = data; } }) return payData; } refresh() { let item = this.target.parent; let lbtimes = item.getChildByName("lbtimes"); let btnPay = item.getChildByName("btnPay"); let btnGeted = item.getChildByName("btnGeted"); let times = !this.wishData.playerPay[this.curHdPayData.id] ? 0 : this.wishData.playerPay[this.curHdPayData.id]; times++; lbtimes.getComponent(cc.Label).string = `限购:${times}/${this.curHdPayData.maxCount}`; if (times == this.curHdPayData.maxCount) { btnPay.active = false; btnGeted.active = true; } } }