This repository has been archived on 2026-05-04. You can view files and clone it, but cannot push or open issues or pull requests.
Galaxy-Strike-Online/Galaxy-Strike-Online-main/GameServer/systems/SkillSystem.js

30 lines
1.1 KiB
JavaScript

/**
* SkillSystem — thin wrapper around ContentLoader for skill definitions.
* Player state is managed in-memory here.
*/
class SkillSystem {
constructor(contentLoader) {
this.loader = contentLoader;
this.playerSkills = new Map(); // userId -> player data
}
getAllSkills() { return this.loader.getAllSkills(); }
getSkill(id) { return this.loader.getSkill(id); }
getSkillsByCategory(cat) { return this.loader.getSkillsByCategory(cat); }
initializePlayerData(userId) {
if (this.playerSkills.has(userId)) return this.playerSkills.get(userId);
const defaultUnlocked = this.loader.getAllSkills()
.filter(s => s.defaultUnlocked)
.map(s => s.id);
const skills = {};
for (const id of defaultUnlocked) skills[id] = { level: 1, experience: 0 };
const data = { skillPoints: 0, skills, unlockedSkills: new Set(defaultUnlocked) };
this.playerSkills.set(userId, data);
return data;
}
getPlayerSkills(userId) { return this.initializePlayerData(userId); }
}
module.exports = SkillSystem;