feat: migrate JavaScript files to TypeScript, enhancing type safety and maintainability across the codebase
This commit is contained in:
parent
3db2bb9160
commit
c582f2004e
107 changed files with 5876 additions and 3588 deletions
32
src/systems/HealthRegenerationSystem.ts
Normal file
32
src/systems/HealthRegenerationSystem.ts
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
import { System } from '../core/System.ts';
|
||||
import { SystemName, ComponentType } from '../core/Constants.ts';
|
||||
import type { Entity } from '../core/Entity.ts';
|
||||
import type { Health } from '../components/Health.ts';
|
||||
|
||||
/**
|
||||
* System responsible for managing health regeneration for entities over time.
|
||||
*/
|
||||
export class HealthRegenerationSystem extends System {
|
||||
constructor() {
|
||||
super(SystemName.HEALTH_REGEN);
|
||||
this.requiredComponents = [ComponentType.HEALTH];
|
||||
this.priority = 35;
|
||||
}
|
||||
|
||||
/**
|
||||
* Process health regeneration for entities that haven't been damaged recently.
|
||||
* @param deltaTime - Time elapsed since last frame in seconds
|
||||
* @param entities - Entities matching system requirements
|
||||
*/
|
||||
process(deltaTime: number, entities: Entity[]): void {
|
||||
entities.forEach((entity) => {
|
||||
const health = entity.getComponent<Health>(ComponentType.HEALTH);
|
||||
if (!health || health.regeneration <= 0) return;
|
||||
|
||||
const timeSinceDamage = (Date.now() - health.lastDamageTime) / 1000;
|
||||
if (timeSinceDamage > 5) {
|
||||
health.heal(health.regeneration * deltaTime);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue