96 lines
2.9 KiB
TypeScript
96 lines
2.9 KiB
TypeScript
|
|
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);
|
|
}
|
|
}
|
|
}
|
|
|