1
0
Fork 0
spacetac/src/core/ShipLevel.ts

62 lines
1.4 KiB
TypeScript

module TS.SpaceTac {
/**
* Level and experience system for a ship.
*/
export class ShipLevel {
private level = 1;
private experience = 0;
/**
* Get current level
*/
get(): number {
return this.level;
}
/**
* Get the next experience goal to reach, to gain one level
*/
getNextGoal(): number {
return isum(imap(irange(this.level), i => (i + 1) * 100));
}
/**
* Force experience gain, to reach a given level
*/
forceLevel(level: number) {
while (this.level < level) {
this.addExperience(this.getNextGoal());
this.checkLevelUp();
}
}
/**
* Check for level-up
*
* Returns true if level changed
*/
checkLevelUp(): boolean {
let changed = false;
while (this.experience > this.getNextGoal()) {
this.level++;
changed = true;
}
return changed;
}
/**
* Add experience points
*/
addExperience(points: number) {
this.experience += points;
}
/**
* Get skill points given by current level
*/
getSkillPoints(): number {
return 5 + 5 * this.level;
}
}
}