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

@@ -56,7 +56,6 @@ export class MissionComp extends CCComp {
onLoad(){
this.on(GameEvent.MissionStart,this.mission_start,this)
this.on(GameEvent.MonDead,this.do_mon_dead,this)
// this.on(GameEvent.HeroDead,this.do_hero_dead,this)
// this.on(GameEvent.FightEnd,this.fight_end,this)
this.on(GameEvent.MissionEnd,this.mission_end,this)
@@ -106,31 +105,6 @@ export class MissionComp extends CCComp {
// 奖励发放
}
do_mon_dead(event:any,data:any){
// mLogger.log(this.debugMode, 'MissionComp', " do_mon_dead",event,data)
smc.vmdata.mission_data.mon_num--
// 计算并增加经验
// data 应该是怪物组件或包含怪物信息的对象
if (data && data.uuid) {
// 默认值处理
const level = data.lv || 1;
// 类型推断
let type = MonType.NORMAL;
if (data.is_boss) {
type = MonType.BOSS;
} else if (data.is_elite) {
type = MonType.ELITE;
} else {
// 兜底策略根据Cost判断是否为精英怪
const cost = MonsterCost[data.uuid] || 1;``
if (cost >= 10) {
type = MonType.ELITE;
}
}
this.cal_gold_reward(data, type);
}
}
cal_gold_reward(data: any, type: MonType) {
const cost = MonsterCost[data.uuid] || 1;

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);
}