refactor(卡牌): 将卡牌效果应用逻辑改为直接调用组件方法
移除 HeroAttrsComp 中对 UseItemCard 和 UseAttrCard 的事件监听,改为在 MissionCardComp 中直接获取主角实体并调用对应组件方法。 这样避免事件广播导致非主角实体错误响应,确保卡牌效果仅作用于主角。 具体修改: - 天赋卡:直接调用 TalComp.addTal - 属性卡:直接更新全局属性并调用 HeroAttrsComp.recalculateSingleAttr - 药水卡:直接创建 BuffConf 并调用 HeroAttrsComp.addBuff - 技能卡:暂时保留事件派发,但后续可考虑类似改造 - 伙伴卡:保留事件派发,因其涉及实体创建
This commit is contained in:
@@ -79,14 +79,15 @@ export class HeroAttrsComp extends ecs.Comp {
|
||||
onLoad() {
|
||||
// 监听升级事件
|
||||
oops.message.on(GameEvent.CanUpdateLv, this.onLevelUp, this);
|
||||
oops.message.on(GameEvent.UseItemCard, this.onUseItemCard, this);
|
||||
oops.message.on(GameEvent.UseAttrCard, this.onUseAttrCard, this);
|
||||
// 移除卡牌事件监听,改为由 MissionCardComp 直接调用,避免非主角响应
|
||||
// oops.message.on(GameEvent.UseItemCard, this.onUseItemCard, this);
|
||||
// oops.message.on(GameEvent.UseAttrCard, this.onUseAttrCard, this);
|
||||
}
|
||||
|
||||
onDestroy() {
|
||||
oops.message.off(GameEvent.CanUpdateLv, this.onLevelUp, this);
|
||||
oops.message.off(GameEvent.UseItemCard, this.onUseItemCard, this);
|
||||
oops.message.off(GameEvent.UseAttrCard, this.onUseAttrCard, this);
|
||||
// oops.message.off(GameEvent.UseItemCard, this.onUseItemCard, this);
|
||||
// oops.message.off(GameEvent.UseAttrCard, this.onUseAttrCard, this);
|
||||
}
|
||||
|
||||
onUseAttrCard(event: string, args: any) {
|
||||
|
||||
Reference in New Issue
Block a user