627 lines
24 KiB
TypeScript
627 lines
24 KiB
TypeScript
import { _decorator, Button, Color, Component, director, instantiate, Label, Node, Animation, Prefab, ProgressBar, sp, Sprite, SpriteFrame, Toggle, Vec3, RichText } from "cc";
|
|
import { areanMgr } from "../../AreanManager";
|
|
import { resLoader } from "db://assets/core_tgx/base/utils/ResLoader";
|
|
import { ModuleDef } from "db://assets/scripts/ModuleDef";
|
|
import { SectType as SectType, heroAttributeType, IBasicAttribute, IAreanPlayer } from "db://assets/module_basic/shared/protocols/public/arean/AreanTypeDef";
|
|
import { CommonFun } from "db://assets/module_arean/scripts/CommonFun";
|
|
import { iAttribute } from "../../../../module_basic/shared/protocols/public/arean/MsgAreanBattleReportPush";
|
|
import { AreanEvent, AreanNetMgr } from "../../AreanNetMgr";
|
|
import { MsgAreanAttrUpdatePush } from "../../../../module_basic/shared/protocols/public/arean/MsgAreanAttrUpdatePush";
|
|
import { commonFunction } from "../../../../core_tgx/base/utils/commonFunction";
|
|
|
|
const { ccclass, property } = _decorator;
|
|
|
|
@ccclass('DetailView')
|
|
export class DetailView extends Component {
|
|
|
|
@property(Node)
|
|
content_1_1: Node;
|
|
|
|
@property(Node)
|
|
heroBg: Node;
|
|
|
|
@property(Node)
|
|
content_1_2: Node;
|
|
|
|
@property(Node)
|
|
content_1_3: Node;
|
|
|
|
|
|
@property(Label)
|
|
attr_attack: Label;
|
|
@property(Label)
|
|
attr_attackSpeed: Label;
|
|
@property(Label)
|
|
attr_crit: Label;
|
|
@property(Label)
|
|
attr_spAttack: Label;
|
|
@property(Label)
|
|
attr_skillSpeed: Label;
|
|
@property(Label)
|
|
attr_buffAdd: Label;
|
|
@property(Label)
|
|
attr_defend: Label;
|
|
@property(Label)
|
|
attr_dodge: Label;
|
|
@property(Label)
|
|
attr_anger: Label;
|
|
@property(Label)
|
|
attr_spDefend: Label;
|
|
@property(Label)
|
|
attr_reflect: Label;
|
|
@property(Label)
|
|
attr_healAdd: Label;
|
|
|
|
|
|
|
|
@property(Node)
|
|
hpBar: Node;
|
|
@property(Node)
|
|
mpBar: Node;
|
|
@property(Node)
|
|
shieldBar: Node;
|
|
|
|
@property(Node)
|
|
spineNode: Node;
|
|
|
|
|
|
@property(Prefab)
|
|
attrTxt: Prefab;
|
|
|
|
@property(Sprite)
|
|
mainSkillIcon: Sprite;
|
|
@property(Label)
|
|
mainSkillName: Label;
|
|
@property(RichText)
|
|
mainSkillDesc: RichText;
|
|
|
|
@property(Sprite)
|
|
jobSkillIcon: Sprite;
|
|
@property(Label)
|
|
jobSkillName: Label;
|
|
@property(RichText)
|
|
jobSkillDesc: RichText;
|
|
|
|
|
|
@property(Button)
|
|
btnCardList: Button;
|
|
|
|
@property(Node)
|
|
equipList: Node;
|
|
@property(Node)
|
|
treasureList: Node;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
curData: IBasicAttribute = null;
|
|
|
|
private _curSect: SectType = SectType.体质;
|
|
|
|
start() {
|
|
|
|
|
|
director.on(AreanEvent.AttrUpdate, this.updataAttrPush, this);
|
|
|
|
|
|
|
|
try {
|
|
let node = this.node.getChildByName("ToggleGroup");
|
|
let toggle: Toggle = node.getChildByName(`Toggle${3}`).getComponent(Toggle);
|
|
toggle.node.on('toggle', (target: Toggle) => {
|
|
this.updateSect();
|
|
}, this);
|
|
this._initSectBtn();
|
|
} catch (error) {
|
|
console.warn("An error occurred:", error);
|
|
}
|
|
|
|
}
|
|
|
|
|
|
public updateAttrForReport(data: iAttribute): void {
|
|
|
|
let attrId: heroAttributeType = data.type;
|
|
let value: number = data.value;
|
|
|
|
switch (attrId) {
|
|
case heroAttributeType.shields: {
|
|
this.curData.shields = value;
|
|
this.shieldBar.getComponent(ProgressBar).progress = value;
|
|
this.shieldBar.getChildByName("value").getComponent(Label).string = `${value}`;
|
|
break;
|
|
}
|
|
|
|
case heroAttributeType.hp: {
|
|
this.curData.hp = value;
|
|
this.hpBar.getComponent(ProgressBar).progress = value / this.curData.maxHp;
|
|
this.hpBar.getChildByName("value").getComponent(Label).string = `${value}/${this.curData.maxHp}`;
|
|
break;
|
|
}
|
|
|
|
case heroAttributeType.mp: {
|
|
this.curData.mp = value;
|
|
this.mpBar.getComponent(ProgressBar).progress = value / this.curData.maxMp;
|
|
this.mpBar.getChildByName("value").getComponent(Label).string = `${value}/${this.curData.maxMp}`;
|
|
break;
|
|
}
|
|
|
|
case heroAttributeType.maxHp: {
|
|
this.curData.maxHp = value;
|
|
this.hpBar.getComponent(ProgressBar).progress = this.curData.hp / value;
|
|
this.hpBar.getChildByName("value").getComponent(Label).string = `${this.curData.hp}/${value}`;
|
|
break;
|
|
}
|
|
|
|
case heroAttributeType.maxMp: {
|
|
this.curData.maxMp = value;
|
|
this.mpBar.getComponent(ProgressBar).progress = this.curData.mp / value;
|
|
this.mpBar.getChildByName("value").getComponent(Label).string = `${this.curData.mp}/${value}`;
|
|
break;
|
|
|
|
}
|
|
|
|
case heroAttributeType.attack: {
|
|
this.curData.attack = value;
|
|
this.attr_attack.string = value + "";
|
|
break;
|
|
}
|
|
|
|
case heroAttributeType.spAttack: {
|
|
this.curData.spAttack = value;
|
|
this.attr_spAttack.string = value + "";
|
|
break;
|
|
|
|
}
|
|
|
|
case heroAttributeType.skillSpeed: {
|
|
this.curData.skillSpeed = value;
|
|
this.attr_skillSpeed.string = value + "";
|
|
break;
|
|
}
|
|
|
|
case heroAttributeType.buffAdd: {
|
|
this.curData.buffAdd = value;
|
|
this.attr_buffAdd.string = value + "";
|
|
break;
|
|
}
|
|
|
|
case heroAttributeType.attackSpeed: {
|
|
this.curData.attackSpeed = value;
|
|
this.attr_attackSpeed.string = value + "";
|
|
break;
|
|
}
|
|
|
|
case heroAttributeType.dodge: {
|
|
this.curData.dodge = value;
|
|
this.attr_dodge.string = value + "";
|
|
break;
|
|
}
|
|
|
|
case heroAttributeType.anger: {
|
|
this.curData.anger = value;
|
|
this.attr_anger.string = value + "";
|
|
break;
|
|
}
|
|
|
|
case heroAttributeType.reflect: {
|
|
this.curData.reflect = value;
|
|
this.attr_reflect.string = value + "";
|
|
break;
|
|
}
|
|
|
|
case heroAttributeType.critical: {
|
|
this.curData.critical = value;
|
|
this.attr_crit.string = value + "";
|
|
break;
|
|
}
|
|
|
|
|
|
case heroAttributeType.defend: {
|
|
this.curData.defend = value;
|
|
this.attr_defend.string = value + "";
|
|
break;
|
|
}
|
|
|
|
case heroAttributeType.spDefend: {
|
|
this.curData.spDefend = value;
|
|
this.attr_spDefend.string = value + "";
|
|
break;
|
|
|
|
}
|
|
|
|
case heroAttributeType.healAdd: {
|
|
this.curData.healAdd = value;
|
|
this.attr_healAdd.string = value + "";
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
default:
|
|
break;
|
|
|
|
}
|
|
this.updateAddAttr();
|
|
}
|
|
|
|
updataAttrPush(attr: IBasicAttribute) {
|
|
|
|
this.curData = AreanNetMgr.inst.playerMap[areanMgr.BattleView.getLocalPlayerData().playerId].attr;
|
|
this.updateAttr(attr);
|
|
this.updateAddAttr();
|
|
|
|
}
|
|
|
|
|
|
init(id: number) {
|
|
console.log("init id", id);
|
|
let heroData = areanMgr.cfgMgr.HeroDatas.getData(id);
|
|
let skin = areanMgr.cfgMgr.SkinData.getData(heroData.skinRes[0]).icon;
|
|
let imagePath = 'res/Spine/' + skin;
|
|
let spAsset: sp.SkeletonData = resLoader.get(imagePath, sp.SkeletonData, ModuleDef.Arean);
|
|
let ske = this.spineNode.getComponent(sp.Skeleton);
|
|
ske.skeletonData = spAsset;
|
|
//ske.setAnimation(0, "idle", true);
|
|
|
|
let skillID = heroData.mainSkill[0];
|
|
let skillData = areanMgr.cfgMgr.SkillPerformanceDatas.getData(skillID);
|
|
this.mainSkillDesc.string = CommonFun.getInstance().HighlightNumbers(skillData.effectDescribe);
|
|
this.mainSkillName.string = skillData.skillname;
|
|
this.mainSkillIcon.spriteFrame = resLoader.getSpriteFrame("res/Image/icon/" + skillData.icon, ModuleDef.Arean);
|
|
|
|
this.updataAttrPush(areanMgr.BattleView.getLocalPlayerData().attr);
|
|
}
|
|
|
|
|
|
|
|
updateCardNum() {
|
|
let cardData = AreanNetMgr.inst.playerMap[areanMgr.BattleView.getLocalPlayerId()].cardList
|
|
for (let i = 1; i <= 3; i++) {
|
|
let countNode = this.btnCardList.node.getChildByPath("cardNode_" + i + "/count");
|
|
countNode.getComponent(Label).string = CommonFun.getInstance().CalCardCount(i, cardData).toString();
|
|
|
|
}
|
|
}
|
|
|
|
|
|
// 属性面板
|
|
async updateAttr(attr: IBasicAttribute) {
|
|
|
|
if (attr) {
|
|
let attrData = AreanNetMgr.inst.playerMap[areanMgr.BattleView.getLocalPlayerData().playerId].attr;
|
|
|
|
// // 创建一个新的字典来存储差值
|
|
// let data: { [key: string]: number } = {};
|
|
|
|
// // 遍历data字典
|
|
// for (let key in attrData) {
|
|
// if (attrData.hasOwnProperty(key) && changeAdd.hasOwnProperty(key)) {
|
|
// // 计算差值并存储到新的字典中
|
|
// data[key] = attrData[key] - changeAdd[key];
|
|
// }
|
|
// }
|
|
|
|
this.attr_attack.string = attrData.attack + "";
|
|
this.attr_attackSpeed.string = attrData.attackSpeed + "";
|
|
this.attr_crit.string = attrData.critical + "";
|
|
this.attr_spAttack.string = attrData.spAttack + "";
|
|
this.attr_skillSpeed.string = attrData.skillSpeed + "";
|
|
this.attr_buffAdd.string = attrData.buffAdd + "";
|
|
this.attr_defend.string = attrData.defend + "";
|
|
this.attr_dodge.string = attrData.dodge + "";
|
|
this.attr_anger.string = attrData.anger + "";
|
|
this.attr_spDefend.string = attrData.spDefend + "";
|
|
this.attr_reflect.string = attrData.reflect + "";
|
|
this.attr_healAdd.string = attrData.healAdd + "";
|
|
|
|
this.shieldBar.getComponent(ProgressBar).progress = attrData.shields;
|
|
this.hpBar.getComponent(ProgressBar).progress = attrData.hp / attrData.maxHp;
|
|
this.mpBar.getComponent(ProgressBar).progress = attrData.mp / attrData.maxMp;
|
|
this.shieldBar.getChildByName("value").getComponent(Label).string = `${attrData.shields}`;
|
|
this.hpBar.getChildByName("value").getComponent(Label).string = `${attrData.hp}/${attrData.maxHp}`;
|
|
this.mpBar.getChildByName("value").getComponent(Label).string = `${attrData.mp}/${attrData.maxMp}`;
|
|
|
|
console.log(attr);
|
|
for (let a in attr) {
|
|
|
|
if (attr[a] != 0) {
|
|
this.AddBuff(heroAttributeType[a], attr[a], this.spineNode);
|
|
this.AddBuff(heroAttributeType[a], attr[a], areanMgr.BattleView.headIcon);
|
|
await new Promise(resolve => setTimeout(resolve, 200));
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
// 属性面板
|
|
updateAddAttr() {
|
|
|
|
|
|
let data = this.curData;
|
|
this.attr_attack.node.parent.getChildByName("valueAdd").getComponent(Label).string = "+" + data.attack;
|
|
this.attr_attack.node.parent.getChildByName("valueAdd").active = false;
|
|
this.attr_attackSpeed.node.parent.getChildByName("valueAdd").getComponent(Label).string = "(" + data.attackSpeed + "%)";
|
|
this.attr_attackSpeed.node.parent.getChildByName("valueAdd").active = data.attackSpeed > 0;
|
|
this.attr_crit.node.parent.getChildByName("valueAdd").getComponent(Label).string = "(" + data.critical + "%)";
|
|
this.attr_crit.node.parent.getChildByName("valueAdd").active = data.critical > 0;
|
|
this.attr_spAttack.node.parent.getChildByName("valueAdd").getComponent(Label).string = "+" + data.spAttack;
|
|
this.attr_spAttack.node.parent.getChildByName("valueAdd").active = false;
|
|
this.attr_skillSpeed.node.parent.getChildByName("valueAdd").getComponent(Label).string = "(" + data.skillSpeed + "%)";
|
|
this.attr_skillSpeed.node.parent.getChildByName("valueAdd").active = data.skillSpeed > 0;
|
|
this.attr_buffAdd.node.parent.getChildByName("valueAdd").getComponent(Label).string = "(" + data.buffAdd + "%)";
|
|
this.attr_buffAdd.node.parent.getChildByName("valueAdd").active = data.buffAdd > 0;
|
|
this.attr_defend.node.parent.getChildByName("valueAdd").getComponent(Label).string = "(" + data.defend + "%)";
|
|
this.attr_defend.node.parent.getChildByName("valueAdd").active = false;
|
|
this.attr_dodge.node.parent.getChildByName("valueAdd").getComponent(Label).string = "(" + data.dodge + "%)";
|
|
this.attr_dodge.node.parent.getChildByName("valueAdd").active = data.dodge > 0;
|
|
this.attr_anger.node.parent.getChildByName("valueAdd").getComponent(Label).string = "+" + data.anger;
|
|
this.attr_anger.node.parent.getChildByName("valueAdd").active = false;
|
|
this.attr_spDefend.node.parent.getChildByName("valueAdd").getComponent(Label).string = "(" + data.spDefend + "%)";
|
|
this.attr_spDefend.node.parent.getChildByName("valueAdd").active = false;
|
|
this.attr_reflect.node.parent.getChildByName("valueAdd").getComponent(Label).string = "(" + data.reflect * 3 + "%)";
|
|
this.attr_reflect.node.parent.getChildByName("valueAdd").active = data.reflect > 0;
|
|
this.attr_healAdd.node.parent.getChildByName("valueAdd").getComponent(Label).string = "+" + data.healAdd;
|
|
this.attr_healAdd.node.parent.getChildByName("valueAdd").active = false;
|
|
|
|
|
|
}
|
|
|
|
|
|
AddBuff(attr: heroAttributeType, value: number, spine: Node) {
|
|
|
|
if (this.attrTxt) {
|
|
let damageNode = instantiate(this.attrTxt);
|
|
spine.addChild(damageNode);
|
|
damageNode.setPosition(new Vec3(0, 40, 0));
|
|
damageNode.setScale(spine.getScale());
|
|
let duffData = areanMgr.cfgMgr.BuffDatas.getData(attr);
|
|
let text = duffData.name;
|
|
|
|
if (value > 0) {
|
|
damageNode.getComponent(Animation)?.play("buff");
|
|
damageNode.getChildByName("buff")!.getComponent(Label)!.string = text + "+" + value;
|
|
|
|
}
|
|
else if (value < 0) {
|
|
damageNode.getComponent(Animation)?.play("debuff");
|
|
damageNode.getChildByName("debuff")!.getComponent(Label)!.string = text + "-" + Math.abs(value);
|
|
|
|
}
|
|
setTimeout(() => {
|
|
|
|
damageNode.removeFromParent();
|
|
}
|
|
, 2000);
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/***************************************************************** 技能部分 ***********************************************/
|
|
// 更新技能内容
|
|
updateJobDetail(careerId: number): void {
|
|
|
|
|
|
let careerData = areanMgr.cfgMgr.JobDatas.getData(careerId);
|
|
if (careerData)
|
|
this.jobSkillName.string = careerData.occupationName;
|
|
this.jobSkillDesc.string = careerData.occupationDescribe;
|
|
this.jobSkillIcon.spriteFrame = resLoader.getSpriteFrame(`res/Image/Job/${careerData.occupationIcon}`, ModuleDef.Arean)
|
|
|
|
}
|
|
|
|
/*********************** 羁绊*************************************/
|
|
private _initSectBtn(): void {
|
|
for (let i: number = 1; i <= 12; i++) {
|
|
let toggle: Toggle = this.content_1_3.getChildByPath("ScrollView/ToggleGroup").getChildByName(`Toggle${i}`).getComponent(Toggle);
|
|
let attr: { tag: SectType } = {
|
|
tag: i
|
|
}
|
|
toggle.node.attr(attr);
|
|
toggle.node.on('toggle', (target: Toggle) => {
|
|
//@ts-ignore
|
|
this._curSect = target.node.tag;
|
|
this.updateSect();
|
|
}, this);
|
|
}
|
|
}
|
|
|
|
public updateSect(): void {
|
|
const playerId = areanMgr.BattleView.getLocalPlayerId();
|
|
const sectList = AreanNetMgr.inst.playerMap[playerId].sect;
|
|
const count = CommonFun.getInstance().getSectCount(this._curSect, sectList);
|
|
const curData = CommonFun.getInstance().getSectData(this._curSect);
|
|
const node = this.content_1_3.getChildByName("descLayout");
|
|
const targetCounts = [5, 10, 20]; // 定义目标数量常量
|
|
|
|
for (let i = 0; i < curData.length; i++) {
|
|
const _node = node.getChildByName(`desc-00${i + 1}`);
|
|
const lab_1 = _node.getChildByName("Label-003").getComponent(Label);
|
|
const lab_2 = _node.getChildByName("Label-001").getComponent(Label);
|
|
lab_1.string = `${count}/${targetCounts[i]}`;
|
|
lab_2.string = curData[i].desc;
|
|
}
|
|
|
|
// 设置未达到目标数量的文本颜色为灰色
|
|
|
|
for (let i = 1; i <= 3; i++) {
|
|
const _node = node.getChildByName(`desc-00${i}`);
|
|
const lab_1 = _node.getChildByName("Label-003").getComponent(Label);
|
|
const lab_2 = _node.getChildByName("Label-001").getComponent(Label);
|
|
if (count < targetCounts[i - 1]) {
|
|
lab_1.color = new Color(150, 150, 150, 255);
|
|
lab_2.color = new Color(150, 150, 150, 255);
|
|
} else {
|
|
lab_1.color = new Color(255, 255, 255, 255);
|
|
lab_2.color = new Color(255, 255, 255, 255);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
updateEquipAndTreasure(data: IAreanPlayer) {
|
|
// 装备
|
|
let equipNode = this.equipList;
|
|
let equipData = data.equipList;
|
|
for (let i = 0; i < 4; i++) {
|
|
let node = equipNode.getChildByName(`item_${i + 1}`);
|
|
let equipId = equipData[i];
|
|
if (equipId) {
|
|
let equipLocalData = areanMgr.cfgMgr.EquipmentData.getData(equipId);
|
|
let sp: SpriteFrame = resLoader.getSpriteFrame(`res/Image/Equip/${equipLocalData.icon}`, ModuleDef.Arean);
|
|
if (sp) node.getComponent(Sprite).spriteFrame = sp;
|
|
let count = node.getChildByName("count");
|
|
count.getComponent(Label).string = "";
|
|
}
|
|
}
|
|
|
|
// 圣物
|
|
let relicNode = this.treasureList;
|
|
let relicData = data.treasureList;
|
|
for (let i = 0; i < 2; i++) {
|
|
let node = relicNode.getChildByName(`item_${i + 1}`);
|
|
let d = relicData[i];
|
|
if (d) {
|
|
let localData = areanMgr.cfgMgr.TreasureDatas.getData(d.id);
|
|
let sp: SpriteFrame = resLoader.getSpriteFrame(`res/Image/Treasure/${localData.icon}`, ModuleDef.Arean);
|
|
if (sp) node.getComponent(Sprite).spriteFrame = sp;
|
|
let count = node.getChildByName("count");
|
|
count.getComponent(Label).string = "";
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
|
|
showCardList() {
|
|
const path = 'res/Prefebs/cardList';
|
|
let sp: Prefab = resLoader.get(path, Prefab, ModuleDef.Arean);
|
|
let node = instantiate(sp);
|
|
areanMgr.BattleView.node.addChild(node);
|
|
|
|
let list = node.getChildByPath("ScrollView/view/content");
|
|
let item = list.children[0];
|
|
let cardList = AreanNetMgr.inst.playerMap[areanMgr.BattleView.getLocalPlayerId()].cardList;
|
|
|
|
const sortedCardList = cardList
|
|
.filter(card => {
|
|
const data = areanMgr.cfgMgr.CardDatas.getData(card.id);
|
|
return data.show !== 1;
|
|
})
|
|
.sort((a, b) => {
|
|
let dataA = areanMgr.cfgMgr.CardDatas.getData(a.id);
|
|
let dataB = areanMgr.cfgMgr.CardDatas.getData(b.id);
|
|
return dataB.cardRare - dataA.cardRare;
|
|
});
|
|
|
|
let cardMap = {}; // 用于跟踪已经实例化的卡牌
|
|
|
|
for (let i = 0; i < sortedCardList.length; i++) {
|
|
|
|
let cardId = sortedCardList[i];
|
|
let data = areanMgr.cfgMgr.CardDatas.getData(cardId.id);
|
|
if (data) {
|
|
|
|
if (cardMap[cardId.id]) {
|
|
// 如果已经实例化了该卡牌,更新 count 组件
|
|
let countLabel = cardMap[cardId.id].getChildByName("count").getComponent(Label);
|
|
countLabel.string = parseInt(countLabel.string) + 1;
|
|
} else {
|
|
|
|
// 如果没有实例化该卡牌,实例化一个新的卡牌
|
|
let cardItem = instantiate(item);
|
|
list.addChild(cardItem);
|
|
|
|
|
|
let sp: SpriteFrame = resLoader.getSpriteFrame("res/Image/cardRare/rare" + data.cardRare, ModuleDef.Arean);
|
|
if (sp) cardItem.getChildByName("rareBg").getComponent(Sprite).spriteFrame = sp;
|
|
sp = resLoader.getSpriteFrame("res/Image/skill/" + data.icon, ModuleDef.Arean);
|
|
if (sp) cardItem.getChildByPath("cardBg/mask/cardIcon").getComponent(Sprite).spriteFrame = sp;
|
|
cardItem.getChildByName("name").getComponent(Label).string = data.mainName;
|
|
cardItem.getChildByName("cardDesc").getComponent(RichText).string = CommonFun.getInstance().HighlightNumbers(data.skillDescribe);
|
|
|
|
|
|
|
|
cardItem.getChildByPath("types/type2").active = data.Sect.length == 2;
|
|
for (let i = 0; i < data.Sect.length; i++) {
|
|
let sp: SpriteFrame = resLoader.getSpriteFrame("res/Image/sect/sect" + data.Sect[i], ModuleDef.Arean);
|
|
if (sp) cardItem.getChildByPath("types").children[i].getChildByName("icon").getComponent(Sprite).spriteFrame = sp;
|
|
}
|
|
|
|
cardMap[cardId.id] = cardItem; // 将新实例化的卡牌添加到 cardMap 中
|
|
}
|
|
}
|
|
|
|
}
|
|
list.removeChild(item);
|
|
|
|
|
|
node.getChildByName("btnClose").on("click", () => {
|
|
node.removeFromParent();
|
|
})
|
|
}
|
|
|
|
showEquipAndTreasureList() {
|
|
const path = 'res/Prefebs/equipAndTreasureList';
|
|
let sp: Prefab = resLoader.get(path, Prefab, ModuleDef.Arean);
|
|
let node = instantiate(sp);
|
|
areanMgr.BattleView.node.addChild(node);
|
|
|
|
let list = node.getChildByPath("ScrollView/view/content");
|
|
let item = list.children[0];
|
|
let equipList = AreanNetMgr.inst.playerMap[areanMgr.BattleView.getLocalPlayerId()].equipList;
|
|
|
|
for (let i = 0; i < equipList.length; i++) {
|
|
|
|
let equipmentId = equipList[i];
|
|
let data = areanMgr.cfgMgr.EquipmentData.getData(equipmentId);
|
|
if (data) {
|
|
let equipItem = instantiate(item);
|
|
list.addChild(equipItem);
|
|
let sp: SpriteFrame = resLoader.getSpriteFrame("res/Image/Equip/" + data.icon, ModuleDef.Arean);
|
|
if (sp) equipItem.getChildByName("cardIcon").getComponent(Sprite).spriteFrame = sp;
|
|
equipItem.getChildByName("name").getComponent(Label).string = data.name;
|
|
equipItem.getChildByName("cardDesc").getComponent(RichText).string = CommonFun.getInstance().HighlightNumbers(data.describe);
|
|
}
|
|
}
|
|
|
|
let treasureList = AreanNetMgr.inst.playerMap[areanMgr.BattleView.getLocalPlayerId()].treasureList;
|
|
for (let i = 0; i < treasureList.length; i++) {
|
|
|
|
let d = treasureList[i];
|
|
let data = areanMgr.cfgMgr.TreasureDatas.getData(d.id);
|
|
if (data) {
|
|
let treasureItem = instantiate(item);
|
|
list.addChild(treasureItem);
|
|
let sp: SpriteFrame = resLoader.getSpriteFrame("res/Image/Treasure/" + data.icon, ModuleDef.Arean);
|
|
if (sp) treasureItem.getChildByName("cardIcon").getComponent(Sprite).spriteFrame = sp;
|
|
treasureItem.getChildByName("name").getComponent(Label).string = data.name;
|
|
treasureItem.getChildByName("cardDesc").getComponent(RichText).string = CommonFun.getInstance().HighlightNumbers(data.describe);
|
|
}
|
|
|
|
}
|
|
list.removeChild(item);
|
|
|
|
|
|
node.getChildByName("btnClose").on("click", () => {
|
|
node.removeFromParent();
|
|
})
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|