42 lines
923 B
JavaScript
42 lines
923 B
JavaScript
import { System } from '../core/System.js';
|
|
|
|
/**
|
|
* System to track and render skill effects (Fire Breath, Pounce, etc.)
|
|
*/
|
|
export class SkillEffectSystem extends System {
|
|
constructor() {
|
|
super('SkillEffectSystem');
|
|
this.requiredComponents = []; // No required components
|
|
this.priority = 50; // Run after skills but before rendering
|
|
this.activeEffects = [];
|
|
}
|
|
|
|
process(deltaTime, _entities) {
|
|
// Update all active effects
|
|
for (let i = this.activeEffects.length - 1; i >= 0; i--) {
|
|
const effect = this.activeEffects[i];
|
|
effect.lifetime -= deltaTime;
|
|
effect.time += deltaTime;
|
|
|
|
if (effect.lifetime <= 0) {
|
|
this.activeEffects.splice(i, 1);
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Add a skill effect
|
|
*/
|
|
addEffect(effect) {
|
|
this.activeEffects.push(effect);
|
|
}
|
|
|
|
/**
|
|
* Get all active effects
|
|
*/
|
|
getEffects() {
|
|
return this.activeEffects;
|
|
}
|
|
}
|
|
|
|
|