import { ecs } from "../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS"; import { FacSet } from "../common/config/GameSet"; import { HeroInfo } from "../common/config/heroSet"; import { FieldSkillSet, FieldSkillType } from "../common/config/SkillSet"; import { HeroAttrsComp } from "./HeroAttrsComp"; /** * 驻场技能(光环属性)计算辅助类 * * 核心职责: * 统一管理全场存活英雄带来的全局加成属性计算。 * 解耦原先写在 HeroAttrsComp 中的静态计算逻辑,符合单一职责原则。 */ export class FieldSkillHelper { /** 获取指定驻场技能类型的总加成值(只计算存活的友方英雄) */ public static getFieldSkillTotalValue(type: FieldSkillType): number { let total = 0; ecs.query(ecs.allOf(HeroAttrsComp)).forEach((entity: ecs.Entity) => { const model = entity.get(HeroAttrsComp); if (!model || model.is_dead || model.fac !== FacSet.HERO) return; const heroConfig = HeroInfo[model.hero_uuid]; if (heroConfig && heroConfig.field) { for (const skillUuid of heroConfig.field) { const skillConfig = FieldSkillSet[skillUuid]; if (skillConfig && skillConfig.type === type) { total += skillConfig.value; } } } }); return total; } }