Aethelgard/js/managers/XPManager.js

24 lines
612 B
JavaScript

export default class XPManager extends Phaser.Events.EventEmitter {
constructor(scene) {
super();
this.scene = scene;
this.xp = 0;
this.level = 1;
this.nextLevelXP = this.calculateNextThreshold();
}
calculateNextThreshold() {
return Math.round(100 * Math.pow(this.level, 1.5)); // simple exponential curve
}
addXP(amount) {
this.xp += amount;
if (this.xp >= this.nextLevelXP) {
this.level++;
this.nextLevelXP = this.calculateNextThreshold();
this.emit('levelup', this.level);
}
this.scene.uiManager.updateXP(this.xp, this.nextLevelXP);
}
}