super-hero/assets/cc-game/scripts/game_play/skill-special/SkillSpecialManager.ts

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