feat: 重构英雄与怪物系统并添加等级机制

- 调整怪物配置映射,将兽人系列怪物ID从5xxx改为6xxx
- 为英雄系统添加等级支持,英雄属性随等级线性增长
- 重构卡牌系统,区分英雄卡和功能卡显示逻辑
- 重新组织英雄配置数据,按职业分类并添加等级字段
- 扩展技能配置,为各等级添加对应技能变体
- 简化特殊卡配置结构,添加名称和描述字段
This commit is contained in:
panw
2026-03-20 10:54:29 +08:00
parent 51d0459f5b
commit 35af88d570
8 changed files with 1749 additions and 948 deletions

View File

@@ -2,7 +2,7 @@ import { mLogger } from "../common/Logger";
import { _decorator, Animation, AnimationClip, EventTouch, Label, Node, NodeEventType, Sprite, SpriteAtlas, Tween, tween, UIOpacity, Vec3, resources } from "cc";
import { ecs } from "../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS";
import { CCComp } from "../../../../extensions/oops-plugin-framework/assets/module/common/CCComp";
import { CardConfig, CardType } from "../common/config/CardSet";
import { CardConfig, CardType, SpecialCardList } from "../common/config/CardSet";
import { CardUseComp } from "./CardUseComp";
import { HeroInfo } from "../common/config/heroSet";
import { BuffsList, SkillSet } from "../common/config/SkillSet";
@@ -22,9 +22,9 @@ export class CardComp extends CCComp {
@property(Node)
unLock: Node = null!
@property(Node)
ap_node=null!
info_node=null!
@property(Node)
hp_node=null!
oinfo_node=null!
@property(Node)
name_node=null!
@property(Node)
@@ -320,10 +320,23 @@ export class CardComp extends CCComp {
this.iconVisualToken += 1;
if (this.opacityComp) this.opacityComp.opacity = 255;
this.node.setPosition(this.restPosition);
this.setLabel(this.name_node, `${CardType[this.card_type]}-${this.card_uuid}`);
if(this.card_type===CardType.Hero){
this.setLabel(this.name_node, `${HeroInfo[this.card_uuid].name}Lv.${this.cardData.hero_lv}`);
this.info_node.active = true;
this.oinfo_node.active = false;
this.info_node.getChildByName("ap").getChildByName("val").getComponent(Label).string = `${HeroInfo[this.card_uuid].ap*this.cardData.hero_lv}`;
this.info_node.getChildByName("hp").getChildByName("val").getComponent(Label).string = `${HeroInfo[this.card_uuid].hp*this.cardData.hero_lv}`;
}else{
this.setLabel(this.name_node, `${SpecialCardList[this.card_uuid].name}Lv.${this.cardData.lv}`);
this.info_node.active = false;
this.oinfo_node.active = true;
this.oinfo_node.getChildByName("info").getComponent(Label).string = `${SpecialCardList[this.card_uuid].info}`;
}
this.setLabel(this.cost_node, `${this.card_cost}`);
if (this.ap_node) this.ap_node.active = false;
if (this.hp_node) this.hp_node.active = false;
const iconNode = this.icon_node as Node;
if (this.card_type === CardType.Hero) {
this.updateHeroAnimation(iconNode, this.card_uuid, this.iconVisualToken);
@@ -383,8 +396,8 @@ export class CardComp extends CCComp {
this.iconVisualToken += 1;
this.setLabel(this.name_node, "");
this.setLabel(this.cost_node, "");
if (this.ap_node) this.ap_node.active = false;
if (this.hp_node) this.hp_node.active = false;
if (this.info_node) this.info_node.active = false;
if (this.oinfo_node) this.oinfo_node.active = false;
this.clearIconAnimation(this.icon_node as Node);
const sprite = this.icon_node?.getComponent(Sprite) || this.icon_node?.getComponentInChildren(Sprite);
if (sprite) sprite.spriteFrame = null;