24 lines
612 B
JavaScript
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);
|
|
}
|
|
}
|