refactor(技能系统): 移除事件通信,直接调用方法添加技能
- 删除 HeroSkillsComp 中监听 GameEvent.UseSkillCard 的代码 - 在 MissionCardComp 中直接调用 HeroSkillsComp.addSkill() 方法 - 简化组件间通信方式,避免不必要的事件派发
This commit is contained in:
@@ -45,20 +45,11 @@ export class HeroSkillsComp extends ecs.Comp {
|
|||||||
ai_timer: number = 0;
|
ai_timer: number = 0;
|
||||||
|
|
||||||
onLoad() {
|
onLoad() {
|
||||||
oops.message.on(GameEvent.UseSkillCard, this.onUseSkillCard, this);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
onDestroy() {
|
onDestroy() {
|
||||||
oops.message.off(GameEvent.UseSkillCard, this.onUseSkillCard, this);
|
|
||||||
}
|
|
||||||
|
|
||||||
private onUseSkillCard(event: string, args: any) {
|
|
||||||
const attrsComp = this.ent.get(HeroAttrsComp);
|
|
||||||
if (!attrsComp || !attrsComp.is_master) return;
|
|
||||||
|
|
||||||
const s_uuid = args as number;
|
|
||||||
console.log(`[HeroSkills] 收到技能选择事件,添加技能 ID: ${s_uuid}`);
|
|
||||||
this.addSkill(s_uuid, HSSet.skill);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// ==================== 辅助方法 ====================
|
// ==================== 辅助方法 ====================
|
||||||
@@ -280,7 +271,6 @@ export class HeroSkillsComp extends ecs.Comp {
|
|||||||
}
|
}
|
||||||
|
|
||||||
reset() {
|
reset() {
|
||||||
oops.message.off(GameEvent.UseSkillCard, this.onUseSkillCard, this);
|
|
||||||
this.skills = {};
|
this.skills = {};
|
||||||
}
|
}
|
||||||
setMaxAuto(on: boolean) {
|
setMaxAuto(on: boolean) {
|
||||||
|
|||||||
@@ -448,14 +448,7 @@ export class MissionCardComp extends CCComp {
|
|||||||
// 直接调用 HeroSkillsComp 添加技能
|
// 直接调用 HeroSkillsComp 添加技能
|
||||||
const skillComp = role.get(HeroSkillsComp);
|
const skillComp = role.get(HeroSkillsComp);
|
||||||
if (skillComp) {
|
if (skillComp) {
|
||||||
// 假设 HeroSkillsComp 有 addSkill 方法,如果没有需要根据实际情况调整
|
skillComp.addSkill(selectedData.uuid);
|
||||||
// 这里暂时假设通过事件触发或需要补充直接调用的方法
|
|
||||||
// 由于 HeroSkillsComp 之前可能主要依赖初始化,这里可能需要补充 addSkill 逻辑
|
|
||||||
// 或者如果 HeroSkillsComp 监听了 UseSkillCard 且判断了 is_master,可以保留事件但需谨慎
|
|
||||||
// 为了完全隔离,建议在 HeroSkillsComp 中暴露 addSkill 接口
|
|
||||||
// 目前先保留事件派发,但在 HeroSkillsComp 中加强 is_master 判断
|
|
||||||
// 或者:skillComp.addSkill(selectedData.uuid);
|
|
||||||
oops.message.dispatchEvent(GameEvent.UseSkillCard, selectedData.uuid);
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case CardType.Partner:
|
case CardType.Partner:
|
||||||
|
|||||||
Reference in New Issue
Block a user