feat: add poc
This commit is contained in:
parent
43d27b04d9
commit
4a4fa05ce4
53 changed files with 6191 additions and 0 deletions
69
src/components/Skills.js
Normal file
69
src/components/Skills.js
Normal file
|
|
@ -0,0 +1,69 @@
|
|||
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;
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue