refactor(战斗): 重构英雄与怪物属性系统,简化数据结构
- 移除 HeroSkillsComp 组件,将技能逻辑合并到 HeroAttrsComp - 将属性从 Attrs 枚举映射改为 HeroAttrsComp 中的独立字段 - 为 HeroAttrsComp 添加攻击和技能冷却时间管理功能 - 统一英雄和怪物的属性初始化方式,简化配置数据 - 在 GameSet 中添加击退概率配置项 - 修复 SkillView 中属性名大小写错误
This commit is contained in:
@@ -2,21 +2,18 @@ import { instantiate, Node, Prefab, Vec3 ,v3,resources,SpriteFrame,Sprite,Sprite
|
||||
import { oops } from "../../../../extensions/oops-plugin-framework/assets/core/Oops";
|
||||
import { ecs } from "../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS";
|
||||
import { smc } from "../common/SingletonModuleComp";
|
||||
import { BoxSet, FacSet, IndexSet } from "../common/config/GameSet";
|
||||
import { BoxSet, FacSet, FightSet, IndexSet } from "../common/config/GameSet";
|
||||
import { HeroInfo } from "../common/config/heroSet";
|
||||
import { HeroAttrsComp } from "./HeroAttrsComp";
|
||||
import { BuffConf, SkillSet } from "../common/config/SkillSet";
|
||||
import { getNeAttrs, getAttrs ,Attrs, defaultAttrs} from "../common/config/HeroAttrs";
|
||||
import { getMonAttr, MonType } from "../map/RogueConfig";
|
||||
import { HeroViewComp } from "./HeroViewComp";
|
||||
import { HeroSkillsComp } from "./HeroSkills";
|
||||
import { MonMoveComp } from "./MonMove";
|
||||
import { mLogger } from "../common/Logger";
|
||||
/** 角色实体 */
|
||||
@ecs.register(`Monster`)
|
||||
export class Monster extends ecs.Entity {
|
||||
HeroModel!: HeroAttrsComp;
|
||||
HeroSkills!: HeroSkillsComp;
|
||||
HeroView!: HeroViewComp;
|
||||
MonMove!: MonMoveComp;
|
||||
private debugMode: boolean = false; // 是否启用调试模式
|
||||
@@ -45,7 +42,6 @@ export class Monster extends ecs.Entity {
|
||||
this.addComponents<ecs.Comp>(
|
||||
MonMoveComp,
|
||||
HeroAttrsComp,
|
||||
HeroSkillsComp,
|
||||
);
|
||||
}
|
||||
|
||||
@@ -60,7 +56,6 @@ export class Monster extends ecs.Entity {
|
||||
|
||||
this.remove(HeroViewComp);
|
||||
this.remove(HeroAttrsComp);
|
||||
this.remove(HeroSkillsComp);
|
||||
super.destroy();
|
||||
}
|
||||
|
||||
@@ -102,7 +97,6 @@ export class Monster extends ecs.Entity {
|
||||
node.setScale(size*node.scale.x,size*node.scale.y);
|
||||
node.setPosition(pos)
|
||||
const model = this.get(HeroAttrsComp);
|
||||
const skillsComp = this.get(HeroSkillsComp);
|
||||
let hero = HeroInfo[uuid]; // 共用英雄数据
|
||||
// 设置 View 层属性(表现相关)
|
||||
view.scale = scale;
|
||||
@@ -120,18 +114,18 @@ export class Monster extends ecs.Entity {
|
||||
model.is_kalami = true;
|
||||
}
|
||||
// 根据等级和类型获取怪物属性(使用新的动态成长系统)
|
||||
const {hp, mp, ap, def, speed} = getMonAttr(lv, uuid, monType, gameTime);
|
||||
const {hp,ap, speed} = getMonAttr(lv, uuid, monType, gameTime);
|
||||
// 初始化属性数组
|
||||
model.Attrs = getAttrs();
|
||||
model.hp = model.Attrs[Attrs.HP_MAX] = hp;
|
||||
model.mp = model.Attrs[Attrs.MP_MAX] = mp;
|
||||
model.Attrs[Attrs.DEF] = def;
|
||||
model.Attrs[Attrs.AP] = ap;
|
||||
model.Attrs[Attrs.SPEED] = speed; // 使用成长后的速度
|
||||
model.Attrs[Attrs.BACK_CHANCE]=defaultAttrs[Attrs.BACK_CHANCE]
|
||||
model.Attrs[Attrs.CON_RES]=defaultAttrs[Attrs.CON_RES]
|
||||
model.hp = model.hp_max = hp;
|
||||
model.ap = ap;
|
||||
model.speed = speed; // 使用成长后的速度
|
||||
model.a_cd_max=hero.as
|
||||
model.s_cd_max=hero.ss
|
||||
model.back_chance=FightSet.BACK_CHANCE
|
||||
// ✅ 初始化技能数据(迁移到 HeroSkillsComp)
|
||||
skillsComp.initSkills(hero.skills, uuid);
|
||||
if(hero.skills[0]) model.atk_id=hero.skills[0]
|
||||
if(hero.skills[1]) model.skill_id=hero.skills[1]
|
||||
|
||||
|
||||
this.add(view);
|
||||
// 重置视图状态(对象池复用时必须)
|
||||
|
||||
Reference in New Issue
Block a user