37 lines
1.6 KiB
TypeScript
37 lines
1.6 KiB
TypeScript
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));
|
|
}
|
|
}
|