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?.(); } }