feat: decimal shorthand

This commit is contained in:
TrèsAbhi committed 2024-04-05 09:20:07 -05:00
1 parent 4669fa6ec5
commit 7575f4581c
3 files changed
+46 -58

No files matched your search

+34 -52
View File
@@ -104,6 +104,7 @@ export default function Page() {
name, name,
display, display,
deltaType = 'higherIsBetter', deltaType = 'higherIsBetter',
decimals,
}: { }: {
name: string; name: string;
value: value:
@@ -115,6 +116,7 @@ export default function Page() {
member: Awaited<ReturnType<typeof tankCharacteristics>>, member: Awaited<ReturnType<typeof tankCharacteristics>>,
) => number | string | undefined; ) => number | string | undefined;
deltaType?: 'higherIsBetter' | 'lowerIsBetter'; deltaType?: 'higherIsBetter' | 'lowerIsBetter';
decimals?: number;
}) { }) {
const values = stats.map((stat) => const values = stats.map((stat) =>
typeof value === 'function' ? value(stat) : (stat[value] as number), typeof value === 'function' ? value(stat) : (stat[value] as number),
@@ -175,7 +177,11 @@ export default function Page() {
textAlign: 'center', textAlign: 'center',
}} }}
> >
{display ? display(stats[index]) : value} {display
? display(stats[index])
: decimals === undefined
? value
: value?.toFixed(decimals)}
</Text> </Text>
</Flex> </Flex>
</Table.Cell> </Table.Cell>
@@ -286,11 +292,7 @@ export default function Page() {
</Table.Header> </Table.Header>
<Table.Body> <Table.Body>
<Row <Row name="DPM" value="dpm" decimals={0} />
name="DPM"
value="dpm"
display={(stats) => Math.round(stats.dpm).toLocaleString()}
/>
<Row <Row
name="Reload" name="Reload"
deltaType="lowerIsBetter" deltaType="lowerIsBetter"
@@ -311,7 +313,7 @@ export default function Page() {
name="Intra-clip" name="Intra-clip"
deltaType="lowerIsBetter" deltaType="lowerIsBetter"
value={(stat) => stat.intraClip} value={(stat) => stat.intraClip}
display={(stats) => stats.intraClip?.toFixed(2)} decimals={2}
/> />
)} )}
<Row name="Caliber" value="caliber" /> <Row name="Caliber" value="caliber" />
@@ -323,90 +325,72 @@ export default function Page() {
name="Aim time" name="Aim time"
value="aimTime" value="aimTime"
deltaType="lowerIsBetter" deltaType="lowerIsBetter"
display={(stats) => stats.aimTime.toFixed(2)} decimals={2}
/> />
<Row <Row
name="Dispersion" name="Dispersion"
value="dispersion" value="dispersion"
deltaType="lowerIsBetter" deltaType="lowerIsBetter"
display={(stats) => stats.dispersion.toFixed(3)} decimals={3}
/> />
<Row <Row
name="Dispersion moving" name="Dispersion moving"
value="dispersionMoving" value="dispersionMoving"
deltaType="lowerIsBetter" deltaType="lowerIsBetter"
display={(stats) => stats.dispersionMoving.toFixed(3)} decimals={3}
/> />
<Row <Row
name="Dispersion hull traversing" name="Dispersion hull traversing"
value="dispersionHullTraversing" value="dispersionHullTraversing"
deltaType="lowerIsBetter" deltaType="lowerIsBetter"
display={(stats) => stats.dispersionHullTraversing.toFixed(3)} decimals={3}
/> />
<Row <Row
name="Dispersion turret traversing" name="Dispersion turret traversing"
value="dispersionTurretTraversing" value="dispersionTurretTraversing"
deltaType="lowerIsBetter" deltaType="lowerIsBetter"
display={(stats) => stats.dispersionTurretTraversing.toFixed(3)} decimals={3}
/> />
<Row <Row
name="Dispersion shooting" name="Dispersion shooting"
value="dispersionShooting" value="dispersionShooting"
deltaType="lowerIsBetter" deltaType="lowerIsBetter"
display={(stats) => stats.dispersionShooting.toFixed(3)} decimals={3}
/> />
<Row <Row
name="Dispersion gun damaged" name="Dispersion gun damaged"
value="dispersionGunDamaged" value="dispersionGunDamaged"
deltaType="lowerIsBetter" deltaType="lowerIsBetter"
display={(stats) => stats.dispersionGunDamaged.toFixed(3)} decimals={3}
/> />
<Row <Row name="Gun depression" value="gunDepression" decimals={1} />
name="Gun depression" <Row name="Gun elevation" value="gunElevation" decimals={1} />
value="gunDepression" <Row name="Speed forwards" value="speedForwards" decimals={0} />
display={(stats) => stats.gunDepression.toFixed(1)} <Row name="Speed backwards" value="speedBackwards" decimals={0} />
/> <Row name="Engine power" value="enginePower" decimals={0} />
<Row
name="Gun elevation"
value="gunElevation"
display={(stats) => stats.gunElevation.toFixed(1)}
/>
<Row name="Speed forwards" value="speedForwards" />
<Row name="Speed backwards" value="speedBackwards" />
<Row name="Engine power" value="enginePower" />
<Row <Row
name="Power to weight ratio on hard terrain" name="Power to weight ratio on hard terrain"
value="powerToWeightRatioHardTerrain" value="powerToWeightRatioHardTerrain"
display={(stats) => decimals={1}
stats.powerToWeightRatioHardTerrain.toFixed(1)
}
/> />
<Row <Row
name="Power to weight ratio on medium terrain" name="Power to weight ratio on medium terrain"
value="powerToWeightRatioMediumTerrain" value="powerToWeightRatioMediumTerrain"
display={(stats) => decimals={1}
stats.powerToWeightRatioMediumTerrain.toFixed(1)
}
/> />
<Row <Row
name="Power to weight ratio on soft terrain" name="Power to weight ratio on soft terrain"
value="powerToWeightRatioSoftTerrain" value="powerToWeightRatioSoftTerrain"
display={(stats) => decimals={1}
stats.powerToWeightRatioSoftTerrain.toFixed(1)
}
/> />
<Row name="Health" value="health" /> <Row name="Health" value="health" decimals={0} />
<Row <Row
name="Fire chance" name="Fire chance"
value="fireChance" value="fireChance"
deltaType="lowerIsBetter" deltaType="lowerIsBetter"
display={(stats) => (stats.fireChance * 100).toFixed(0)} display={(stats) => (stats.fireChance * 100).toFixed(0)}
/> />
<Row <Row name="View range" value="viewRange" decimals={0} />
name="View range"
value="viewRange"
display={(stats) => stats.viewRange.toFixed(0)}
/>
<Row <Row
name="Camouflage still" name="Camouflage still"
value="camouflageStill" value="camouflageStill"
@@ -440,29 +424,27 @@ export default function Page() {
/> />
<Row <Row
name="Width" name="Width"
value={(stats) => stats.tankSize[1]} value="width"
deltaType="lowerIsBetter" deltaType="lowerIsBetter"
display={(stats) => stats.tankSize[1].toFixed(1)} decimals={1}
/> />
<Row <Row
name="Height" name="Height"
value={(stats) => stats.tankSize[0]} value="height"
deltaType="lowerIsBetter" deltaType="lowerIsBetter"
display={(stats) => stats.tankSize[0].toFixed(1)} decimals={1}
/> />
<Row <Row
name="Length" name="Length"
value={(stats) => stats.tankSize[2]} value="length"
deltaType="lowerIsBetter" deltaType="lowerIsBetter"
display={(stats) => stats.tankSize[2].toFixed(1)} decimals={1}
/> />
<Row <Row
name="Volume" name="Volume"
value={(stats) => stats.tankSize.reduce((a, b) => a * b, 1)} value="volume"
deltaType="lowerIsBetter" deltaType="lowerIsBetter"
display={(stats) => decimals={1}
stats.tankSize.reduce((a, b) => a * b, 1).toFixed(1)
}
/> />
</Table.Body> </Table.Body>
</Table.Root> </Table.Root>
@@ -477,16 +477,16 @@ export function Characteristics() {
{stats.camouflageCaughtOnFire * 100} {stats.camouflageCaughtOnFire * 100}
</InfoWithDelta> </InfoWithDelta>
<Info name="Width" unit="m" decimals={0} deltaType="lowerIsBetter"> <Info name="Width" unit="m" decimals={0} deltaType="lowerIsBetter">
{stats.tankSize[1]} {stats.width}
</Info> </Info>
<Info name="Height" unit="m" decimals={0} deltaType="lowerIsBetter"> <Info name="Height" unit="m" decimals={0} deltaType="lowerIsBetter">
{stats.tankSize[0]} {stats.height}
</Info> </Info>
<Info name="Length" unit="m" decimals={0} deltaType="lowerIsBetter"> <Info name="Length" unit="m" decimals={0} deltaType="lowerIsBetter">
{stats.tankSize[2]} {stats.length}
</Info> </Info>
<Info name="Volume" unit="m" decimals={0} deltaType="lowerIsBetter"> <Info name="Volume" unit="m" decimals={0} deltaType="lowerIsBetter">
{stats.tankSize.reduce((a, b) => a * b, 1)} {stats.volume}
</Info> </Info>
</Flex> </Flex>
+8 -2
View File
@@ -410,7 +410,10 @@ export function tankCharacteristics(
tank.camouflage.moving * gun.camouflageLoss + camouflageSumMoving; tank.camouflage.moving * gun.camouflageLoss + camouflageSumMoving;
const camouflageCaughtOnFire = const camouflageCaughtOnFire =
tank.camouflage.onFire * tank.camouflage.still + camouflageSumStill; tank.camouflage.onFire * tank.camouflage.still + camouflageSumStill;
const tankSize = [size[0], size[2], size[1]]; const width = size[2];
const height = size[0];
const length = size[1];
const volume = width * height * length;
return { return {
dpm, dpm,
@@ -461,6 +464,9 @@ export function tankCharacteristics(
camouflageShootingStill, camouflageShootingStill,
camouflageShootingMoving, camouflageShootingMoving,
camouflageCaughtOnFire, camouflageCaughtOnFire,
tankSize, width,
height,
length,
volume,
}; };
} }