fix: some linting for new proto 4

This commit is contained in:
TrèsAbhi committed 2024-10-05 20:55:44 -05:00
1 parent f14ca394b5
commit 53a9c5f2de
22 files changed
+155 -133

No files matched your search

@@ -1,4 +1,4 @@
import { asset } from '@blitzkit/core';
import { asset, TankType } from '@blitzkit/core';
import { Flex, Heading, Slider, TextField } from '@radix-ui/themes';
import { clamp, debounce } from 'lodash-es';
import { useEffect, useMemo, useRef, useState } from 'react';
@@ -78,7 +78,7 @@ export function Miscellaneous() {
}}
/>
{tank.treeType === 'researchable' && (
{tank.type === TankType.RESEARCHABLE && (
<Flex
align="center"
direction="column"
@@ -37,26 +37,28 @@ export function Controls() {
const antagonistTurretModelDefinition =
antagonistModelDefinition.turrets[antagonist.turret.id];
const protagonistGunModelDefinition =
protagonistTurretModelDefinition.guns[protagonist.gun.id];
protagonistTurretModelDefinition.guns[
protagonist.gun.gunType!.value.base.id
];
const protagonistHullOrigin = new Vector3(
protagonistTrackModelDefinition.origin[0],
protagonistTrackModelDefinition.origin[1],
-protagonistTrackModelDefinition.origin[2],
protagonistTrackModelDefinition.origin.x,
protagonistTrackModelDefinition.origin.y,
-protagonistTrackModelDefinition.origin.z,
);
const protagonistTurretOrigin = new Vector3(
protagonistModelDefinition.turretOrigin[0],
protagonistModelDefinition.turretOrigin[1],
-protagonistModelDefinition.turretOrigin[2],
protagonistModelDefinition.turretOrigin.x,
protagonistModelDefinition.turretOrigin.y,
-protagonistModelDefinition.turretOrigin.z,
);
const protagonistGunOrigin = new Vector3(
protagonistTurretModelDefinition.gunOrigin[0],
protagonistTurretModelDefinition.gunOrigin[1],
-protagonistTurretModelDefinition.gunOrigin[2],
protagonistTurretModelDefinition.gunOrigin.x,
protagonistTurretModelDefinition.gunOrigin.y,
-protagonistTurretModelDefinition.gunOrigin.z,
);
const antagonistGunHeight =
protagonistTrackModelDefinition.origin[1] +
antagonistModelDefinition.turretOrigin[1] +
antagonistTurretModelDefinition.gunOrigin[1];
protagonistTrackModelDefinition.origin.y +
antagonistModelDefinition.turretOrigin.y +
antagonistTurretModelDefinition.gunOrigin.y;
const [autoRotate, setAutoRotate] = useState(true);
useEffect(() => {
@@ -76,7 +78,7 @@ export function Controls() {
const duel = duelStore.getState();
const hasImprovedVerticalStabilizer = await hasEquipment(
122,
duel.protagonist.tank.equipment,
duel.protagonist.tank.equipmentPreset,
duel.protagonist.equipmentMatrix,
);
@@ -1,4 +1,4 @@
import { BlitzkitResponse, StarsInt } from '@blitzkit/core';
import type { BlitzkitResponse, StarsInt } from '@blitzkit/core';
import { PaperPlaneIcon } from '@radix-ui/react-icons';
import {
AlertDialog,
@@ -9,8 +9,9 @@ import {
Text,
} from '@radix-ui/themes';
import { useState } from 'react';
import * as App from '../../../../../../../../../../stores/app';
import * as Duel from '../../../../../../../../../../stores/duel';
import { App } from '../../../../../../stores/app';
import { Duel } from '../../../../../../stores/duel';
import { $wargamingLogin } from '../../../../../../stores/wargamingLogin';
import { Stars } from '../../Stars';
export function VoteCaster() {
@@ -98,9 +99,9 @@ export function VoteCaster() {
survivability === null)
}
onClick={() => {
const wargaming = appStore.getState().logins.wargaming;
const wargaming = $wargamingLogin.get();
if (!wargaming) {
if (!wargaming.token) {
return setShowDialogue(false);
}
@@ -1,8 +1,10 @@
import {
assertSecret,
asset,
modelDefinitions,
provisionDefinitions,
fetchModelDefinitions,
fetchProvisionDefinitions,
TankPriceType,
TankType,
} from '@blitzkit/core';
import strings from '@blitzkit/core/lang/en-US.json';
import { ChevronLeftIcon, MixIcon, UpdateIcon } from '@radix-ui/react-icons';
@@ -17,8 +19,8 @@ import { ScienceIcon } from '../../ScienceIcon';
import { TankSearch } from '../../TankSearch';
import { Listing } from './components/Listing';
const awaitedProvisionDefinitions = await provisionDefinitions;
const awaitedModelDefinitions = await modelDefinitions;
const provisionDefinitions = await fetchProvisionDefinitions();
const modelDefinitions = await fetchModelDefinitions();
export function MetaSection() {
const developerMode = App.useDeferred((state) => state.developerMode, false);
@@ -78,12 +80,12 @@ export function MetaSection() {
onSelect={(tank) => {
setShowSwapDialog(false);
mutateTankopediaEphemeral((draft) => {
draft.model = awaitedModelDefinitions[tank.id];
draft.model = modelDefinitions.models[tank.id];
});
mutateDuel((draft) => {
draft.protagonist = tankToDuelMember(
tank,
awaitedProvisionDefinitions,
provisionDefinitions,
);
});
@@ -130,14 +132,14 @@ export function MetaSection() {
<Listing
label="Type"
color={
protagonist.treeType === 'collector'
protagonist.type === TankType.COLLECTOR
? 'blue'
: protagonist.treeType === 'premium'
: protagonist.type === TankType.PREMIUM
? 'amber'
: undefined
}
>
{strings.common.tree_type[protagonist.treeType]}
{strings.common.tree_type[protagonist.type]}
</Listing>
</Flex>
@@ -147,7 +149,7 @@ export function MetaSection() {
<Code>{protagonist.id}</Code>
</Listing>
)}
{protagonist.treeType === 'premium' && (
{protagonist.type === TankType.PREMIUM && (
<Listing label="Purchase price">
<Flex align="center" gap="1">
{protagonist.price.value / 400}
@@ -161,7 +163,7 @@ export function MetaSection() {
)}
<Listing
label={`${
protagonist.treeType === 'researchable'
protagonist.type === TankType.RESEARCHABLE
? 'Purchase'
: 'Restoration'
} price`}
@@ -170,10 +172,12 @@ export function MetaSection() {
{protagonist.price.value.toLocaleString()}
<img
style={{ width: '1em', height: '1em' }}
alt={protagonist.price.type}
alt={TankPriceType[protagonist.price.type]}
src={asset(
`icons/currencies/${
protagonist.price.type === 'gold' ? 'gold' : 'silver'
protagonist.price.type === TankPriceType.GOLD
? 'gold'
: 'silver'
}.webp`,
)}
/>
@@ -184,10 +188,12 @@ export function MetaSection() {
{(protagonist.price.value / 2).toLocaleString()}
<img
style={{ width: '1em', height: '1em' }}
alt={protagonist.price.type}
alt={TankPriceType[protagonist.price.type]}
src={asset(
`icons/currencies/${
protagonist.price.type === 'gold' ? 'gold' : 'silver'
protagonist.price.type === TankPriceType.GOLD
? 'gold'
: 'silver'
}.webp`,
)}
/>
@@ -1,8 +1,8 @@
import {
asset,
averageDefinitions,
fetchAverageDefinitions,
fetchTankDefinitions,
formatCompact,
tankDefinitions,
TIER_ROMAN_NUMERALS,
} from '@blitzkit/core';
import { Box, Flex, Link, Text } from '@radix-ui/themes';
@@ -14,13 +14,13 @@ interface NodeProps {
highlight?: boolean;
}
const awaitedTankDefinitions = await tankDefinitions;
const awaitedAverageDefinitions = await averageDefinitions;
const tankDefinitions = await fetchTankDefinitions();
const averageDefinitions = await fetchAverageDefinitions();
export function Node({ id, highlight, nextIds }: NodeProps) {
const xpMultiplier = TankopediaEphemeral.use((state) => state.xpMultiplier);
const tank = awaitedTankDefinitions[id];
const nextTanks = nextIds?.map((id) => awaitedTankDefinitions[id]);
const tank = tankDefinitions.tanks[id];
const nextTanks = nextIds?.map((id) => tankDefinitions.tanks[id]);
const thisTankXp =
tank.xp === undefined || tank.tier === 1 ? 0 : tank.xp! / xpMultiplier;
const nextTanksXp = nextTanks?.reduce(
@@ -29,7 +29,7 @@ export function Node({ id, highlight, nextIds }: NodeProps) {
(tank.xp === undefined || tank.tier === 1 ? 0 : tank.xp! / xpMultiplier),
0,
);
const averages = awaitedAverageDefinitions.averages[tank.id]?.mu;
const averages = averageDefinitions.averages[tank.id]?.mu;
const averageXp = averages ? averages.xp / averages.battles : undefined;
const games =
averages && nextTanks ? Math.round(nextTanksXp! / averageXp!) : undefined;
@@ -1,4 +1,4 @@
import { asset, imgur, tankDefinitions } from '@blitzkit/core';
import { asset, fetchTankDefinitions, imgur, TankType } from '@blitzkit/core';
import { CaretLeftIcon, CaretRightIcon, PlusIcon } from '@radix-ui/react-icons';
import { Flex, Heading, IconButton, ScrollArea, Text } from '@radix-ui/themes';
import { Fragment, useEffect, useMemo, useRef, useState } from 'react';
@@ -9,7 +9,7 @@ import { Node } from './components/Node';
type Line = number[];
const awaitedTankDefinitions = await tankDefinitions;
const tankDefinitions = await fetchTankDefinitions();
export const XP_MULTIPLIERS = [1, 2, 3, 4, 5, 10];
@@ -20,7 +20,7 @@ export function TechTreeSection() {
const container = useRef<HTMLDivElement>(null);
const lines = useMemo(() => {
function extend(line: Line): Line[] {
const root = awaitedTankDefinitions[line.at(-1)!];
const root = tankDefinitions.tanks[line.at(-1)!];
if (root.ancestors === undefined || root.tier === 1) {
return [line];
@@ -28,7 +28,7 @@ export function TechTreeSection() {
if (root.ancestors.length === 1 || root.tier === 2) {
line.push(
root.ancestors.find(
(ancestor) => !awaitedTankDefinitions[ancestor].deprecated,
(ancestor) => !tankDefinitions.tanks[ancestor].deprecated,
) ?? root.ancestors[0],
);
return extend(line);
@@ -53,14 +53,14 @@ export function TechTreeSection() {
const totalXp = line.reduce(
(xp, id) =>
xp +
(awaitedTankDefinitions[id].xp === undefined ||
awaitedTankDefinitions[id].tier === 1
(tankDefinitions.tanks[id].xp === undefined ||
tankDefinitions.tanks[id].tier === 1
? 0
: awaitedTankDefinitions[id].xp),
: tankDefinitions.tanks[id].xp),
0,
);
const totalCredits = line.reduce(
(credits, id) => credits + awaitedTankDefinitions[id].price.value,
(credits, id) => credits + tankDefinitions.tanks[id].price.value,
0,
);
@@ -70,7 +70,7 @@ export function TechTreeSection() {
});
if (
master.treeType !== 'researchable' ||
master.type !== TankType.RESEARCHABLE ||
master.ancestors === undefined ||
master.ancestors.length === 0
) {
@@ -163,7 +163,7 @@ export function TechTreeSection() {
<Flex align="center" gap="2" justify="center" p="4">
{line.map((id, index) => {
const last = index === line.length - 1;
const tank = awaitedTankDefinitions[id];
const tank = tankDefinitions.tanks[id];
return (
<Fragment key={id}>
@@ -1,15 +1,15 @@
import { reviews, youtubers } from '@blitzkit/core';
import { fetchReviews, youtubers } from '@blitzkit/core';
import { Box, Flex, Heading, Link, Text } from '@radix-ui/themes';
import { Var } from '../../core/radix/var';
import { Duel } from '../../stores/duel';
import { PageWrapper } from '../PageWrapper';
import { VerifiedIcon } from '../VerifiedIcon';
const awaitedReviews = await reviews;
const reviews = await fetchReviews();
export function VideoSection() {
const tank = Duel.use((state) => state.protagonist.tank);
const videos = awaitedReviews.reviews[tank.id]?.videos;
const videos = reviews.reviews[tank.id]?.videos;
if (!videos) return null;