Fix lvl 99 bug

This commit is contained in:
Dominic Ferrando
2025-09-15 16:28:15 -04:00
parent f2ec4cb5e5
commit ea353e2185
3 changed files with 19 additions and 16 deletions
+10 -7
View File
@@ -11,8 +11,8 @@ import { Activity, Attribute, attributes, ActivityPerformance, getActivityAttrib
// //
type LevelCalculatorConfig = { type LevelCalculatorConfig = {
compressTo?: number;
expandIters?: number; expandIters?: number;
compressTo?: number;
} }
type LevelCalculatorOutput = { type LevelCalculatorOutput = {
@@ -26,8 +26,8 @@ export class LevelCalculator {
public constructor(standards: Standards, cfg: LevelCalculatorConfig = {}) { public constructor(standards: Standards, cfg: LevelCalculatorConfig = {}) {
this.cfg = { this.cfg = {
compressTo: cfg.compressTo ?? 100, expandIters: cfg.expandIters ?? 5,
expandIters: cfg.expandIters ?? 5 compressTo: cfg.compressTo ?? 100
} }
this.standards = standards; this.standards = standards;
} }
@@ -183,11 +183,13 @@ export class LevelCalculator {
if (Object.keys(lower).length !== Object.keys(upper).length) if (Object.keys(lower).length !== Object.keys(upper).length)
throw new Error("Cannot interpolate between varying number of levels"); throw new Error("Cannot interpolate between varying number of levels");
function lerp(lvl: number): number { const lerp = (lvl: string) => (lower[lvl] as number) + ((upper[lvl] as number) - (lower[lvl] as number)) * ratio;
return (lower[lvl] as number) + ((upper[lvl] as number) - (lower[lvl] as number)) * ratio;
const interpolatedLevels = {};
for (const lvl in lower) {
interpolatedLevels[lvl] = lerp(lvl);
} }
const interpolatedLevels = Object.keys(lower).map(lvl => lerp(+lvl));
return interpolatedLevels; return interpolatedLevels;
} }
@@ -282,8 +284,9 @@ export class Standards {
levels: Levels, levels: Levels,
i: number i: number
): Levels { ): Levels {
if (i == 0) if (i == 0) {
return levels; return levels;
}
const newLevels = {}; const newLevels = {};
let j = 1; let j = 1;
+8 -8
View File
@@ -4,8 +4,8 @@ import rawStandards from "../data/standards.json" assert { type: "json" }
const player: Player = { const player: Player = {
metrics: { metrics: {
age: 18, age: 25,
weight: lbToKg(200), weight: lbToKg(190),
gender: genders.MALE gender: genders.MALE
} }
}; };
@@ -14,30 +14,30 @@ const computedPerformances: ActivityPerformance[] = [
// STRENGTH // STRENGTH
{ {
activity: activities.BENCH_PRESS, activity: activities.BENCH_PRESS,
performance: lbToKg(200) performance: lbToKg(225)
}, },
{ {
activity: activities.DEADLIFT, activity: activities.DEADLIFT,
performance: lbToKg(200), performance: lbToKg(270),
}, },
{ {
activity: activities.BACK_SQUAT, activity: activities.BACK_SQUAT,
performance: lbToKg(200), performance: lbToKg(190),
}, },
// POWER // POWER
{ {
activity: activities.BROAD_JUMP, activity: activities.BROAD_JUMP,
performance: feetToCm(10) + inchesToCm(2), performance: feetToCm(105) + inchesToCm(5),
}, },
// ENDURANCE // ENDURANCE
{ {
activity: activities.RUN, activity: activities.RUN,
performance: minToMs(5) + secToMs(20), performance: minToMs(7) + secToMs(15),
}, },
// AGILITY // AGILITY
{ {
activity: activities.CONE_DRILL, activity: activities.CONE_DRILL,
performance: secToMs(5), performance: secToMs(9),
}, },
]; ];
+1 -1
View File
@@ -73,7 +73,7 @@ export interface ActivityPerformance {
performance: number; performance: number;
} }
export type Levels = Record<number, number> export type Levels = Record<string, number>
export interface Metrics { export interface Metrics {
age: number; age: number;