45 lines
1.1 KiB
JavaScript
45 lines
1.1 KiB
JavaScript
import { Component } from '../core/Component.js';
|
|
|
|
/**
|
|
* Tracks progress toward learning skills
|
|
* Need to absorb multiple enemies with the same skill to learn it
|
|
*/
|
|
export class SkillProgress extends Component {
|
|
constructor() {
|
|
super('SkillProgress');
|
|
this.skillProgress = new Map(); // skillId -> count (how many times absorbed)
|
|
this.requiredAbsorptions = 5; // Need to absorb 5 enemies with a skill to learn it
|
|
}
|
|
|
|
/**
|
|
* Add progress toward learning a skill
|
|
*/
|
|
addSkillProgress(skillId) {
|
|
const current = this.skillProgress.get(skillId) || 0;
|
|
this.skillProgress.set(skillId, current + 1);
|
|
return this.skillProgress.get(skillId);
|
|
}
|
|
|
|
/**
|
|
* Check if skill can be learned
|
|
*/
|
|
canLearnSkill(skillId) {
|
|
const progress = this.skillProgress.get(skillId) || 0;
|
|
return progress >= this.requiredAbsorptions;
|
|
}
|
|
|
|
/**
|
|
* Get progress for a skill
|
|
*/
|
|
getSkillProgress(skillId) {
|
|
return this.skillProgress.get(skillId) || 0;
|
|
}
|
|
|
|
/**
|
|
* Get all skill progress
|
|
*/
|
|
getAllProgress() {
|
|
return this.skillProgress;
|
|
}
|
|
}
|
|
|