import { ecs } from "../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS"; import { BattleStateComp } from "./BattleStateComp"; import { DamageResult } from "../damage/DamageComp"; import { HeroViewComp } from "../hero/HeroViewComp"; import { HeroSkillsComp } from "../skill/heroSkillsComp"; import { HCardComp } from "../map/HCardComp"; @ecs.register('BattleEndSystem') export class BattleEndSystem extends ecs.ComblockSystem { filter(): ecs.IMatcher { return ecs.allOf(BattleStateComp); } update(e: ecs.Entity) { const state = e.get(BattleStateComp); if (state.isEnded) { // 清理战斗残留组件 this.cleanComponents(); // 重置状态 state.reset(); console.log(`战斗结束,持续时间: ${Date.now() - state.startTime}ms`); } } private cleanComponents() { console.log("cleanComponents"); console.log("DamageResult",ecs.query(ecs.allOf(DamageResult))); console.log("HCardComp",ecs.query(ecs.allOf(HCardComp))); console.log("HeroSkillsComp",ecs.query(ecs.allOf(HeroSkillsComp))); console.log("HeroViewComp",ecs.query(ecs.allOf(HeroViewComp))); ecs.query(ecs.allOf(DamageResult)).forEach(entity => entity.remove(DamageResult)); ecs.query(ecs.allOf(HCardComp)).forEach(entity => entity.remove(HCardComp)); ecs.query(ecs.allOf(HeroSkillsComp)).forEach(entity => entity.remove(HeroSkillsComp)); ecs.query(ecs.allOf(HeroViewComp)).forEach(entity => entity.remove(HeroViewComp)); } }