import { Color } from 'cc'; import { _decorator, Component, Node } from 'cc'; import { GameGlobalData } from '../../global/GameGlobalData'; import { SkillActiveItemUI } from './SkillActiveItemUI'; import { GameDefine } from '../../config/GameDefine'; import { UmClientEvent } from '../../../../cc-common/cc-util/UmOneToMultiListener'; import { UmLog } from '../../../../cc-common/cc-util/UmLog'; const { ccclass, property } = _decorator; @ccclass('SkillActiveManagerUI') export class SkillActiveManagerUI extends Component { @property(SkillActiveItemUI) listSkillBtns: SkillActiveItemUI[] = []; themeColor = [new Color('dcb550'), new Color('73f4ab'), new Color('e95048')]; isSkillUsing = false; timeSkillCanUse: number = 0; timeSkillUsing: number = 0; currentChooseSkill: number = 0; protected start(): void { var listDatas = GameGlobalData.Instance.listActiveSkillUses; // for (var i = 0; i < this.listSkillBtns.length; i++) // { // this.listSkillBtns[i].setSkillInfo(i, listDatas[i]?.mana); // this.listSkillBtns[i].onClicked = this.onBtnSkillClicked.bind(this); // } this.showChooseSkill(); } onBtnSkillClicked(tag: number) { // this.castSkill(tag); } nextChooseSkill() { this.currentChooseSkill++; if (this.currentChooseSkill >= GameGlobalData.Instance.listActiveSkillUses.length) this.currentChooseSkill = 0; this.showChooseSkill(); } showChooseSkill() { for (var i = 0; i < this.listSkillBtns.length; i++) { this.listSkillBtns[i].showSkill(i == this.currentChooseSkill); } } checkCastSkill(mana: number) { var infoSkillUsing = GameGlobalData.Instance.listActiveSkillUses[this.currentChooseSkill]; if (mana >= infoSkillUsing.mana) { this.castSkill(this.currentChooseSkill); } this.nextChooseSkill(); } castSkill(tag: number) { UmLog.log("castSkill => ", tag); GameGlobalData.Instance.currentActiveSkill = tag; var infoSkillUsing = GameGlobalData.Instance.listActiveSkillUses[tag]; UmClientEvent.dispatchEvent(GameDefine.EVENT_START_USE_ACTIVE_SKILL, tag, infoSkillUsing.mana); for (var i = 0; i < this.listSkillBtns.length; i++) { this.listSkillBtns[i].showSkill(false); } this.timeSkillCanUse = infoSkillUsing.useTime; this.timeSkillUsing = 0; this.isSkillUsing = true; } protected update(dt: number): void { if (!GameGlobalData.Instance.isStatePlay()) return; if (!this.isSkillUsing) return; this.timeSkillUsing += dt; if (this.timeSkillUsing >= this.timeSkillCanUse) { this.isSkillUsing = false; this.listSkillBtns[GameGlobalData.Instance.currentActiveSkill].showSkill(false); } } }