//#region 文件引入 import { _decorator, Button, Component, Label, Node, sp, Sprite,Animation, RichText } from "cc"; import BaseUIForm from "../../Mgr_UI/BaseUIForm"; import FrameScrollView from "../../CComEx/FrameScrollView"; import FrameLayout from "../../CComEx/FrameLayout"; import { IData, TrialConfig, TrialRankData } from "../../const/GameInterface"; import { Global } from "../../Global"; import rewardrankitem_Proxy from "./rewardrankitem_Proxy"; import rewardItem_Proxy from "./rewardItem_Proxy"; import TimeUtils from "../../ExUtils/TimeUtils"; import { GameTotalType } from "../../const/GameEnum"; import UIMgr from "../../Mgr_UI/UIMgr"; import { EUIForms } from "../../const/UIFormCnf"; import { MainConfig } from "db://assets/Launch/_MainConfig"; //#endregion 文件引入 const {ccclass, property,menu} = _decorator; @ccclass("FinalTrialReWardUI_Proxy") export default class FinalTrialReWardUI_Proxy extends BaseUIForm{ //#region 节点自动生成 @property(Label) lab_title: Label = null; @property(Label) lab_myrank: Label = null; @property(Node) n_cd: Node = null; @property(Label) lab_cd: Label = null; @property(Label) lab_cddesc: Label = null; @property(Button) btn_get: Button = null; @property(Label) lab_get: Label = null; //#endregion 节点自动生成 @property({type:[Node]}) topNodes:Node[] = []; @property(FrameScrollView) protected mScrollViewFrame: FrameScrollView; @property(FrameLayout) protected mMyRewardItems: FrameLayout; private _selectedBoss: number = -1; private _currTopRewardRank: TrialRankData[] = []; private _curTrialcfg: TrialConfig = null; private _myrewardidx: number = -1; private _leftSec: number = 0; onButtonClick(button:Button){ /**点击事件触发*/ switch (button) { case this.btn_get: if(this.mDataMgr.Trial.getReward(this._selectedBoss)){ this.refresh(); } break; default: ConsoleEx.Log(button); break; } } protected start(): void { this._selectedBoss = this.param; this.reflashScrollView(); this.refresh(); } protected CloseUI(btn?: Node): void { this.unscheduleAllCallbacks(); super.CloseUI(btn); } addEvent(): void { this.mScrollViewFrame.m_ItemRendererFuntion = this.ItemRenderer.bind(this); this.mMyRewardItems.m_ItemRendererFuntion = this.MyRewardItemRenderer.bind(this); } // 奖励配行榜信息 ItemRenderer(idx:number,tNode:Node){ const num = this._curTrialcfg.rewardnum[idx]; const ClassPoxy: rewardrankitem_Proxy = tNode.getComponent(rewardrankitem_Proxy); ClassPoxy.setInfo(idx, this._curTrialcfg.rewardtoken, num); } private reflashScrollView(){ this._curTrialcfg = this.mDataMgr.Trial.getTrialConfig(this._selectedBoss); this.mScrollViewFrame.m_ItemCount = this._curTrialcfg.rewardnum.length; } // 自己的奖励物品列表 MyRewardItemRenderer(idx:number,tNode:Node){ const num = this._curTrialcfg.rewardnum[this._myrewardidx]; const ClassPoxy: rewardItem_Proxy = tNode.getComponent(rewardItem_Proxy); ClassPoxy.setInfo(this._curTrialcfg.rewardtoken, num); CNodeUtils.addBtnComponent(tNode, this.ItemClick.bind(this), this); } private ItemClick() { const tData: IData = { id: this._curTrialcfg.rewardtoken, num: 0, type: GameTotalType.TOKEN } UIMgr.Ins.ShowUI(EUIForms.ShopInfoUI, { param: {tdata: tData} }); } private refresh(){ let myrank = 0; if(this.mDataMgr.Trial.canGetReWards(this._selectedBoss)){ CNodeUtils.setActive(this.btn_get, true); CNodeUtils.setActive(this.n_cd, false); myrank = this.mDataMgr.Trial.getMyReWardrank(this._selectedBoss); }else{ CNodeUtils.setActive(this.btn_get, false); CNodeUtils.setActive(this.n_cd, true); myrank = this.mDataMgr.Trial.getMyRTRank(this._selectedBoss); } if(myrank > 0){ this._leftSec = TimeUtils.GetRemainingTime(); CNodeUtils.setActive(this.lab_cd, true); CNodeUtils.switchText(this.lab_cd, TimeUtils.makeTimeLeftString(this._leftSec)); CNodeUtils.switchText(this.lab_cddesc, "后可领奖"); CNodeUtils.switchText(this.lab_myrank, myrank < 500? myrank : "未上榜"); this._myrewardidx = myrank - 1; if(myrank >= 4 && myrank <= 10){ this._myrewardidx = 3; }else if(myrank >= 11 && myrank <= 100){ this._myrewardidx = 4; }else{ this._myrewardidx = 5; } this.mMyRewardItems.m_ItemCount = 5; if(this.n_cd.active){ this.schedule(()=>{ if(--this._leftSec >= 0){ CNodeUtils.switchText(this.lab_cd, TimeUtils.makeTimeLeftString(this._leftSec)); }else{ this._leftSec = 0; CNodeUtils.setActive(this.btn_get, true); CNodeUtils.setActive(this.n_cd, false); this.unscheduleAllCallbacks(); } }, 1) } }else{ CNodeUtils.switchText(this.lab_myrank, "未参与"); CNodeUtils.setActive(this.lab_cd, false); CNodeUtils.switchText(this.lab_cddesc, "挑战后才可领奖"); this.mMyRewardItems.m_ItemCount = 0; } this.refreshTopRankInfo(); } private refreshTopRankInfo(){ this._currTopRewardRank = this.mDataMgr.Trial.getRewardRank(this._selectedBoss); for (let i = 0; i < this.topNodes.length; i++){ let item = this.topNodes[i]; const data = this._currTopRewardRank[i]; const name = item.getChildByName("name"); // const icon = item.getChildByName("icon"); const hurt = item.getChildByName("hurt"); if(!data.isPlayer){ const agent = Global.CsvMgr.Agent_csv[data.idx]; CNodeUtils.switchText(name, agent.name_cn); }else{ CNodeUtils.switchText(name, (MainConfig.UserInfo.nick_name && MainConfig.UserInfo.nick_name.length > 0)? MainConfig.UserInfo.nick_name : "自己"); } CNodeUtils.switchText(hurt, data.damage); } } }