import { _decorator, Component, Node, sp, Sprite } from 'cc'; import { GEvent } from 'db://assets/mx/module/event/GEvent'; import { BattleAudio } from 'db://assets/script/battle/audio/BattleAudio'; import { ObstacleType } from '../MapObstacle'; const { ccclass, property } = _decorator; @ccclass('chuifengjiSchedule') export class chuifengjiSchedule extends Component { chixuTime = 0 //持续时间 chixuInterval = 0 //间隔时间开始 chixuTimeFix = 0 //持续时间固定值 chixuIntervalFix = 0 //间隔时间固定值 curState = 'jiangeTime' //当前状态 0 间隔时间 1 持续时间 //chixuTime 持续时间 当前状态是吹风机工作时间 不可以移动 //jiangeTime 间隔时间 当前状态是吹风机冷却时间 可以移动 prochui: Sprite = null //工作进度条 projing: Sprite = null //不工作进度条 choukaSpine: sp.Skeleton = null fuzhiValue = false protected onDisable(): void { // console.log('chuifengjiSchedule onDisable') this.unscheduleAllCallbacks() } onEnable() { this.choukaSpine = this.node.getChildByName('anim').getComponent(sp.Skeleton) this.choukaSpine.setAnimation(0, '吹风', false) this.scheduleOnce(() => { this.choukaSpine.setAnimation(0, '静止', true) }, 1) this.prochui = this.node.getChildByName('prochui').getComponent(Sprite) this.projing = this.node.getChildByName('projing').getComponent(Sprite) //初始化持续时间和间隔时间 // let arr = gg.game.CurentBattle.getObstaclesByType(ObstacleType.吹风机) // if (arr.length > 0) { // console.log('吹风机存在', arr[0].MechanismData) // if (!this.fuzhiValue) { // this.chixuTime = 0 // let cd = arr[0].MechanismData.cd.split('|') // let duration = arr[0].MechanismData.duration.split('|') // if (gg.game.CurentBattle.IsReplica) { // this.chixuTimeFix = Number(duration[0]) // this.chixuInterval = Number(cd[0]) // this.chixuIntervalFix = Number(cd[0]) // } else { // this.chixuTimeFix = Number(duration[0]) // this.chixuInterval = Number(cd[1]) // this.chixuIntervalFix = Number(cd[1]) // } // console.log('持续时间固定值', this.chixuTimeFix) // console.log('间隔时间', this.chixuInterval) // console.log('间隔时间固定值', this.chixuIntervalFix) // this.fuzhiValue = true // } // } this.curState = 'jiangeTime' this.schedule(this.updateChuiFeng, 1) } updateChuiFeng(dt: number) { if (!gg.game.CurentBattle.canUpdateFrame()) return; const scaled = dt * gg.game.CurentBattle.TimeScale; //发送chuifengji事件 if (this.curState == 'jiangeTime') { this.chixuInterval += scaled this.projing.fillRange = (this.chixuInterval / this.chixuIntervalFix) if (this.chixuInterval >= this.chixuIntervalFix) { this.chixuInterval = 0 //开始持续时间 this.chixuTime = 0 this.curState = 'chixuTime' let isCanMove = this.getIsCanMove() GEvent.Ins.emit(GEvent.ChuifengjiEvent, isCanMove) //console.log('当前状态是吹风机工作时间 不可以移动') this.prochui.fillRange = 1 this.projing.fillRange = 1 this.prochui.node.active = true this.projing.node.active = false this.choukaSpine.setAnimation(0, '吹风', true) BattleAudio.playWindBlow() } } else if (this.curState == 'chixuTime') { this.chixuTime += scaled this.prochui.fillRange = 1 - (this.chixuTime / this.chixuTimeFix) if (this.chixuTime >= this.chixuTimeFix) { this.chixuTime = 0 //开始间隔时间 this.chixuInterval = 0 this.curState = 'jiangeTime' this.choukaSpine.setAnimation(0, '静止', true) //console.log('当前状态是吹风机冷却时间可以移动') let isCanMove = this.getIsCanMove() this.prochui.fillRange = 1 this.projing.fillRange = 0 this.prochui.node.active = false this.projing.node.active = true GEvent.Ins.emit(GEvent.ChuifengjiEvent, isCanMove) } } //GEvent.Ins.emit(GEvent.ChuifengjiEvent) } getIsCanMove() { return this.curState == 'jiangeTime' } }