super-hero/assets/cc-game/scripts/game_play/skill-active/SkillActiveManagerUI.ts

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);
}
}
}