53 lines
1.7 KiB
TypeScript
53 lines
1.7 KiB
TypeScript
import { ecs } from "../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS";
|
|
import { EType, SkillSet } from "../common/config/SkillSet";
|
|
import { SkillView } from "./SkillView";
|
|
import { smc } from "../common/SingletonModuleComp";
|
|
@ecs.register('StimeDataComp')
|
|
export class StimeDataComp extends ecs.Comp {
|
|
s_uuid: number = 0;
|
|
totalTime: number = 0;
|
|
elapsedTime: number = 0;
|
|
hitInterval: number = 0;
|
|
hitElapsed: number = 0;
|
|
|
|
reset() {
|
|
this.s_uuid = 0;
|
|
this.totalTime = 0;
|
|
this.elapsedTime = 0;
|
|
this.hitInterval = 0;
|
|
this.hitElapsed = 0;
|
|
}
|
|
}
|
|
|
|
@ecs.register('STimeSystem')
|
|
export class STimeSystem extends ecs.ComblockSystem implements ecs.ISystemUpdate {
|
|
filter(): ecs.IMatcher {
|
|
return ecs.allOf(StimeDataComp, SkillView);
|
|
}
|
|
|
|
update(entity: ecs.Entity): void {
|
|
if(!smc.mission.play ) return;
|
|
if(smc.mission.pause) return
|
|
const timeComp = entity.get(StimeDataComp);
|
|
const skillView = entity.get(SkillView);
|
|
if (!timeComp || !skillView) return;
|
|
const conf = SkillSet[timeComp.s_uuid];
|
|
if (!conf || conf.EType !== EType.timeEnd) return;
|
|
if (timeComp.totalTime <= 0) {
|
|
skillView.close_collider();
|
|
entity.destroy();
|
|
return;
|
|
}
|
|
timeComp.elapsedTime += this.dt;
|
|
timeComp.hitElapsed += this.dt;
|
|
if (timeComp.hitInterval > 0 && timeComp.hitElapsed >= timeComp.hitInterval) {
|
|
timeComp.hitElapsed -= timeComp.hitInterval;
|
|
skillView.atk(null);
|
|
}
|
|
if (timeComp.elapsedTime >= timeComp.totalTime) {
|
|
skillView.close_collider();
|
|
entity.destroy();
|
|
}
|
|
}
|
|
}
|