74 lines
2.7 KiB
TypeScript
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?.();
|
||
|
}
|
||
|
}
|
||
|
|