You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
250 lines
10 KiB
250 lines
10 KiB
|
3 weeks ago
|
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
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
|