import { Component } from '../core/Component.js'; export class Skills extends Component { constructor() { super('Skills'); this.activeSkills = []; // Array of skill IDs this.passiveSkills = []; // Array of passive skill IDs this.skillCooldowns = new Map(); // skillId -> remaining cooldown time } /** * Add a skill */ addSkill(skillId, isPassive = false) { if (isPassive) { if (!this.passiveSkills.includes(skillId)) { this.passiveSkills.push(skillId); } } else { if (!this.activeSkills.includes(skillId)) { this.activeSkills.push(skillId); } } } /** * Check if entity has a skill */ hasSkill(skillId) { return this.activeSkills.includes(skillId) || this.passiveSkills.includes(skillId); } /** * Set skill cooldown */ setCooldown(skillId, duration) { this.skillCooldowns.set(skillId, duration); } /** * Update cooldowns */ updateCooldowns(deltaTime) { for (const [skillId, cooldown] of this.skillCooldowns.entries()) { const newCooldown = cooldown - deltaTime; if (newCooldown <= 0) { this.skillCooldowns.delete(skillId); } else { this.skillCooldowns.set(skillId, newCooldown); } } } /** * Check if skill is on cooldown */ isOnCooldown(skillId) { return this.skillCooldowns.has(skillId); } /** * Get remaining cooldown */ getCooldown(skillId) { return this.skillCooldowns.get(skillId) || 0; } }