diff --git a/calculator/calc.ts b/calculator/calc.ts index 547582c..2e6168f 100644 --- a/calculator/calc.ts +++ b/calculator/calc.ts @@ -11,8 +11,8 @@ import { Activity, Attribute, attributes, ActivityPerformance, getActivityAttrib // type LevelCalculatorConfig = { - compressTo?: number; expandIters?: number; + compressTo?: number; } type LevelCalculatorOutput = { @@ -26,8 +26,8 @@ export class LevelCalculator { public constructor(standards: Standards, cfg: LevelCalculatorConfig = {}) { this.cfg = { - compressTo: cfg.compressTo ?? 100, - expandIters: cfg.expandIters ?? 5 + expandIters: cfg.expandIters ?? 5, + compressTo: cfg.compressTo ?? 100 } this.standards = standards; } @@ -183,11 +183,13 @@ export class LevelCalculator { if (Object.keys(lower).length !== Object.keys(upper).length) throw new Error("Cannot interpolate between varying number of levels"); - function lerp(lvl: number): number { - return (lower[lvl] as number) + ((upper[lvl] as number) - (lower[lvl] as number)) * ratio; + const lerp = (lvl: string) => (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; } @@ -282,8 +284,9 @@ export class Standards { levels: Levels, i: number ): Levels { - if (i == 0) + if (i == 0) { return levels; + } const newLevels = {}; let j = 1; diff --git a/calculator/test.ts b/calculator/test.ts index f243268..d5dbd49 100644 --- a/calculator/test.ts +++ b/calculator/test.ts @@ -4,8 +4,8 @@ import rawStandards from "../data/standards.json" assert { type: "json" } const player: Player = { metrics: { - age: 18, - weight: lbToKg(200), + age: 25, + weight: lbToKg(190), gender: genders.MALE } }; @@ -14,30 +14,30 @@ const computedPerformances: ActivityPerformance[] = [ // STRENGTH { activity: activities.BENCH_PRESS, - performance: lbToKg(200) + performance: lbToKg(225) }, { activity: activities.DEADLIFT, - performance: lbToKg(200), + performance: lbToKg(270), }, { activity: activities.BACK_SQUAT, - performance: lbToKg(200), + performance: lbToKg(190), }, // POWER { activity: activities.BROAD_JUMP, - performance: feetToCm(10) + inchesToCm(2), + performance: feetToCm(105) + inchesToCm(5), }, // ENDURANCE { activity: activities.RUN, - performance: minToMs(5) + secToMs(20), + performance: minToMs(7) + secToMs(15), }, // AGILITY { activity: activities.CONE_DRILL, - performance: secToMs(5), + performance: secToMs(9), }, ]; diff --git a/calculator/util.ts b/calculator/util.ts index 737dea2..f2772b6 100644 --- a/calculator/util.ts +++ b/calculator/util.ts @@ -73,7 +73,7 @@ export interface ActivityPerformance { performance: number; } -export type Levels = Record +export type Levels = Record export interface Metrics { age: number;