mirror of
https://github.com/blitzkit/blitzkit.git
synced 2026-11-02 07:20:36 +01:00
feat: decimal shorthand
This commit is contained in:
1 parent
4669fa6ec5
commit
7575f4581c
3 files changed
+46
-58
No files matched your search
@@ -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>
|
||||||
|
|
||||||
|
|||||||
@@ -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,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
Reference in new issue
Block a user