initial
Some checks failed
CI / test (push) Has been cancelled

This commit is contained in:
2026-06-26 09:21:14 +01:00
commit 194330fb47
40 changed files with 11873 additions and 0 deletions

27
packages/shared/src/levels.ts Executable file
View File

@@ -0,0 +1,27 @@
export function xpForLevel(level: number): number {
if (level <= 1) return 0;
return Math.floor(100 * Math.pow(level - 1, 1.6));
}
export function levelFromXp(totalXp: number): number {
let level = 1;
while (xpForLevel(level + 1) <= totalXp && level < 150) {
level++;
}
return level;
}
export function xpProgressInLevel(totalXp: number): {
level: number;
current: number;
needed: number;
percent: number;
} {
const level = levelFromXp(totalXp);
const currentLevelXp = xpForLevel(level);
const nextLevelXp = xpForLevel(level + 1);
const current = totalXp - currentLevelXp;
const needed = nextLevelXp - currentLevelXp;
const percent = needed > 0 ? Math.min(100, (current / needed) * 100) : 100;
return { level, current, needed, percent };
}