squidGame/tgx-games-client/assets/module_arean/ui_dan/DanMainCell.ts

125 lines
5.5 KiB
TypeScript

/************************************************************************************
* 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<void> {
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;
}
}
}
}