重构怪物属性系统,移除MonAttrsComp并替换为HeroAttrsComp。更新相关组件和系统以适应新属性结构,确保怪物逻辑与英雄逻辑一致。

This commit is contained in:
2025-10-30 10:45:16 +08:00
parent 2d358e450d
commit e3bdc4b238
6 changed files with 11 additions and 263 deletions

View File

@@ -4,7 +4,7 @@ import { ecs } from "../../../../extensions/oops-plugin-framework/assets/libs/ec
import { smc } from "../common/SingletonModuleComp";
import { BoxSet, FacSet } from "../common/config/BoxSet";
import { HeroInfo } from "../common/config/heroSet";
import { MonAttrsComp } from "./MonAttrsComp";
import { HeroAttrsComp } from "./HeroAttrsComp";
import { BattleMoveComp } from "../common/ecs/position/BattleMoveComp";
import { SkillConComp } from "./SkillConComp";
import { BuffConf, SkillSet } from "../common/config/SkillSet";
@@ -16,14 +16,14 @@ import { HeroViewComp } from "./HeroViewComp";
/** 角色实体 */
@ecs.register(`Monster`)
export class Monster extends ecs.Entity {
HeroModel!: MonAttrsComp;
HeroModel!: HeroAttrsComp;
HeroView!: HeroViewComp;
BattleMove!: BattleMoveComp;
protected init() {
this.addComponents<ecs.Comp>(
BattleMoveComp,
MonAttrsComp,
HeroAttrsComp,
TalComp,
EBusComp,
);
@@ -31,7 +31,7 @@ export class Monster extends ecs.Entity {
destroy(): void {
this.remove(HeroViewComp);
this.remove(MonAttrsComp);
this.remove(HeroAttrsComp);
this.remove(TalComp);
this.remove(EBusComp);
super.destroy();
@@ -53,7 +53,7 @@ export class Monster extends ecs.Entity {
var view = node.getComponent(HeroViewComp)!;
const model = this.get(MonAttrsComp);
const model = this.get(HeroAttrsComp);
let hero = HeroInfo[uuid]; // 共用英雄数据
// 设置 View 层属性(表现相关)
view.scale = scale;
@@ -116,16 +116,16 @@ export class MonLifecycleSystem extends ecs.ComblockSystem
implements ecs.IEntityEnterSystem, ecs.IEntityRemoveSystem {
filter() {
return ecs.allOf(MonAttrsComp);
return ecs.allOf(HeroAttrsComp);
}
entityEnter(e: ecs.Entity): void {
// 英雄实体创建时的特殊处理
console.log(`怪物进入世界: ${e.get(MonAttrsComp).hero_name}`);
// 怪物实体创建时的特殊处理
console.log(`怪物进入世界: ${e.get(HeroAttrsComp).hero_name}`);
}
entityRemove(e: ecs.Entity): void {
// 英雄实体销毁时的清理工作
console.log(`怪物离开世界: ${e.get(MonAttrsComp).hero_name}`);
// 怪物实体销毁时的清理工作
console.log(`怪物离开世界: ${e.get(HeroAttrsComp).hero_name}`);
}
}