mirror of
https://github.com/blitzkit/blitzkit.git
synced 2026-10-24 12:09:51 +02:00
feat: move fire to first
This commit is contained in:
1 parent
4206286c21
commit
a8a50ac948
2 files changed
+138
-138
No files matched your search
@@ -69,78 +69,6 @@ export function Characteristics() {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<Flex direction="column" gap="4" style={{ width: '100%' }}>
|
<Flex direction="column" gap="4" style={{ width: '100%' }}>
|
||||||
<Flex direction="column" gap="2">
|
|
||||||
<Heading size="5">Survivability</Heading>
|
|
||||||
<InfoWithDelta name="Health" unit="hp">
|
|
||||||
{(tank.health + turret.health) * (hasImprovedAssembly ? 1.06 : 1)}
|
|
||||||
</InfoWithDelta>
|
|
||||||
<InfoWithDelta name="Fire chance" unit="%" deltaType="lowerIsBetter">
|
|
||||||
{Math.round(engine.fireChance * 100)}
|
|
||||||
</InfoWithDelta>
|
|
||||||
<InfoWithDelta name="View range" unit="m">
|
|
||||||
{turret.viewRange *
|
|
||||||
(hasImprovedOptics
|
|
||||||
? tank.type === 'tankDestroyer'
|
|
||||||
? 1.05
|
|
||||||
: tank.type === 'heavy'
|
|
||||||
? 1.07
|
|
||||||
: 1.1
|
|
||||||
: 1)}
|
|
||||||
</InfoWithDelta>
|
|
||||||
<Info name="Camouflage" unit="%" />
|
|
||||||
<InfoWithDelta
|
|
||||||
indent
|
|
||||||
name="Still"
|
|
||||||
decimals={2}
|
|
||||||
deltaType="lowerIsBetter"
|
|
||||||
>
|
|
||||||
{tank.camouflage.still *
|
|
||||||
100 *
|
|
||||||
(hasCamouflageNet
|
|
||||||
? tank.type === 'heavy'
|
|
||||||
? 1.03
|
|
||||||
: tank.type === 'tankDestroyer'
|
|
||||||
? 1.07
|
|
||||||
: 1.05
|
|
||||||
: 1)}
|
|
||||||
</InfoWithDelta>
|
|
||||||
<InfoWithDelta
|
|
||||||
indent
|
|
||||||
name="Moving"
|
|
||||||
decimals={2}
|
|
||||||
deltaType="lowerIsBetter"
|
|
||||||
>
|
|
||||||
{tank.camouflage.moving * 100}
|
|
||||||
</InfoWithDelta>
|
|
||||||
<InfoWithDelta
|
|
||||||
indent
|
|
||||||
name="Shooting still"
|
|
||||||
decimals={2}
|
|
||||||
deltaType="lowerIsBetter"
|
|
||||||
>
|
|
||||||
{tank.camouflage.still * gun.camouflageLoss * 100}
|
|
||||||
</InfoWithDelta>
|
|
||||||
<InfoWithDelta
|
|
||||||
indent
|
|
||||||
name="Shooting on move"
|
|
||||||
decimals={2}
|
|
||||||
deltaType="lowerIsBetter"
|
|
||||||
>
|
|
||||||
{tank.camouflage.moving * gun.camouflageLoss * 100}
|
|
||||||
</InfoWithDelta>
|
|
||||||
<InfoWithDelta
|
|
||||||
indent
|
|
||||||
name="On fire"
|
|
||||||
decimals={2}
|
|
||||||
deltaType="lowerIsBetter"
|
|
||||||
>
|
|
||||||
{tank.camouflage.onFire * tank.camouflage.still * 100}
|
|
||||||
</InfoWithDelta>
|
|
||||||
<Info name="Size" unit="m">
|
|
||||||
{size[0].toFixed(2)} x {size[2].toFixed(2)} x {size[1].toFixed(2)}
|
|
||||||
</Info>
|
|
||||||
</Flex>
|
|
||||||
|
|
||||||
<Flex direction="column" gap="2">
|
<Flex direction="column" gap="2">
|
||||||
<Heading size="5">Fire</Heading>
|
<Heading size="5">Fire</Heading>
|
||||||
<Info name="Gun type">{GUN_TYPE_NAMES[gun.type]}</Info>
|
<Info name="Gun type">{GUN_TYPE_NAMES[gun.type]}</Info>
|
||||||
@@ -481,6 +409,78 @@ export function Characteristics() {
|
|||||||
(hasImprovedControl ? 1.1 : 1)}
|
(hasImprovedControl ? 1.1 : 1)}
|
||||||
</InfoWithDelta>
|
</InfoWithDelta>
|
||||||
</Flex>
|
</Flex>
|
||||||
|
|
||||||
|
<Flex direction="column" gap="2">
|
||||||
|
<Heading size="5">Survivability</Heading>
|
||||||
|
<InfoWithDelta name="Health" unit="hp">
|
||||||
|
{(tank.health + turret.health) * (hasImprovedAssembly ? 1.06 : 1)}
|
||||||
|
</InfoWithDelta>
|
||||||
|
<InfoWithDelta name="Fire chance" unit="%" deltaType="lowerIsBetter">
|
||||||
|
{Math.round(engine.fireChance * 100)}
|
||||||
|
</InfoWithDelta>
|
||||||
|
<InfoWithDelta name="View range" unit="m">
|
||||||
|
{turret.viewRange *
|
||||||
|
(hasImprovedOptics
|
||||||
|
? tank.type === 'tankDestroyer'
|
||||||
|
? 1.05
|
||||||
|
: tank.type === 'heavy'
|
||||||
|
? 1.07
|
||||||
|
: 1.1
|
||||||
|
: 1)}
|
||||||
|
</InfoWithDelta>
|
||||||
|
<Info name="Camouflage" unit="%" />
|
||||||
|
<InfoWithDelta
|
||||||
|
indent
|
||||||
|
name="Still"
|
||||||
|
decimals={2}
|
||||||
|
deltaType="lowerIsBetter"
|
||||||
|
>
|
||||||
|
{tank.camouflage.still *
|
||||||
|
100 *
|
||||||
|
(hasCamouflageNet
|
||||||
|
? tank.type === 'heavy'
|
||||||
|
? 1.03
|
||||||
|
: tank.type === 'tankDestroyer'
|
||||||
|
? 1.07
|
||||||
|
: 1.05
|
||||||
|
: 1)}
|
||||||
|
</InfoWithDelta>
|
||||||
|
<InfoWithDelta
|
||||||
|
indent
|
||||||
|
name="Moving"
|
||||||
|
decimals={2}
|
||||||
|
deltaType="lowerIsBetter"
|
||||||
|
>
|
||||||
|
{tank.camouflage.moving * 100}
|
||||||
|
</InfoWithDelta>
|
||||||
|
<InfoWithDelta
|
||||||
|
indent
|
||||||
|
name="Shooting still"
|
||||||
|
decimals={2}
|
||||||
|
deltaType="lowerIsBetter"
|
||||||
|
>
|
||||||
|
{tank.camouflage.still * gun.camouflageLoss * 100}
|
||||||
|
</InfoWithDelta>
|
||||||
|
<InfoWithDelta
|
||||||
|
indent
|
||||||
|
name="Shooting on move"
|
||||||
|
decimals={2}
|
||||||
|
deltaType="lowerIsBetter"
|
||||||
|
>
|
||||||
|
{tank.camouflage.moving * gun.camouflageLoss * 100}
|
||||||
|
</InfoWithDelta>
|
||||||
|
<InfoWithDelta
|
||||||
|
indent
|
||||||
|
name="On fire"
|
||||||
|
decimals={2}
|
||||||
|
deltaType="lowerIsBetter"
|
||||||
|
>
|
||||||
|
{tank.camouflage.onFire * tank.camouflage.still * 100}
|
||||||
|
</InfoWithDelta>
|
||||||
|
<Info name="Size" unit="m">
|
||||||
|
{size[0].toFixed(2)} x {size[2].toFixed(2)} x {size[1].toFixed(2)}
|
||||||
|
</Info>
|
||||||
|
</Flex>
|
||||||
</Flex>
|
</Flex>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -448,72 +448,6 @@ export function TankSearch({ compact, onSelect = () => {} }: TankSearchProps) {
|
|||||||
</DropdownMenu.SubContent>
|
</DropdownMenu.SubContent>
|
||||||
</DropdownMenu.Sub>
|
</DropdownMenu.Sub>
|
||||||
|
|
||||||
<DropdownMenu.Sub>
|
|
||||||
<DropdownMenu.SubTrigger>Survivability</DropdownMenu.SubTrigger>
|
|
||||||
<DropdownMenu.SubContent>
|
|
||||||
<DropdownMenu.CheckboxItem
|
|
||||||
checked={sort.by === 'survivability.health'}
|
|
||||||
onClick={() => {
|
|
||||||
mutateTankopediaPersistent((draft) => {
|
|
||||||
draft.sort.by = 'survivability.health';
|
|
||||||
});
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
Health
|
|
||||||
</DropdownMenu.CheckboxItem>
|
|
||||||
<DropdownMenu.CheckboxItem
|
|
||||||
checked={sort.by === 'survivability.viewRange'}
|
|
||||||
onClick={() => {
|
|
||||||
mutateTankopediaPersistent((draft) => {
|
|
||||||
draft.sort.by = 'survivability.viewRange';
|
|
||||||
});
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
View range
|
|
||||||
</DropdownMenu.CheckboxItem>
|
|
||||||
<DropdownMenu.CheckboxItem
|
|
||||||
checked={sort.by === 'survivability.camouflageStill'}
|
|
||||||
onClick={() => {
|
|
||||||
mutateTankopediaPersistent((draft) => {
|
|
||||||
draft.sort.by = 'survivability.camouflageStill';
|
|
||||||
});
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
Camouflage
|
|
||||||
</DropdownMenu.CheckboxItem>
|
|
||||||
<DropdownMenu.CheckboxItem
|
|
||||||
checked={sort.by === 'survivability.camouflageMoving'}
|
|
||||||
onClick={() => {
|
|
||||||
mutateTankopediaPersistent((draft) => {
|
|
||||||
draft.sort.by = 'survivability.camouflageMoving';
|
|
||||||
});
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
Camouflage moving
|
|
||||||
</DropdownMenu.CheckboxItem>
|
|
||||||
<DropdownMenu.CheckboxItem
|
|
||||||
checked={sort.by === 'survivability.camouflageShooting'}
|
|
||||||
onClick={() => {
|
|
||||||
mutateTankopediaPersistent((draft) => {
|
|
||||||
draft.sort.by = 'survivability.camouflageShooting';
|
|
||||||
});
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
Camouflage shooting
|
|
||||||
</DropdownMenu.CheckboxItem>
|
|
||||||
<DropdownMenu.CheckboxItem
|
|
||||||
checked={sort.by === 'survivability.size'}
|
|
||||||
onClick={() => {
|
|
||||||
mutateTankopediaPersistent((draft) => {
|
|
||||||
draft.sort.by = 'survivability.size';
|
|
||||||
});
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
Size
|
|
||||||
</DropdownMenu.CheckboxItem>
|
|
||||||
</DropdownMenu.SubContent>
|
|
||||||
</DropdownMenu.Sub>
|
|
||||||
|
|
||||||
<DropdownMenu.Sub>
|
<DropdownMenu.Sub>
|
||||||
<DropdownMenu.SubTrigger>Fire</DropdownMenu.SubTrigger>
|
<DropdownMenu.SubTrigger>Fire</DropdownMenu.SubTrigger>
|
||||||
<DropdownMenu.SubContent>
|
<DropdownMenu.SubContent>
|
||||||
@@ -708,6 +642,72 @@ export function TankSearch({ compact, onSelect = () => {} }: TankSearchProps) {
|
|||||||
</DropdownMenu.SubContent>
|
</DropdownMenu.SubContent>
|
||||||
</DropdownMenu.Sub>
|
</DropdownMenu.Sub>
|
||||||
|
|
||||||
|
<DropdownMenu.Sub>
|
||||||
|
<DropdownMenu.SubTrigger>Survivability</DropdownMenu.SubTrigger>
|
||||||
|
<DropdownMenu.SubContent>
|
||||||
|
<DropdownMenu.CheckboxItem
|
||||||
|
checked={sort.by === 'survivability.health'}
|
||||||
|
onClick={() => {
|
||||||
|
mutateTankopediaPersistent((draft) => {
|
||||||
|
draft.sort.by = 'survivability.health';
|
||||||
|
});
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
Health
|
||||||
|
</DropdownMenu.CheckboxItem>
|
||||||
|
<DropdownMenu.CheckboxItem
|
||||||
|
checked={sort.by === 'survivability.viewRange'}
|
||||||
|
onClick={() => {
|
||||||
|
mutateTankopediaPersistent((draft) => {
|
||||||
|
draft.sort.by = 'survivability.viewRange';
|
||||||
|
});
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
View range
|
||||||
|
</DropdownMenu.CheckboxItem>
|
||||||
|
<DropdownMenu.CheckboxItem
|
||||||
|
checked={sort.by === 'survivability.camouflageStill'}
|
||||||
|
onClick={() => {
|
||||||
|
mutateTankopediaPersistent((draft) => {
|
||||||
|
draft.sort.by = 'survivability.camouflageStill';
|
||||||
|
});
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
Camouflage
|
||||||
|
</DropdownMenu.CheckboxItem>
|
||||||
|
<DropdownMenu.CheckboxItem
|
||||||
|
checked={sort.by === 'survivability.camouflageMoving'}
|
||||||
|
onClick={() => {
|
||||||
|
mutateTankopediaPersistent((draft) => {
|
||||||
|
draft.sort.by = 'survivability.camouflageMoving';
|
||||||
|
});
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
Camouflage moving
|
||||||
|
</DropdownMenu.CheckboxItem>
|
||||||
|
<DropdownMenu.CheckboxItem
|
||||||
|
checked={sort.by === 'survivability.camouflageShooting'}
|
||||||
|
onClick={() => {
|
||||||
|
mutateTankopediaPersistent((draft) => {
|
||||||
|
draft.sort.by = 'survivability.camouflageShooting';
|
||||||
|
});
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
Camouflage shooting
|
||||||
|
</DropdownMenu.CheckboxItem>
|
||||||
|
<DropdownMenu.CheckboxItem
|
||||||
|
checked={sort.by === 'survivability.size'}
|
||||||
|
onClick={() => {
|
||||||
|
mutateTankopediaPersistent((draft) => {
|
||||||
|
draft.sort.by = 'survivability.size';
|
||||||
|
});
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
Size
|
||||||
|
</DropdownMenu.CheckboxItem>
|
||||||
|
</DropdownMenu.SubContent>
|
||||||
|
</DropdownMenu.Sub>
|
||||||
|
|
||||||
<DropdownMenu.Separator />
|
<DropdownMenu.Separator />
|
||||||
|
|
||||||
<DropdownMenu.Label>Direction</DropdownMenu.Label>
|
<DropdownMenu.Label>Direction</DropdownMenu.Label>
|
||||||
|
|||||||
Reference in new issue
Block a user