34 lines
1.4 KiB
TypeScript
34 lines
1.4 KiB
TypeScript
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;
|
|
}
|
|
}
|