4 Commits

Author SHA1 Message Date
panw
83e9188cd4 fix(heros prefab): 修复BG_node未正确关联的问题
将heros.prefab中的BG_node从null改为关联到正确的id 22,补全预制体节点引用
2026-05-28 09:09:13 +08:00
panw
861ed26977 refactor(map): 移除冗余的卡池等级节点并重构显示逻辑
1.  删除HInfoComp和CardLiteComp中不再使用的pool_lv相关节点字段
2.  将卡池等级背景色显示逻辑迁移到HerosListComp中统一处理
3.  简化CardLiteComp的节点初始化隐藏逻辑
2026-05-28 09:08:11 +08:00
panw
76a37049c7 feat(HInfoComp): 新增卡牌背景节点适配卡池等级和类型
1.  在hnode.prefab中新增BG_node节点引用
2.  实现根据英雄类型和卡池等级切换背景节点显示逻辑
3.  优化卡池等级标识的显示代码结构
2026-05-28 09:07:16 +08:00
panw
68e184c94d fix: 修复卡片背景激活状态和池色显示逻辑
1.  默认禁用卡片背景节点初始激活状态
2.  根据卡牌池等级动态显示对应颜色的背景高亮
3.  非当前类型的卡片背景隐藏所有子颜色节点
2026-05-28 08:50:07 +08:00
7 changed files with 4328 additions and 5456 deletions

View File

@@ -4352,7 +4352,7 @@
"node": {
"__id__": 1
},
"_enabled": true,
"_enabled": false,
"__prefab": {
"__id__": 197
},

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -53,8 +53,6 @@ export class CardLiteComp extends CCComp {
Ckind_node: Node = null!
@property(Node)
BG_node: Node = null!
@property(Node)
pool_lv_node: Node = null!
@property(Label)
lvl_node: Label = null!
@@ -211,10 +209,7 @@ export class CardLiteComp extends CCComp {
hasIcon: !!this.icon_node,
hasCost: !!this.cost_node,
hasBG: !!this.BG_node,
hasPoolLv: !!this.pool_lv_node,
hasLvl: !!this.lvl_node,
bgChildren: this.BG_node?.children.map(c => c.name) || [],
poolChildren: this.pool_lv_node?.children.map(c => c.name) || [],
nodeActive: this.node.active,
nodeScale: this.node.scale.toString(),
nodePos: this.node.position.toString(),
@@ -223,16 +218,22 @@ export class CardLiteComp extends CCComp {
const kindName = CKind[this.cardData.kind];
const poolColorNames = ["green", "blue", "purple", "yellow", "red"];
const poolColorIdx = Math.min(this.cardData.pool_lv, 5) - 1;
const activeColor = poolColorNames[poolColorIdx];
if (this.BG_node) {
this.BG_node.children.forEach(child => {
child.active = (child.name === kindName);
});
}
const cardLvStr = `lv${this.cardData.pool_lv}`;
if (this.pool_lv_node) {
this.pool_lv_node.children.forEach(child => {
child.active = (child.name === cardLvStr);
if (child.active) {
child.children.forEach(colorChild => {
colorChild.active = (colorChild.name === activeColor);
});
} else {
child.children.forEach(colorChild => {
colorChild.active = false;
});
}
});
}
@@ -304,10 +305,12 @@ export class CardLiteComp extends CCComp {
}
if (this.lvl_node) this.lvl_node.node.active = false;
if (this.BG_node) {
this.BG_node.children.forEach(child => child.active = false);
}
if (this.pool_lv_node) {
this.pool_lv_node.children.forEach(child => child.active = false);
this.BG_node.children.forEach(child => {
child.active = false;
child.children.forEach(colorChild => {
colorChild.active = false;
});
});
}
if (this.icon_node) {
(this.icon_node as Node).setScale(new Vec3(1, 1, 1));

View File

@@ -36,6 +36,7 @@ import { mLogger } from "../common/Logger";
import { MissionHeroComp } from "./MissionHeroComp";
import { MoveComp } from "../hero/MoveComp";
import { FacSet, getLvColor } from "../common/config/GameSet";
import { CKind } from "../common/config/CardSet";
import { MissionEconomy } from "./MissionEconomy";
const {property, ccclass } = _decorator;
@@ -56,6 +57,10 @@ export class HInfoComp extends CCComp {
@property(Node)
sell_node=null!
/** 卡牌背景底框节点(按卡池等级切换子节点显示) */
@property(Node)
BG_node=null!
/** 关闭窗口按钮节点 */
@property(Node)
close_node=null!
@@ -71,8 +76,6 @@ export class HInfoComp extends CCComp {
@property(Label)
lv_node: Label = null!
@property(Node)
pool_lvnode: Node = null!
@property(Node)
ap_node=null!
@@ -155,10 +158,22 @@ export class HInfoComp extends CCComp {
this.lv_node.color = getLvColor(heroLv);
}
if (this.pool_lvnode) {
const poolLvStr = `lv${this.previewPoolLv}`;
this.pool_lvnode.children.forEach(child => {
child.active = (child.name === poolLvStr);
const poolColorNames = ["green", "blue", "purple", "yellow", "red"];
const poolColorIdx = Math.min(this.previewPoolLv, 5) - 1;
const activeColor = poolColorNames[poolColorIdx];
const kindName = CKind[CKind.Hero];
if (this.BG_node) {
this.BG_node.children.forEach(child => {
child.active = (child.name === kindName);
if (child.active) {
child.children.forEach(colorChild => {
colorChild.active = (colorChild.name === activeColor);
});
} else {
child.children.forEach(colorChild => {
colorChild.active = false;
});
}
});
}
@@ -264,16 +279,22 @@ export class HInfoComp extends CCComp {
}
// ---- 卡池等级标识 ----
if (this.pool_lvnode) {
const poolLvStr = `lv${this.model.pool_lv ?? 1}`;
this.pool_lvnode.children.forEach(child => {
// if (child.name === "light") {
// child.active = false;
// } else if (child.name === "bg") {
// child.active = true;
// } else {
child.active = (child.name === poolLvStr);
// }
const poolColorNames = ["green", "blue", "purple", "yellow", "red"];
const poolColorIdx = Math.min(this.model.pool_lv ?? 1, 5) - 1;
const activeColor = poolColorNames[poolColorIdx];
const kindName = CKind[CKind.Hero];
if (this.BG_node) {
this.BG_node.children.forEach(child => {
child.active = (child.name === kindName);
if (child.active) {
child.children.forEach(colorChild => {
colorChild.active = (colorChild.name === activeColor);
});
} else {
child.children.forEach(colorChild => {
colorChild.active = false;
});
}
});
}

View File

@@ -24,6 +24,7 @@ import { oops } from "db://oops-framework/core/Oops";
import { mLogger } from "../common/Logger";
import { HeroInfo, HeroList } from "../common/config/heroSet";
import { buildSkillDesc } from "../common/config/HeroSkillDesc";
import { CKind } from "../common/config/CardSet";
import { CardLiteComp } from "./CardLiteComp";
const { property, ccclass } = _decorator;
@@ -45,6 +46,10 @@ export class HerosListComp extends CCComp {
@property(Node)
cd_node = null!
/** 卡牌背景底框节点(按卡池等级切换子节点显示) */
@property(Node)
BG_node=null!
@property(Node)
info_node = null!
@@ -199,11 +204,32 @@ export class HerosListComp extends CCComp {
if (infoLabel) infoLabel.string = desc || hero.info || ""
}
this.updatePoolLvBg(hero.pool_lv ?? 1)
this.updateLvDisplay(hero)
this.updateTypeDisplay(hero)
this.updateHeroAnimation(uuid)
}
private updatePoolLvBg(poolLv: number) {
if (!this.BG_node) return
const poolColorNames = ["green", "blue", "purple", "yellow", "red"];
const poolColorIdx = Math.min(poolLv, 5) - 1;
const activeColor = poolColorNames[poolColorIdx];
const kindName = CKind[CKind.Hero];
this.BG_node.children.forEach(child => {
child.active = (child.name === kindName);
if (child.active) {
child.children.forEach(colorChild => {
colorChild.active = (colorChild.name === activeColor);
});
} else {
child.children.forEach(colorChild => {
colorChild.active = false;
});
}
});
}
private updateCdDisplay(hero: typeof HeroInfo[number]) {
if (!this.cd_node) return
const skillKeys = Object.keys(hero.skills)