super-hero/assets/cc-game/scripts/game_ui/LevelUpLayout.ts

74 lines
2.7 KiB
TypeScript

import { Button, director } from 'cc';
import { _decorator, Component, Node } from 'cc';
import { GameGlobalData } from '../global/GameGlobalData';
import { Label } from 'cc';
import { SkillRewardItemUI } from './LevelUp/SkillRewardItemUI';
import { SkillInfo } from '../global/GameInterface';
import { EGAME_STATE, GameDefine } from '../config/GameDefine';
import { UmLog } from '../../../cc-common/cc-util/UmLog';
import { UmClientEvent } from '../../../cc-common/cc-util/UmOneToMultiListener';
const { ccclass, property } = _decorator;
@ccclass('LevelUpLayout')
export class LevelUpLayout extends Component {
@property(Button) btnClose: Button = null!;
@property(Label) txtLevelBefore: Label = null!;
@property(Label) txtLevelAfter: Label = null!;
@property(SkillRewardItemUI) listSkillRewardItems: SkillRewardItemUI[] = [];
public onLevelUpClose: (() => void) | undefined;
beforeState = EGAME_STATE.WAIT;
protected onLoad(): void {
this.btnClose?.node.on(Button.EventType.CLICK, this.onBtnCloseClicked, this);
}
protected onEnable(): void {
this.beforeState = GameGlobalData.Instance.gameState;
GameGlobalData.Instance.changeState(EGAME_STATE.WAIT);
}
protected onDisable(): void {
GameGlobalData.Instance.changeState(this.beforeState);
}
onBtnCloseClicked() {
this.node.setNodeActive(false);
this.onLevelUpClose?.();
}
showLevelUp(levelBefore, levelAfter, callback = null) {
this.txtLevelBefore.string = `Level \n${levelBefore}`;
this.txtLevelAfter.string = `Level \n${levelAfter}`;
this.onLevelUpClose = callback;
var listSkillRewardDatas = GameGlobalData.Instance.getListSkillReward(levelBefore);
for (var i = 0; i < listSkillRewardDatas.length; i++)
{
this.listSkillRewardItems[i].setData(listSkillRewardDatas[i], (skillData) => this.onSkillSelectCallback(skillData));
}
}
onSkillSelectCallback(skillData: SkillInfo)
{
UmLog.log("onSkillSelectCallback => ", skillData.skillName);
if (skillData.skillName.includes("AS"))
{
UmLog.log("Collect Skill Type: AS => ", skillData.skillName);
GameGlobalData.Instance.userDataSaver.collectSkill(skillData.skillName, skillData.level);
}
else {
UmLog.log("Collect Skill Type: PS => ", skillData.skillName);
var passiveSkillData = GameGlobalData.Instance.collectPassiveSkill(skillData.skillName, skillData.level);
UmClientEvent.dispatchEvent(GameDefine.EVENT_COLLECT_PASSIVE_SKILL, passiveSkillData);
}
this.node.setNodeActive(false);
this.onLevelUpClose?.();
}
}