//#region 文件引入 import { _decorator, Button, Component, Label, Node, sp, Sprite,Animation, RichText, Toggle, NodeEventType } from "cc"; import BaseUIForm from "../../Mgr_UI/BaseUIForm"; import { PropType } from "../../const/GameEnum"; import FrameScrollView from "../../CComEx/FrameScrollView"; import GDUtils from "../../ExCUtils/GDUtils"; import TimeUtils from "../../ExUtils/TimeUtils"; import { Global } from "../../Global"; import treasureItem_Proxy from "./treasureItem_Proxy"; import { IProp } from "../../Mgr_CSV/CsvEnum"; import UIMgr from "../../Mgr_UI/UIMgr"; import { EUIForms } from "../../const/UIFormCnf"; import MesMgr from "../../MesEvent/MesMgr"; import { EGlobalEvent } from "../../MesEvent/EGlobalEvent"; //#endregion 文件引入 const {ccclass, property,menu} = _decorator; @ccclass("TreasureUI_Proxy") export default class TreasureUI_Proxy extends BaseUIForm{ //#region 节点自动生成 @property(Node) n_shop: Node = null; @property(Label) lab_desc: Label = null; @property(Label) lab_num: Label = null; @property(Button) btn_Details: Button = null; @property(Node) n_record: Node = null; @property(Label) lab_time: Label = null; @property(Label) lab_time_title: Label = null; @property(Node) n_time_star: Node = null; @property(Label) lab_fight: Label = null; @property(Label) lab_fight_title: Label = null; @property(Node) n_fight_star: Node = null; @property(Button) btn_Restart: Button = null; //#endregion 节点自动生成 @property(FrameScrollView) protected mScrollViewFrame: FrameScrollView; private mPageName:string = ''; // 首次免费 private isFirstFree:boolean = true; onButtonClick(button:Button){ /**点击事件触发*/ switch (button) { case this.btn_Restart: UIMgr.Ins.ShowUI(EUIForms.PopRestartUI); this.CloseUI(); break; case this.btn_Details: UIMgr.Ins.ShowUI(EUIForms.TreasureDetailUI); break; default: ConsoleEx.Log(button); break; } } addEvent(): void { MesMgr.on(EGlobalEvent.TREAS_BUY, this.refreshShop, this) this.mScrollViewFrame.m_ItemRendererFuntion = this.ItemRenderer.bind(this) } protected start(): void { CNodeUtils.setActive(this.btn_Restart, this.mDataMgr.Scene.level.passed); this.refreshShop(); this.initPassRecord(); this.mPageName = "shop"; this.switchPage(); } onToggle_ToggleGroup(tToggle:Toggle){ this.mPageName = tToggle.node.name; this.switchPage(); } switchPage() { switch (this.mPageName) { case "shop": CNodeUtils.setActive(this.n_shop, true); CNodeUtils.setActive(this.n_record, false); // this.reflashScrollView(); break; case "record": CNodeUtils.setActive(this.n_shop, false); CNodeUtils.setActive(this.n_record, true); break; } } //#region 珍宝列表 refreshShop(){ CNodeUtils.switchText(this.lab_num, this.mDataMgr.Token.getTokenCount(PropType.eAdopt)); this.isFirstFree = this.mDataMgr.Pass.passed_times == 1 && this.mDataMgr.Pass.free_times > 0; CNodeUtils.setActive(this.lab_desc, this.isFirstFree); this.reflashScrollView(); } ItemRenderer(idx:number,tNode:Node){ const treascfg = Global.CsvMgr.Props_array_csv[idx]; const ClassPoxy: treasureItem_Proxy = tNode.getComponent(treasureItem_Proxy); ClassPoxy.setData(treascfg,this.isFirstFree); CNodeUtils.addBtnComponent(tNode, this.ItemClick.bind(this, treascfg), this); } private ItemClick(gData: IProp) { UIMgr.Ins.ShowUI(EUIForms.PopBuyTreaUI, { param: {cfg:gData, isfree:this.isFirstFree} }); } private reflashScrollView(){ this.mScrollViewFrame.m_ItemCount = Global.CsvMgr.Props_array_csv.length; } //#endregion //#region 通关记录 private initPassRecord(){ const passtime = this.mDataMgr.Pass.record_times; CNodeUtils.switchText(this.lab_time,TimeUtils.makeTimeLeftString(passtime, "分")); CNodeUtils.switchText(this.lab_fight, this.mDataMgr.Pass.record_fight); // 时间评级 const rating = this.mDataMgr.Pass.timeRatingConfig; // 计算时间星星数量 const timeStars = rating.starFormula(passtime); this.createStars(this.n_time_star, timeStars, rating.starLevel); this.lab_time_title.color = this.lab_time_title.color.fromHEX(GDUtils.GetQualityColorHEX(rating.starLevel)); CNodeUtils.switchText(this.lab_time_title, rating.title); // 战力评级 const fightingRating = this.mDataMgr.Pass.fightingRatingConfig; // 计算战力星星数量 const fightStars = fightingRating.starFormula(this.mDataMgr.Role.fighting); this.createStars(this.n_fight_star, fightStars, fightingRating.starLevel); this.lab_fight_title.color = this.lab_fight_title.color.fromHEX(GDUtils.GetQualityColorHEX(fightingRating.starLevel)); CNodeUtils.switchText(this.lab_fight_title, fightingRating.title); } private createStars(tNode: Node, starCount: number, starLevel: number) { // 限制星星数量不超过5个 starCount = Math.min(starCount, 5); for (let i = 0; i < tNode.children.length; i++) { let star = tNode.children[i]; CNodeUtils.setActive(star, i < starCount); if(i < starCount){ let starIcon:Sprite = star.getComponent(Sprite); starIcon.color = GDUtils.GetQualityColor(starLevel); } } } //#endregion }