refactor(英雄系统): 移除主角特殊逻辑和怪物死亡处理

- 删除 HeroAttrsComp 中的 is_master 字段
- 简化 Hero.load() 方法签名,移除 is_master 和 is_friend 参数
- 移除 MissionComp 中的怪物死亡事件监听和奖励计算逻辑
- 移除 HeroViewComp 中主角复活时恢复怪物行动的逻辑
- 修改 HeroAtkSystem 中复活逻辑,不再区分主角
- 将 MissionHeroComp 中的 CallFriend 事件改为 CallHero,并清理事件监听
- 移除英雄死亡时停止怪物刷新的逻辑,简化阵营判断

这些更改旨在简化英雄系统架构,消除主角与普通英雄之间的特殊处理差异,使系统更加统一和可维护。怪物死亡奖励计算等逻辑被移至其他系统处理。
This commit is contained in:
walkpan
2026-03-14 13:20:02 +08:00
parent 2f1af99a1b
commit 6de3a105da
6 changed files with 25 additions and 95 deletions

View File

@@ -22,12 +22,14 @@ export class MissionHeroCompComp extends CCComp {
this.on(GameEvent.FightReady,this.fight_ready,this)
this.on(GameEvent.Zhaohuan,this.zhao_huan,this)
this.on(GameEvent.MissionEnd,this.clear_heros,this)
// this.on(GameEvent.CallFriend,this.call_friend,this)
oops.message.on(GameEvent.CallFriend,this.call_friend,this)
oops.message.on(GameEvent.CallHero,this.call_hero,this)
}
onDestroy(){
oops.message.off(GameEvent.CallFriend,this.call_friend,this)
oops.message.off(GameEvent.CallHero,this.call_hero,this)
oops.message.off(GameEvent.FightReady,this.fight_ready,this)
oops.message.off(GameEvent.Zhaohuan,this.zhao_huan,this)
oops.message.off(GameEvent.MissionEnd,this.clear_heros,this)
}
start() {
@@ -37,45 +39,27 @@ export class MissionHeroCompComp extends CCComp {
}
fight_ready(){
// this.heros=[]
// for(let i=0;i<FightSet.HERO_MAX_NUM;i++){
// this.heros.push({
// uuid:0,
// count:0,
// quality:0,
// })
// }
// this.current_hero_num=-1
// this.current_hero_uuid=0
smc.vmdata.mission_data.hero_num=0
this.addHero(smc.fight_hero,true)
// for(let i=0;i<Object.keys(heros).length;i++){
// if(heros[i]!=0){
// this.addHero(heros[i],false)
// }
// }
}
protected update(dt: number): void {
if(smc.mission.status != 1) return
}
// protected update(dt: number): void {
// }
private zhao_huan(event: string, args: any){
}
private call_hero(event: string, args: any){
this.addHero(args.uuid)
}
private call_friend(event: string, args: any){
this.addHero(args.uuid,false,true)
}
/** 添加英雄 */
private addHero(uuid:number=1001,is_master:boolean=false,is_friend:boolean=false) {
private addHero(uuid:number=1001) {
let hero_pos=0
let hero = ecs.getEntity<Hero>(Hero);
let scale = 1
let pos:Vec3 = HeroPos[hero_pos].pos;
let fight_pos=1
hero.load(pos,scale,uuid,fight_pos,is_master,is_friend);
hero.load(pos,scale,uuid);
}