/************************************************************************************ * FileName : UISeason.ts * Description : * Version : v1.0.0 * CreateTime : 2024-12-30 17:02:47 * Author : * Copyright (c) 2024 * ============================================================== * Method Description: * * ============================================================== ************************************************************************************/ import {GameUILayers} from "db://assets/scripts/GameUILayers"; import {tgx_class} from "db://assets/core_tgx/base/ModuleContext"; import {ModuleDef} from "db://assets/scripts/ModuleDef"; import {tgxAudioMgr, tgxUIController, tgxUIMgr} from "db://assets/core_tgx/tgx"; import {Layout_UISeason} from "db://assets/module_arean/ui_season/Layout_UISeason"; import {EMusicDefine} from "db://assets/module_basic/scripts/MusicDefine"; import {UserMgr} from "db://assets/module_basic/scripts/UserMgr"; import {CommonFun} from "db://assets/module_arean/scripts/CommonFun"; import {areanMgr} from "db://assets/module_arean/scripts/AreanManager"; import {resLoader} from "db://assets/core_tgx/base/utils/ResLoader"; import {instantiate, SpriteFrame, Node, Prefab, v3, sp, Label } from "cc"; import {UIDan} from "db://assets/module_arean/ui_dan/UIDan"; import {NetGameServer} from "db://assets/module_basic/scripts/NetGameServer"; @tgx_class(ModuleDef.Arean) export class UISeason extends tgxUIController{ constructor() { super("ui_season/ui_season", GameUILayers.POPUP,Layout_UISeason) } protected async onCreated(params: any) { let layout: Layout_UISeason = this.layout as Layout_UISeason; console.log("当前的赛季信息 === ", UserMgr.inst.userInfo.seasonInfo); // 关闭界面 this.onButtonEvent(layout.closeBtn, () => { tgxAudioMgr.inst.playCommonBtn(EMusicDefine.EFFECT_CLOSE); this.close(); }) // 段位界面 this.onButtonEvent(layout.danBtn, () => { tgxAudioMgr.inst.playCommonBtn(EMusicDefine.EFFECT_OPEN); tgxUIMgr.inst.showUI(UIDan); }) await this._initTotalData(); this._initList(); } /** 顶部数据 */ private async _initTotalData(): Promise { let layout: Layout_UISeason = this.layout as Layout_UISeason; let seasonData = await NetGameServer.inst.callApi("arean/season/AreanSeasonInfo", {}); console.log("获取到的赛季信息 == ",seasonData); UserMgr.inst.userInfo.seasonInfo = seasonData.res.data; let seasonInfo = UserMgr.inst.userInfo.seasonInfo; layout.seasonName.string = `S${seasonInfo.season} 赛季主题`; layout.totalCount.string = `${seasonInfo.totalGames}`; layout.winCount.string = `${seasonInfo.wins}`; layout.topFourCount.string = `${seasonInfo.topFour}`; let curDanInfo = CommonFun.getInstance().calDanData(UserMgr.inst.userInfo.danGrading); let data = areanMgr.cfgMgr.DanData.getData(curDanInfo.curDan); layout.danName.string = `${data.danName}`; let sp: SpriteFrame = resLoader.getSpriteFrame('res/danIcon/dan_' + data.mainDan, ModuleDef.Arean); if (sp) layout.danIcon.spriteFrame = sp; } /** 列表数据 */ private _initList() : void{ let layout : Layout_UISeason = this.layout as Layout_UISeason; let heroList = UserMgr.inst.userInfo.seasonInfo.heroStats; let len = heroList.length; for(let i = 0; i < len; i++){ let item = instantiate(layout.cell); item.active = true; this._initCell(item,heroList[i]); item.parent = layout.content; } } private _initCell(node : Node,data) : void{ let localHeroData = areanMgr.cfgMgr.HeroDatas.getAllDataMap(); let curHeroData = localHeroData.get(data.heroId); if(curHeroData){ let skin = curHeroData.skinRes[0]; let skinId = areanMgr.cfgMgr.SkinData.getData(skin).icon resLoader.load(ModuleDef.Arean,`res/Prefebs/heroSpine/${skinId}`,(err: Error, prefab: Prefab) => { if(err){ console.error(err); return; }else { let spineNode = instantiate(prefab); node.getChildByName("icon").destroyAllChildren(); node.getChildByName("icon").addChild(spineNode); spineNode.scale = v3(0.8,0.8,1); spineNode.position = v3(0,-60,0); // spineNode.getComponent(sp.Skeleton).animation = null; } }) node.getChildByName("heroName").getComponent(Label).string = curHeroData.name; }else { console.error(`${UserMgr.inst.userInfo.heroId}英雄数据不存在`); } let dataNode = node.getChildByName("dataNode"); dataNode.getChildByName("lab_1").getComponent(Label).string = data.gamesPlayed + "场"; let value = Math.trunc(this.divideAndFormat(data.wins,data.gamesPlayed) * 100); dataNode.getChildByName("lab_2").getComponent(Label).string = "夺冠率:" + value + "%"; value = Math.trunc(this.divideAndFormat(data.topFour,data.gamesPlayed) * 100); dataNode.getChildByName("lab_3").getComponent(Label).string = "前四率:" + value + "%"; } private divideAndFormat(dividend: number, divisor: number): number { const result = dividend / divisor; if (result % 1 !== 0) { return parseFloat((Math.round(result * 100) / 100).toFixed(2)); } else { return Math.trunc(result); } } }