125 lines
5.5 KiB
TypeScript
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;
|
|
}
|
|
}
|
|
}
|
|
} |