mirror of
https://github.com/blitzkit/blitzkit.git
synced 2026-10-23 11:39:50 +02:00
fix: some linting for new proto 3
This commit is contained in:
1 parent
79bc259565
commit
f14ca394b5
29 files changed
+522
-418
No files matched your search
@@ -1,10 +1,10 @@
|
||||
import {
|
||||
asset,
|
||||
modelDefinitions,
|
||||
fetchModelDefinitions,
|
||||
normalizeBoundingBox,
|
||||
resolveDpm,
|
||||
resolveNearPenetration,
|
||||
tankIcon,
|
||||
TankType,
|
||||
unionBoundingBox,
|
||||
type TankDefinition,
|
||||
} from '@blitzkit/core';
|
||||
@@ -13,7 +13,6 @@ import { Flex, Link, Text } from '@radix-ui/themes';
|
||||
import { assignInlineVars } from '@vanilla-extract/dynamic';
|
||||
import { useMemo } from 'react';
|
||||
import { resolveReload } from '../../../core/blitzkit/resolveReload';
|
||||
import { useAwait } from '../../../hooks/useAwait';
|
||||
import { $tankopediaSort } from '../../../stores/tankopediaSort';
|
||||
import { classIcons } from '../../ClassIcon';
|
||||
import * as styles from './TankCard.css';
|
||||
@@ -23,8 +22,9 @@ interface TankCardProps {
|
||||
onSelect?: (tank: TankDefinition) => void;
|
||||
}
|
||||
|
||||
const modelDefinitions = await fetchModelDefinitions();
|
||||
|
||||
export function TankCard({ tank, onSelect }: TankCardProps) {
|
||||
const awaitedModelDefinitions = useAwait(modelDefinitions);
|
||||
const Icon = classIcons[tank.class];
|
||||
const tankopediaSort = useStore($tankopediaSort);
|
||||
const discriminator = useMemo(() => {
|
||||
@@ -32,25 +32,26 @@ export function TankCard({ tank, onSelect }: TankCardProps) {
|
||||
|
||||
const turret = tank.turrets.at(-1)!;
|
||||
const gun = turret.guns.at(-1)!;
|
||||
const shell0 = gun.shells[0];
|
||||
const shell1 = gun.shells[1];
|
||||
const shell0 = gun.gunType!.value.base.shells[0];
|
||||
const shell1 = gun.gunType!.value.base.shells[1];
|
||||
const tracks = tank.tracks.at(-1)!;
|
||||
const engine = tank.engines.at(-1)!;
|
||||
const tankModelDefinition = awaitedModelDefinitions[tank.id];
|
||||
const tankModelDefinition = modelDefinitions.models[tank.id];
|
||||
const turretModelDefinition = tankModelDefinition.turrets[turret.id];
|
||||
const gunModelDefinition = turretModelDefinition.guns[gun.id];
|
||||
const gunModelDefinition =
|
||||
turretModelDefinition.guns[gun.gunType!.value.base.id];
|
||||
|
||||
switch (tankopediaSort.by) {
|
||||
case 'fire.aimTime':
|
||||
return gun.aimTime.toFixed(2);
|
||||
return gun.gunType!.value.base.aimTime.toFixed(2);
|
||||
case 'fire.caliber':
|
||||
return shell0.caliber.toFixed(0);
|
||||
case 'fire.damage':
|
||||
return shell0.damage.armor.toFixed(0);
|
||||
return shell0.armorDamage.toFixed(0);
|
||||
case 'fire.dispersionMoving':
|
||||
return tracks.dispersion.move.toFixed(3);
|
||||
return tracks.dispersionMove.toFixed(3);
|
||||
case 'fire.dispersionStill':
|
||||
return gun.dispersion.base.toFixed(3);
|
||||
return gun.gunType!.value.base.dispersionBase.toFixed(3);
|
||||
case 'fire.dpm':
|
||||
return resolveDpm(gun, shell0).toFixed(0);
|
||||
case 'fire.dpmPremium':
|
||||
@@ -58,27 +59,25 @@ export function TankCard({ tank, onSelect }: TankCardProps) {
|
||||
case 'fire.reload':
|
||||
return resolveReload(gun).toFixed(2);
|
||||
case 'fire.standardPenetration':
|
||||
return resolveNearPenetration(shell0.penetration).toFixed(0);
|
||||
return shell0.penetration.near.toFixed(0);
|
||||
case 'fire.premiumPenetration':
|
||||
return shell1
|
||||
? resolveNearPenetration(shell1.penetration).toFixed(0)
|
||||
: '--';
|
||||
return shell1 ? shell1.penetration.near.toFixed(0) : '--';
|
||||
case 'fire.shellVelocity':
|
||||
return shell0.speed.toFixed(0);
|
||||
return shell0.velocity.toFixed(0);
|
||||
case 'fire.gunDepression':
|
||||
return (
|
||||
gunModelDefinition.pitch.max +
|
||||
(tankModelDefinition.turretRotation?.pitch ?? 0)
|
||||
(tankModelDefinition.initialTurretRotation?.pitch ?? 0)
|
||||
).toFixed(1);
|
||||
case 'fire.gunElevation':
|
||||
return (
|
||||
-gunModelDefinition.pitch.min -
|
||||
(tankModelDefinition.turretRotation?.pitch ?? 0)
|
||||
(tankModelDefinition.initialTurretRotation?.pitch ?? 0)
|
||||
).toFixed(1);
|
||||
case 'maneuverability.forwardsSpeed':
|
||||
return tank.speed.forwards.toFixed(0);
|
||||
return tank.speedForwards.toFixed(0);
|
||||
case 'maneuverability.backwardsSpeed':
|
||||
return tank.speed.backwards.toFixed(0);
|
||||
return tank.speedBackwards.toFixed(0);
|
||||
case 'maneuverability.power':
|
||||
return engine.power.toFixed(0);
|
||||
case 'maneuverability.powerToWeight':
|
||||
@@ -88,7 +87,7 @@ export function TankCard({ tank, onSelect }: TankCardProps) {
|
||||
engine.weight +
|
||||
tracks.weight +
|
||||
turret.weight +
|
||||
gun.weight)
|
||||
gun.gunType!.value.base.weight)
|
||||
).toFixed(1);
|
||||
case 'maneuverability.weight':
|
||||
return (
|
||||
@@ -96,7 +95,7 @@ export function TankCard({ tank, onSelect }: TankCardProps) {
|
||||
engine.weight +
|
||||
tracks.weight +
|
||||
turret.weight +
|
||||
gun.weight) /
|
||||
gun.gunType!.value.base.weight) /
|
||||
1000
|
||||
).toFixed(1);
|
||||
case 'maneuverability.traverseSpeed':
|
||||
@@ -106,11 +105,15 @@ export function TankCard({ tank, onSelect }: TankCardProps) {
|
||||
case 'survivability.viewRange':
|
||||
return turret.viewRange.toFixed(0);
|
||||
case 'survivability.camouflageStill':
|
||||
return (tank.camouflage.still * 100).toFixed(0);
|
||||
return (tank.camouflageStill * 100).toFixed(0);
|
||||
case 'survivability.camouflageMoving':
|
||||
return (tank.camouflage.moving * 100).toFixed(0);
|
||||
return (tank.camouflageMoving * 100).toFixed(0);
|
||||
case 'survivability.camouflageShooting':
|
||||
return (tank.camouflage.still * gun.camouflageLoss * 100).toFixed(0);
|
||||
return (
|
||||
tank.camouflageStill *
|
||||
gun.gunType!.value.base.camouflageLoss *
|
||||
100
|
||||
).toFixed(0);
|
||||
case 'survivability.volume': {
|
||||
const dimensions = normalizeBoundingBox(
|
||||
unionBoundingBox(
|
||||
@@ -139,13 +142,13 @@ export function TankCard({ tank, onSelect }: TankCardProps) {
|
||||
tabIndex={onSelect ? 0 : undefined}
|
||||
size="1"
|
||||
color={
|
||||
tank.treeType === 'collector'
|
||||
tank.type === TankType.COLLECTOR
|
||||
? 'blue'
|
||||
: tank.treeType === 'premium'
|
||||
: tank.type === TankType.PREMIUM
|
||||
? 'amber'
|
||||
: 'gray'
|
||||
}
|
||||
highContrast={tank.treeType === 'researchable'}
|
||||
highContrast={tank.type === TankType.RESEARCHABLE}
|
||||
onClick={onSelect ? () => onSelect(tank) : undefined}
|
||||
className={styles.card}
|
||||
style={assignInlineVars({
|
||||
|
||||
@@ -182,11 +182,11 @@ export const TankSearch = memo<TankSearchProps>(
|
||||
(a, b) =>
|
||||
resolveDpm(
|
||||
a.turrets.at(-1)!.guns.at(-1)!,
|
||||
a.turrets.at(-1)!.guns.at(-1)!.gunType!.value.gun.shells[0],
|
||||
a.turrets.at(-1)!.guns.at(-1)!.gunType!.value.base.shells[0],
|
||||
) -
|
||||
resolveDpm(
|
||||
b.turrets.at(-1)!.guns.at(-1)!,
|
||||
b.turrets.at(-1)!.guns.at(-1)!.gunType!.value.gun.shells[0],
|
||||
b.turrets.at(-1)!.guns.at(-1)!.gunType!.value.base.shells[0],
|
||||
),
|
||||
);
|
||||
break;
|
||||
@@ -194,17 +194,17 @@ export const TankSearch = memo<TankSearchProps>(
|
||||
case 'fire.dpmPremium':
|
||||
sorted = filtered.sort(
|
||||
(a, b) =>
|
||||
(a.turrets.at(-1)!.guns.at(-1)!.gunType!.value.gun.shells[1]
|
||||
(a.turrets.at(-1)!.guns.at(-1)!.gunType!.value.base.shells[1]
|
||||
? resolveDpm(
|
||||
a.turrets.at(-1)!.guns.at(-1)!,
|
||||
a.turrets.at(-1)!.guns.at(-1)!.gunType!.value.gun
|
||||
a.turrets.at(-1)!.guns.at(-1)!.gunType!.value.base
|
||||
.shells[1],
|
||||
)
|
||||
: 0) -
|
||||
(b.turrets.at(-1)!.guns.at(-1)!.gunType!.value.gun.shells[1]
|
||||
(b.turrets.at(-1)!.guns.at(-1)!.gunType!.value.base.shells[1]
|
||||
? resolveDpm(
|
||||
b.turrets.at(-1)!.guns.at(-1)!,
|
||||
b.turrets.at(-1)!.guns.at(-1)!.gunType!.value.gun
|
||||
b.turrets.at(-1)!.guns.at(-1)!.gunType!.value.base
|
||||
.shells[1],
|
||||
)
|
||||
: 0),
|
||||
@@ -222,9 +222,9 @@ export const TankSearch = memo<TankSearchProps>(
|
||||
case 'fire.caliber':
|
||||
sorted = filtered.sort(
|
||||
(a, b) =>
|
||||
a.turrets.at(-1)!.guns.at(-1)!.gunType!.value.gun.shells[0]
|
||||
a.turrets.at(-1)!.guns.at(-1)!.gunType!.value.base.shells[0]
|
||||
.caliber -
|
||||
b.turrets.at(-1)!.guns.at(-1)!.gunType!.value.gun.shells[0]
|
||||
b.turrets.at(-1)!.guns.at(-1)!.gunType!.value.base.shells[0]
|
||||
.caliber,
|
||||
);
|
||||
break;
|
||||
@@ -232,9 +232,9 @@ export const TankSearch = memo<TankSearchProps>(
|
||||
case 'fire.standardPenetration':
|
||||
sorted = filtered.sort(
|
||||
(a, b) =>
|
||||
a.turrets.at(-1)!.guns.at(-1)!.gunType!.value.gun.shells[0]
|
||||
a.turrets.at(-1)!.guns.at(-1)!.gunType!.value.base.shells[0]
|
||||
.penetration.near -
|
||||
b.turrets.at(-1)!.guns.at(-1)!.gunType!.value.gun.shells[0]
|
||||
b.turrets.at(-1)!.guns.at(-1)!.gunType!.value.base.shells[0]
|
||||
.penetration.near,
|
||||
);
|
||||
break;
|
||||
@@ -242,9 +242,9 @@ export const TankSearch = memo<TankSearchProps>(
|
||||
case 'fire.premiumPenetration':
|
||||
sorted = filtered.sort(
|
||||
(a, b) =>
|
||||
(a.turrets.at(-1)!.guns.at(-1)!.gunType!.value.gun.shells[1]
|
||||
(a.turrets.at(-1)!.guns.at(-1)!.gunType!.value.base.shells[1]
|
||||
?.penetration.near ?? 0) -
|
||||
(b.turrets.at(-1)!.guns.at(-1)!.gunType!.value.gun.shells[1]
|
||||
(b.turrets.at(-1)!.guns.at(-1)!.gunType!.value.base.shells[1]
|
||||
?.penetration.near ?? 0),
|
||||
);
|
||||
break;
|
||||
@@ -252,9 +252,9 @@ export const TankSearch = memo<TankSearchProps>(
|
||||
case 'fire.damage':
|
||||
sorted = filtered.sort(
|
||||
(a, b) =>
|
||||
a.turrets.at(-1)!.guns.at(-1)!.gunType!.value.gun.shells[0]
|
||||
a.turrets.at(-1)!.guns.at(-1)!.gunType!.value.base.shells[0]
|
||||
.armorDamage -
|
||||
b.turrets.at(-1)!.guns.at(-1)!.gunType!.value.gun.shells[0]
|
||||
b.turrets.at(-1)!.guns.at(-1)!.gunType!.value.base.shells[0]
|
||||
.armorDamage,
|
||||
);
|
||||
break;
|
||||
@@ -262,9 +262,9 @@ export const TankSearch = memo<TankSearchProps>(
|
||||
case 'fire.shellVelocity':
|
||||
sorted = filtered.sort(
|
||||
(a, b) =>
|
||||
a.turrets.at(-1)!.guns.at(-1)!.gunType!.value.gun.shells[0]
|
||||
a.turrets.at(-1)!.guns.at(-1)!.gunType!.value.base.shells[0]
|
||||
.velocity -
|
||||
b.turrets.at(-1)!.guns.at(-1)!.gunType!.value.gun.shells[0]
|
||||
b.turrets.at(-1)!.guns.at(-1)!.gunType!.value.base.shells[0]
|
||||
.velocity,
|
||||
);
|
||||
break;
|
||||
@@ -272,17 +272,17 @@ export const TankSearch = memo<TankSearchProps>(
|
||||
case 'fire.aimTime':
|
||||
sorted = filtered.sort(
|
||||
(a, b) =>
|
||||
a.turrets.at(-1)!.guns.at(-1)!.gunType!.value.gun.aimTime -
|
||||
b.turrets.at(-1)!.guns.at(-1)!.gunType!.value.gun.aimTime,
|
||||
a.turrets.at(-1)!.guns.at(-1)!.gunType!.value.base.aimTime -
|
||||
b.turrets.at(-1)!.guns.at(-1)!.gunType!.value.base.aimTime,
|
||||
);
|
||||
break;
|
||||
|
||||
case 'fire.dispersionStill':
|
||||
sorted = filtered.sort(
|
||||
(a, b) =>
|
||||
a.turrets.at(-1)!.guns.at(-1)!.gunType!.value.gun
|
||||
a.turrets.at(-1)!.guns.at(-1)!.gunType!.value.base
|
||||
.dispersionBase -
|
||||
b.turrets.at(-1)!.guns.at(-1)!.gunType!.value.gun
|
||||
b.turrets.at(-1)!.guns.at(-1)!.gunType!.value.base
|
||||
.dispersionBase,
|
||||
);
|
||||
break;
|
||||
@@ -299,12 +299,12 @@ export const TankSearch = memo<TankSearchProps>(
|
||||
sorted = filtered.sort(
|
||||
(a, b) =>
|
||||
modelDefinitions.models[a.id].turrets[a.turrets.at(-1)!.id]
|
||||
.guns[a.turrets.at(-1)!.guns.at(-1)!.gunType!.value.gun.id]
|
||||
.guns[a.turrets.at(-1)!.guns.at(-1)!.gunType!.value.base.id]
|
||||
.pitch.max +
|
||||
(modelDefinitions.models[a.id].initialTurretRotation?.pitch ??
|
||||
0) -
|
||||
modelDefinitions.models[b.id].turrets[b.turrets.at(-1)!.id]
|
||||
.guns[b.turrets.at(-1)!.guns.at(-1)!.gunType!.value.gun.id]
|
||||
.guns[b.turrets.at(-1)!.guns.at(-1)!.gunType!.value.base.id]
|
||||
.pitch.max -
|
||||
(modelDefinitions.models[b.id].initialTurretRotation?.pitch ??
|
||||
0),
|
||||
@@ -315,12 +315,12 @@ export const TankSearch = memo<TankSearchProps>(
|
||||
sorted = filtered.sort(
|
||||
(a, b) =>
|
||||
modelDefinitions.models[b.id].turrets[b.turrets.at(-1)!.id]
|
||||
.guns[b.turrets.at(-1)!.guns.at(-1)!.gunType!.value.gun.id]
|
||||
.guns[b.turrets.at(-1)!.guns.at(-1)!.gunType!.value.base.id]
|
||||
.pitch.min +
|
||||
(modelDefinitions.models[b.id].initialTurretRotation?.pitch ??
|
||||
0) -
|
||||
modelDefinitions.models[a.id].turrets[a.turrets.at(-1)!.id]
|
||||
.guns[a.turrets.at(-1)!.guns.at(-1)!.gunType!.value.gun.id]
|
||||
.guns[a.turrets.at(-1)!.guns.at(-1)!.gunType!.value.base.id]
|
||||
.pitch.min -
|
||||
(modelDefinitions.models[a.id].initialTurretRotation?.pitch ??
|
||||
0),
|
||||
@@ -351,13 +351,13 @@ export const TankSearch = memo<TankSearchProps>(
|
||||
a.engines.at(-1)!.weight +
|
||||
a.tracks.at(-1)!.weight +
|
||||
a.turrets.at(-1)!.weight +
|
||||
a.turrets.at(-1)!.guns.at(-1)!.gunType!.value.gun.weight) -
|
||||
a.turrets.at(-1)!.guns.at(-1)!.gunType!.value.base.weight) -
|
||||
b.engines.at(-1)!.power /
|
||||
(b.weight +
|
||||
b.engines.at(-1)!.weight +
|
||||
b.tracks.at(-1)!.weight +
|
||||
b.turrets.at(-1)!.weight +
|
||||
b.turrets.at(-1)!.guns.at(-1)!.gunType!.value.gun.weight),
|
||||
b.turrets.at(-1)!.guns.at(-1)!.gunType!.value.base.weight),
|
||||
);
|
||||
break;
|
||||
|
||||
@@ -368,12 +368,12 @@ export const TankSearch = memo<TankSearchProps>(
|
||||
a.engines.at(-1)!.weight +
|
||||
a.tracks.at(-1)!.weight +
|
||||
a.turrets.at(-1)!.weight +
|
||||
a.turrets.at(-1)!.guns.at(-1)!.gunType!.value.gun.weight -
|
||||
a.turrets.at(-1)!.guns.at(-1)!.gunType!.value.base.weight -
|
||||
(b.weight +
|
||||
b.engines.at(-1)!.weight +
|
||||
b.tracks.at(-1)!.weight +
|
||||
b.turrets.at(-1)!.weight +
|
||||
b.turrets.at(-1)!.guns.at(-1)!.gunType!.value.gun.weight),
|
||||
b.turrets.at(-1)!.guns.at(-1)!.gunType!.value.base.weight),
|
||||
);
|
||||
break;
|
||||
|
||||
|
||||
Reference in new issue
Block a user