80 lines
3.0 KiB
TypeScript
80 lines
3.0 KiB
TypeScript
import { _decorator, Component, Node } from 'cc';
|
|
import { GameGlobalData } from '../../global/GameGlobalData';
|
|
import { instantiate } from 'cc';
|
|
import { SkillSpecialItemUI } from './SkillSpecialItemUI';
|
|
import { UmClientEvent } from '../../../../cc-common/cc-util/UmOneToMultiListener';
|
|
import { UmLog } from '../../../../cc-common/cc-util/UmLog';
|
|
import { GameDefine } from '../../config/GameDefine';
|
|
const { ccclass, property } = _decorator;
|
|
|
|
@ccclass('SkillSpecialManager')
|
|
export class SkillSpecialManager extends Component {
|
|
@property(Node) container: Node = null;
|
|
@property(Node) skillItemPrefab: Node = null;
|
|
|
|
listItem: Map<string, SkillSpecialItemUI> = new Map<string, SkillSpecialItemUI>();
|
|
isSkillUsing = false;
|
|
|
|
protected onLoad(): void {
|
|
UmLog.log("SkillSpecialManager => start");
|
|
this.addListSkillAvailable();
|
|
UmClientEvent.on(GameDefine.EVENT_START_USE_SPECIAL_SKILL, this.onStartUseSkillSpecial.bind(this));
|
|
UmClientEvent.on(GameDefine.EVENT_END_USE_SPECIAL_SKILL, this.onEndUseSkillSpecial.bind(this));
|
|
// UmClientEvent.on(GameDefine.EVENT_MANA_READY, this.onManaReady.bind(this));
|
|
}
|
|
|
|
protected onDestroy(): void {
|
|
UmLog.log("SkillSpecialManager => onDestroy");
|
|
UmClientEvent.off(GameDefine.EVENT_START_USE_SPECIAL_SKILL, this.onStartUseSkillSpecial.bind(this));
|
|
UmClientEvent.off(GameDefine.EVENT_END_USE_SPECIAL_SKILL, this.onEndUseSkillSpecial.bind(this));
|
|
// UmClientEvent.off(GameDefine.EVENT_MANA_READY, this.onManaReady.bind(this));
|
|
}
|
|
|
|
onManaReady(isAvailable: boolean)
|
|
{
|
|
if (!this?.node?.active) return;
|
|
if (!this.isSkillUsing)
|
|
this.setAllItemActive(isAvailable);
|
|
}
|
|
|
|
onStartUseSkillSpecial(skillId: number) {
|
|
UmLog.log("onStartUseSkillSpecial => ", skillId);
|
|
this.isSkillUsing = true;
|
|
this.setAllItemActive(false);
|
|
this.listItem.get(skillId.toString()).node.setNodeActive(true);
|
|
|
|
}
|
|
|
|
onEndUseSkillSpecial(skillId: number) {
|
|
UmLog.log("onEndUseSkillSpecial => ", skillId);
|
|
this.isSkillUsing = false;
|
|
this.setAllItemActive(GameGlobalData.Instance.isHeroManaReady);
|
|
}
|
|
|
|
setAllItemActive(isActive: boolean)
|
|
{
|
|
for (var item of this.listItem.values()) {
|
|
item.node.setNodeActive(isActive);
|
|
}
|
|
}
|
|
|
|
addListSkillAvailable()
|
|
{
|
|
let listSkillAvailable = GameGlobalData.Instance.userDataSaver.active_skill;
|
|
if (!listSkillAvailable?.length) return;
|
|
|
|
for (var i = 0; i < listSkillAvailable.length; i++)
|
|
{
|
|
var item = instantiate(this.skillItemPrefab).getComponent(SkillSpecialItemUI);
|
|
item.node.parent = this.container;
|
|
item.node.setNodeActive(true);
|
|
var itemData = GameGlobalData.Instance.skillSpecialDataInfo[listSkillAvailable[i]];
|
|
item.setData(itemData);
|
|
this.listItem.set(itemData.skillId.toString(), item);
|
|
}
|
|
|
|
this.setAllItemActive(false);
|
|
}
|
|
}
|
|
|