/************************************************************************************ * FileName : DanMainCell.ts * Description : * Version : v1.0.0 * CreateTime : 2024-12-24 11:12:54 * Author : * Copyright (c) since 2024 * ============================================================== * Method Description: * * ============================================================== ************************************************************************************/ import { _decorator, Component, Node, Label, Sprite, SpriteFrame } from 'cc'; import {IDanCfg} from "../../../../tgx-games-config/interface/IDanCfg"; import {resLoader} from "db://assets/core_tgx/base/utils/ResLoader"; import {ModuleDef} from "db://assets/scripts/ModuleDef"; import {areanMgr} from "db://assets/module_arean/scripts/AreanManager"; import {CommonFun} from "db://assets/module_arean/scripts/CommonFun"; import {DanCell} from "db://assets/module_arean/ui_dan/DanCell"; import {UserMgr} from "db://assets/module_basic/scripts/UserMgr"; import {NetGameServer} from "db://assets/module_basic/scripts/NetGameServer"; const { ccclass, property } = _decorator; @ccclass('DanMainCell') export class DanMainCell extends Component { /** 主段位名称 */ @property(Label) danName : Label = null; /** 主段位图标 */ @property(Sprite) icon : Sprite = null; /** 解锁描述 */ @property(Label) lab_1 : Label = null; /** 解锁描述 */ @property(Label) lab_2 : Label = null; /** 解锁描述 */ @property(Label) lab_3 : Label = null; /** 主段位奖励图标 */ @property(Sprite) rewardIcon : Sprite = null; /** 主段位奖励数量 */ @property(Label) rewardCount : Label = null; /** 是否已领取 */ @property(Node) rewarded : Node = null; private _mainDanData : IDanCfg = null; private _childDanList : IDanCfg[] = null; private _fun : Function = null; public init(mainDanData : IDanCfg,childDanList : IDanCfg[],fun : Function) : void{ this._mainDanData = mainDanData; this._childDanList = childDanList; this._fun = fun; this._initMainData(); this._initChildDanList(); } private _initMainData() : void{ this.danName.string = this._mainDanData.mainDanName + "竞技场"; let res = CommonFun.getInstance().getIcon(this._mainDanData.mainreward[0][0]) let sp : SpriteFrame = resLoader.getSpriteFrame(res,ModuleDef.Arean); if(sp) this.rewardIcon.getComponent(Sprite).spriteFrame = sp; this.rewardCount.string = `${this._mainDanData.mainreward[0][1]}`; let sp2 : SpriteFrame = resLoader.getSpriteFrame("res/danIcon/dan_"+this._mainDanData.mainDan,ModuleDef.Arean); if(sp2) this.icon.getComponent(Sprite).spriteFrame = sp2; let serverDanData = UserMgr.inst.userInfo.danInfo; this.rewarded.active = serverDanData.rewards[this._mainDanData.mainDan] != null; } private _initChildDanList() : void{ let len = this._childDanList.length; let danCount = 5; let serverDanData = UserMgr.inst.userInfo.danInfo; let curDanInfo = CommonFun.getInstance().calDanData(UserMgr.inst.userInfo.danGrading); for(let i = 1;i <= danCount;i++){ let item = this.node.getChildByName("cell_"+i); let element = this._childDanList[i-1]; // console.log("element ====",element); item.active = element != null; if(element != null){ let data = element; let canReward : boolean = this._checkCanReward(data.id); item.getComponent(DanCell).init(curDanInfo,data,serverDanData.rewards,canReward,this._fun.bind(this)); } } } /** 是否可以领取 */ private _checkCanReward(danId : number) : boolean{ let localDanData = areanMgr.cfgMgr.DanData.getAllData(); let serverDanData = UserMgr.inst.userInfo.danInfo; let curDanInfo = CommonFun.getInstance().calDanData(UserMgr.inst.userInfo.danGrading); return localDanData[danId - 1].reward.length > 0 && !serverDanData.rewards.find((data)=> data.danId === danId) && curDanInfo.curDan >= danId && UserMgr.inst.userInfo.danGrading >= localDanData[danId - 1].allStar; } /** 主段位是否可以领取 */ private _checkMainDanCanReward(danId : number) : boolean{ let localDanData = areanMgr.cfgMgr.DanData.getAllData(); let serverDanData = UserMgr.inst.userInfo.mainDanInfo; let curDanInfo = CommonFun.getInstance().calDanData(UserMgr.inst.userInfo.danGrading); return localDanData[danId - 1].reward.length > 0 && !serverDanData.rewards.find((data)=> data.danId === danId) && curDanInfo.curDan >= danId && UserMgr.inst.userInfo.danGrading >= localDanData[danId - 1].allStar; } /** 主段位领取奖励 */ public async clickReward(): Promise { let canReward = this._checkMainDanCanReward(this._mainDanData.mainDan); console.log("主段位领取奖励", canReward,this._mainDanData.mainDan, UserMgr.inst.userInfo.mainDanInfo); if (canReward) { let ret = await NetGameServer.inst.conn.callApi("arean/dan/GetMainDanReward", {mainDanId: this._mainDanData.mainDan}); let rewardList = ret.res.rewardList; if (rewardList.code === 0) { UserMgr.inst.userInfo.mainDanInfo.rewards = rewardList.danInfo; CommonFun.getInstance().showCommonReward(rewardList.rewards); this.rewarded.active = true; } } } }