1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- import { Widget, _decorator, Node, Label, ProgressBar } from 'cc';
- import { UIBase } from '../scriptBase/UIBase';
- import { GameMgr } from '../manager/GameMgr';
- import { CoinItem } from '../uiItem/CoinItem';
- import { CoinMgr } from '../manager/CoinMgr';
- import { StorageUtil } from '../util/StorageUtil';
- import { EventMgr } from '../manager/EventMgr';
- import { EventType } from '../enum/EventType';
- import { CfgPassReward } from '../config/cfg_passReward';
- import { MathUtil } from '../util/MathUtil';
- import { UI } from '../enum/UI';
- import { DtoReward } from '../dto/DtoReward';
- const { ccclass, property, requireComponent } = _decorator;
- @ccclass('UI/UIPassReward')
- @requireComponent(Widget)
- export class UIPassReward extends UIBase {
- private btnGet: Node = null
- private btnContinue: Node = null
- private coinItem: CoinItem = null
- private curPassLevel: number = 0
- private targetPassLevel: number = 0
- private passRewardLevel: number = 0
- protected onLoad(): void {
- this.btnGet = this.findNode('BtnGet')
- this.btnContinue = this.findNode('BtnContinue')
- this.coinItem = this.findComp('CoinItem', CoinItem)
- }
- public onOpen(data?: any): void {
- this.updateState()
- }
- public onClose(data?: any): void {
- }
- private updateState(): void {
- this.coinItem.init(CoinMgr.CurCoin)
- this.passRewardLevel = StorageUtil.getItem('passRewardLevel', 0)
- this.curPassLevel = GameMgr.CurPassedLevel
- this.targetPassLevel = Math.ceil(this.curPassLevel / 5) * 5
- if (this.passRewardLevel === this.targetPassLevel) this.targetPassLevel += 5
- const canGet: boolean = this.curPassLevel >= this.targetPassLevel
- this.btnGet.active = canGet
- this.btnContinue.active = !canGet
- }
- protected onBtnCloseClick(): void {
- this.close()
- }
- protected onBtnGetClick(): void {
- this.getReward()
- StorageUtil.setItem('passRewardLevel', this.targetPassLevel)
- this.updateState()
- EventMgr.emit(EventType.GetPassReward)
- }
- protected getReward(): void {
- const weights: number[] = []
- for (let i = 0; i < CfgPassReward.length; i++) {
- const passReward = CfgPassReward[i]
- weights.push(passReward.weight)
- }
- const idx: number = MathUtil.randWeight(weights)
- const passReward = CfgPassReward[idx]
- const reward: DtoReward = passReward
- this.open(UI.GetReward, [reward])
- }
- }
|