refactor(伤害系统): 将caster从HeroViewComp改为使用casterEid

统一伤害系统中施法者的标识方式,从直接使用HeroViewComp改为使用实体ID(casterEid)
修复反伤逻辑中可能存在的空指针问题
This commit is contained in:
walkpan
2026-01-06 14:28:48 +08:00
parent 31321a1a45
commit 974a6d26b2
3 changed files with 15 additions and 15 deletions

View File

@@ -10,8 +10,8 @@ export interface DamageEvent {
/** 伤害属性数据 */
Attrs: any;
/** 施法者 */
caster: HeroViewComp;
/** 施法者ID */
casterEid: number;
/** 技能UUID */
s_uuid: number;
@@ -58,14 +58,13 @@ export class DamageQueueComp extends ecs.Comp {
/**
* 添加伤害事件到队列
*/
addDamageEvent(attrs: any, caster: HeroViewComp, s_uuid: number,ext_dmg:number=0,dmg_ratio:number=1): void {
addDamageEvent(attrs: any, casterEid: number, s_uuid: number,ext_dmg:number=0,dmg_ratio:number=1): void {
const timestamp = Date.now();
const casterEid = caster?.ent?.eid ?? -1;
const eventId = `${casterEid}_${s_uuid}_${timestamp}_${Math.random()}`;
const damageEvent: DamageEvent = {
Attrs: attrs ? { ...attrs } : null, // 深拷贝属性数据
caster: caster,
casterEid: casterEid,
s_uuid: s_uuid,
timestamp: timestamp,
eventId: eventId,
@@ -161,7 +160,7 @@ export class DamageQueueHelper {
* 为实体添加伤害事件
* 如果实体没有伤害队列组件,会自动创建
*/
static addDamageToEntity(entity: ecs.Entity, attrs: any, caster: HeroViewComp, s_uuid: number,ext_dmg:number=0,dmg_ratio:number=1): void {
static addDamageToEntity(entity: ecs.Entity, attrs: any, casterEid: number, s_uuid: number,ext_dmg:number=0,dmg_ratio:number=1): void {
let damageQueue = entity.get(DamageQueueComp);
// 如果实体没有伤害队列组件,创建一个
@@ -170,7 +169,7 @@ export class DamageQueueHelper {
}
// 添加伤害事件到队列
damageQueue.addDamageEvent(attrs, caster, s_uuid,ext_dmg,dmg_ratio);
damageQueue.addDamageEvent(attrs, casterEid, s_uuid,ext_dmg,dmg_ratio);
}
/**