import { _decorator, Color, Component, Label, Node, Sprite } from 'cc'; import { GEvent } from 'db://assets/mx/module/event/GEvent'; const { ccclass, property } = _decorator; enum BoxAdType { AddAtk = 0, //攻击力 AddCoolDown = 1, //技能冷却 AddCritRate = 2, //暴击率 AddDamage = 3, //宝箱增伤 /** Boss减速 */ reduceBoss = 4, } @ccclass('ui_boxAdLayer') export class ui_boxAdLayer extends Component { @property(Node) nodeArray: Node[] = [] dataArray = [ { id: 0, addType: BoxAdType.AddAtk, addxishu: 5, subTime: 0, addTime: 30, allTimes: 3, isUpdate: false }, { id: 1, addType: BoxAdType.AddCoolDown, addxishu: 5, subTime: 0, addTime: 30, allTimes: 3, isUpdate: false }, { id: 2, addType: BoxAdType.AddCritRate, addxishu: 3, subTime: 0, addTime: 30, allTimes: 3, isUpdate: false }, { id: 3, addType: BoxAdType.AddDamage, addxishu: 10, subTime: 0, addTime: 30, allTimes: 3, isUpdate: false }, { id: 4, addType: BoxAdType.reduceBoss, addxishu: 10, subTime: 0, addTime: 30, allTimes: 3, isUpdate: false }, ] addTimeFix = 30 allTimesFix = 5 protected update(dt: number): void { if (!gg.game.CurentBattle.canUpdateFrame()) { return } //处理时间 for (let i = 0; i < this.dataArray.length; i++) { let item = this.dataArray[i] if (item.isUpdate) { let id = item.id if (item.subTime > 0) { item.subTime -= dt * gg.game.CurentBattle.TimeScale this.refreshProgress(this.nodeArray[id], item.subTime, item.addTime) } else { item.isUpdate = false item.subTime = 0 item.addTime = 0 this.refreshNode(this.nodeArray[id], item.allTimes, item.subTime) this.refreshProgress(this.nodeArray[id], item.subTime, this.addTimeFix) } } } } start() { this.nodeArray[3].active = false; this.nodeArray[4].active = false; const atkNum = [0, 0, 0, 0, 0]; for (let i = 0; i < atkNum.length; i++) { this.dataArray[i].addxishu = Number(atkNum[i]) //万分之 this.dataArray[i].subTime = 0 this.dataArray[i].addTime = 0 this.dataArray[i].allTimes = this.allTimesFix //可以使用的次数 this.dataArray[i].isUpdate = false let id = this.dataArray[i].id let addBtn = this.nodeArray[id] let tagLab = addBtn.getChildByName('tagLab').getComponent(Label) tagLab.string = `${this.dataArray[i].addxishu / 100}%` this.refreshNode(addBtn, this.dataArray[i].allTimes, this.dataArray[i].subTime) this.refreshProgress(addBtn, this.dataArray[i].subTime, this.addTimeFix) } } addZsBtnClick(index) { //宝箱增伤 let findData = this.dataArray.find((item) => item.addType == BoxAdType.AddDamage) if (findData.allTimes > 0) { gg.sdk.showVideoAd((res) => { if (res) { let repName = "章节"; gg.sdk.reportDY("inLevel", `章节${gg.game.CurentBattle.getReportDYChapterId()}-AD-${repName}宝箱增伤`) findData.subTime += this.addTimeFix //倒计时的时间 findData.addTime += this.addTimeFix //倒计时固定的总时间 findData.allTimes-- //可以使用的次数 findData.isUpdate = true let id = findData.id let addBtn = this.nodeArray[id] this.refreshNode(addBtn, findData.allTimes, findData.subTime) GEvent.Ins.emit(GEvent.ShowLevelSpine, gg.lang.get('宝箱增伤')+'+' + findData.addxishu / 100 + '%') } else { gg.ui.showToast('观看视频失败'); } }) } else { gg.ui.showToast("本局次数已经使用完"); } } addBaojiBtnClick(index) { //暴击率 let findData = this.dataArray.find((item) => item.addType == BoxAdType.AddCritRate) if (findData.allTimes > 0) { gg.sdk.showVideoAd((res) => { if (res) { let repName = "章节"; gg.sdk.reportDY("inLevel", `章节${gg.game.CurentBattle.getReportDYChapterId()}-AD-${repName}增加暴击率`) findData.subTime += this.addTimeFix //倒计时的时间 findData.addTime += this.addTimeFix //倒计时固定的总时间 findData.allTimes-- //可以使用的次数 findData.isUpdate = true let id = findData.id let addBtn = this.nodeArray[id] this.refreshNode(addBtn, findData.allTimes, findData.subTime) GEvent.Ins.emit(GEvent.ShowLevelSpine, gg.lang.get('暴击率')+'+' + findData.addxishu / 100 + '%') } else { gg.ui.showToast('观看视频失败'); } }) } else { gg.ui.showToast("本局次数已经使用完"); } } addLqBtnClick(index) { //冷却 let findData = this.dataArray.find((item) => item.addType == BoxAdType.AddCoolDown) if (findData.allTimes > 0) { gg.sdk.showVideoAd((res) => { if (res) { let repName = "章节"; gg.sdk.reportDY("inLevel", `章节${gg.game.CurentBattle.getReportDYChapterId()}-AD-${repName}减冷却`) findData.subTime += this.addTimeFix //倒计时的时间 findData.addTime += this.addTimeFix //倒计时固定的总时间 findData.allTimes-- //可以使用的次数 findData.isUpdate = true let id = findData.id let addBtn = this.nodeArray[id] this.refreshNode(addBtn, findData.allTimes, findData.subTime) GEvent.Ins.emit(GEvent.ShowLevelSpine, gg.lang.get('冷却')+'-' + findData.addxishu / 100 + '%') } else { gg.ui.showToast('观看视频失败'); } }) } else { gg.ui.showToast("本局次数已经使用完"); } } addAtkBtnClick(index) { //攻击力 let findData = this.dataArray.find((item) => item.addType == BoxAdType.AddAtk) if (findData.allTimes > 0) { gg.sdk.showVideoAd((res) => { if (res) { let repName = "章节"; gg.sdk.reportDY("inLevel", `章节${gg.game.CurentBattle.getReportDYChapterId()}-AD-${repName}增加攻击力`) findData.subTime += this.addTimeFix //倒计时的时间 findData.addTime += this.addTimeFix //倒计时固定的总时间 findData.allTimes-- //可以使用的次数 findData.isUpdate = true let id = findData.id let addBtn = this.nodeArray[id] this.refreshNode(addBtn, findData.allTimes, findData.subTime) GEvent.Ins.emit(GEvent.ShowLevelSpine, gg.lang.get('攻击力')+'+' + findData.addxishu / 100 + '%') } else { gg.ui.showToast('观看视频失败'); } }) } else { gg.ui.showToast("本局次数已经使用完"); } } reduceBoss() { //boss减速 let findData = this.dataArray.find((item) => item.addType == BoxAdType.reduceBoss) if (findData.allTimes > 0) { gg.sdk.showVideoAd((res) => { if (res) { let repName = "章节"; gg.sdk.reportDY("inLevel", `章节${gg.game.CurentBattle.getReportDYChapterId()}-AD-${repName}减速`) findData.subTime += this.addTimeFix //倒计时的时间 findData.addTime += this.addTimeFix //倒计时固定的总时间 findData.allTimes-- //可以使用的次数 findData.isUpdate = true let id = findData.id let addBtn = this.nodeArray[id] this.refreshNode(addBtn, findData.allTimes, findData.subTime) GEvent.Ins.emit(GEvent.ShowLevelSpine, gg.lang.get('减速')+'+' + findData.addxishu / 100 + '%') } else { gg.ui.showToast('观看视频失败'); } }) } else { gg.ui.showToast("本局次数已经使用完"); } } refreshNode(btnNode, levelTime, subTime) { let cishuNum = btnNode.getChildByName('cishus').getComponent(Label) cishuNum.string = `${levelTime}/${this.allTimesFix}` let tagLab = btnNode.getChildByName('tagLab').getComponent(Label) if (levelTime <= 0) { let spComp = btnNode.getComponent(Sprite); if (!spComp) spComp = btnNode.getComponentInChildren(Sprite); spComp.grayscale = true btnNode.getChildByName('ad').active = false } if (levelTime <= 0 && subTime <= 0) { levelTime = Math.max(levelTime, 0) tagLab.color = new Color(210, 210, 210, 255) } else { //btnNode.getComponent(Sprite).grayscale = false //btnNode.getChildByName('ad').active = true if (subTime > 0) { tagLab.color = new Color(168, 255, 66, 255) this.refreshProgress(btnNode, subTime, this.addTimeFix) } else { tagLab.color = new Color(255, 102, 66, 255) } } } refreshProgress(btnNode, subTime, allTime) { let progress = btnNode.getChildByName('progress').getComponent(Sprite) // let allLeng = 72 progress.fillRange = subTime / allTime } }