Fix lvl 99 bug
This commit is contained in:
+10
-7
@@ -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
@@ -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
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user