feat: make it compile!

This commit is contained in:
tresabhi committed 2025-03-19 01:01:19 -05:00
1 parent 90a64d4ccf
commit 6319e438b1
24 files changed
+138 -175

No files matched your search

@@ -55,7 +55,7 @@ function LayerEntry({
<Text size="2" color="gray">
{literals(
strings.website.tools.tankopedia.sandbox.dynamic.shot_card.stats
strings.website.tools.tanks.sandbox.dynamic.shot_card.stats
.ricochet_loss,
[Math.max(-100, -50 * layer.distance).toFixed(0)],
)}
@@ -78,7 +78,7 @@ function LayerEntry({
{literals(
angle === undefined
? strings.common.units.mm
: strings.website.tools.tankopedia.sandbox.dynamic.shot_card
: strings.website.tools.tanks.sandbox.dynamic.shot_card
.stats.thickness_and_angle,
[
Math.round(layer.thicknessAngled).toLocaleString(locale),
@@ -89,7 +89,7 @@ function LayerEntry({
<Text size="2" color="gray">
{literals(
strings.website.tools.tankopedia.sandbox.dynamic.shot_card.stats
strings.website.tools.tanks.sandbox.dynamic.shot_card.stats
.nominal,
[Math.round(layer.thickness).toLocaleString(locale)],
)}
@@ -120,7 +120,7 @@ export function ShotDisplayCard({ shot, ...props }: ShotDisplayCardProps) {
<Flex direction="column" gap="1">
<Text color={inTitleColor} weight="bold">
{literals(
strings.website.tools.tankopedia.sandbox.dynamic.shot_card.status[
strings.website.tools.tanks.sandbox.dynamic.shot_card.status[
shot.in.status
],
[Math.round(shot.damage).toLocaleString(locale)],
@@ -130,7 +130,7 @@ export function ShotDisplayCard({ shot, ...props }: ShotDisplayCardProps) {
<Flex direction="column">
{shot.in.layers.map((layer, index) => {
const layerName =
strings.website.tools.tankopedia.sandbox.dynamic.shot_card
strings.website.tools.tanks.sandbox.dynamic.shot_card
.element[
layer.type === ArmorType.External
? layer.variant
@@ -186,7 +186,7 @@ export function ShotDisplayCard({ shot, ...props }: ShotDisplayCardProps) {
<Text color={outTitleColor} weight="bold">
{literals(
strings.website.tools.tankopedia.sandbox.dynamic.shot_card
strings.website.tools.tanks.sandbox.dynamic.shot_card
.status[shot.out.status],
[Math.round(shot.damage).toLocaleString(locale)],
)}
@@ -195,7 +195,7 @@ export function ShotDisplayCard({ shot, ...props }: ShotDisplayCardProps) {
<Flex direction="column">
{shot.out.layers.map((layer, index) => {
const layerName =
strings.website.tools.tankopedia.sandbox.dynamic.shot_card
strings.website.tools.tanks.sandbox.dynamic.shot_card
.element[
layer.type === ArmorType.External
? layer.variant
@@ -81,7 +81,7 @@ export function Body({ stats }: BodyProps) {
<CompareRow stats={stats} value="dpm" decimals={0} />
<CompareRow
stats={stats}
name={strings.website.tools.tankopedia.characteristics.values.reload}
name={strings.website.tools.tanks.characteristics.values.reload}
deltaType="lowerIsBetter"
value={(stats) =>
stats.shellReload ??
@@ -52,7 +52,7 @@ export function CompareRow({
const id = useRef(Math.random());
const name =
typeof props.value === 'string'
? strings.website.tools.tankopedia.characteristics.values[props.value]
? strings.website.tools.tanks.characteristics.values[props.value]
: props.name;
return (
@@ -23,11 +23,11 @@ export function CharacteristicsHeading() {
direction="column"
>
<Heading mb="2">
{strings.website.tools.tankopedia.characteristics.title}
{strings.website.tools.tanks.characteristics.title}
</Heading>
<Text color="gray">
{strings.website.tools.tankopedia.characteristics.compare.label}
{strings.website.tools.tanks.characteristics.compare.label}
</Text>
<SegmentedControl.Root
size={{ initial: '1', md: '2' }}
@@ -39,22 +39,18 @@ export function CharacteristicsHeading() {
}}
>
<SegmentedControl.Item value={`${TankopediaRelativeAgainst.Class}`}>
{literals(
strings.website.tools.tankopedia.characteristics.compare.class,
[
TIER_ROMAN_NUMERALS[tank.tier],
strings.common.tank_class_short_plural_lowercase[tank.class],
],
)}
{literals(strings.website.tools.tanks.characteristics.compare.class, [
TIER_ROMAN_NUMERALS[tank.tier],
strings.common.tank_class_short_plural_lowercase[tank.class],
])}
</SegmentedControl.Item>
<SegmentedControl.Item value={`${TankopediaRelativeAgainst.Tier}`}>
{literals(
strings.website.tools.tankopedia.characteristics.compare.tier,
[TIER_ROMAN_NUMERALS[tank.tier]],
)}
{literals(strings.website.tools.tanks.characteristics.compare.tier, [
TIER_ROMAN_NUMERALS[tank.tier],
])}
</SegmentedControl.Item>
<SegmentedControl.Item value={`${TankopediaRelativeAgainst.All}`}>
{strings.website.tools.tankopedia.characteristics.compare.all}
{strings.website.tools.tanks.characteristics.compare.all}
</SegmentedControl.Item>
</SegmentedControl.Root>
</Flex>
@@ -145,9 +145,7 @@ export function InfoWithDelta({
name={
'name' in props
? props.name
: strings.website.tools.tankopedia.characteristics.values[
props.value
]
: strings.website.tools.tanks.characteristics.values[props.value]
}
delta={delta}
>
@@ -147,7 +147,7 @@ export function Characteristics() {
<Flex direction="column" gap="2">
<Flex align="center" gap="4">
<Heading size="5">
{strings.website.tools.tankopedia.firepower.title}
{strings.website.tools.tanks.firepower.title}
</Heading>
<Flex>
@@ -189,9 +189,7 @@ export function Characteristics() {
</Flex>
</Flex>
<Info
name={
strings.website.tools.tankopedia.characteristics.values.gunType
}
name={strings.website.tools.tanks.characteristics.values.gunType}
>
{strings.common.gun_types[gun.gun_type!.$case]}
</Info>
@@ -218,7 +216,7 @@ export function Characteristics() {
<Info
indent
name={
strings.website.tools.tankopedia.characteristics.values
strings.website.tools.tanks.characteristics.values
.mostOptimalShellIndex
}
>
@@ -226,7 +224,7 @@ export function Characteristics() {
</Info>
<Info
name={
strings.website.tools.tankopedia.characteristics.values
strings.website.tools.tanks.characteristics.values
.shellReloads
}
unit="s"
@@ -237,7 +235,7 @@ export function Characteristics() {
key={index}
indent
name={literals(
strings.website.tools.tankopedia.characteristics.values
strings.website.tools.tanks.characteristics.values
.shell_index,
[`${index + 1}`],
)}
@@ -281,7 +279,7 @@ export function Characteristics() {
indent
decimals={0}
name={literals(
strings.website.tools.tankopedia.characteristics.values
strings.website.tools.tanks.characteristics.values
.at_distance,
[`${penetrationDistance}`],
)}
@@ -299,7 +297,7 @@ export function Characteristics() {
<Flex align="center" gap="2" style={{ paddingLeft: 24 }}>
<Text color="gray">
{
strings.website.tools.tankopedia.characteristics.values
strings.website.tools.tanks.characteristics.values
.at_distance_slider_label
}
</Text>
@@ -404,7 +402,7 @@ export function Characteristics() {
/>
<Info
name={literals(
strings.website.tools.tankopedia.characteristics.values
strings.website.tools.tanks.characteristics.values
.dispersion_at_distance,
['100'],
)}
@@ -459,8 +457,7 @@ export function Characteristics() {
/>
<Info
name={
strings.website.tools.tankopedia.characteristics.values
.gun_flexibility
strings.website.tools.tanks.characteristics.values.gun_flexibility
}
unit="°"
/>
@@ -528,9 +525,7 @@ export function Characteristics() {
<Flex direction="column" gap="2">
<Flex gap="2" align="center">
<Heading size="5">
{strings.website.tools.tankopedia.crew.title}
</Heading>
<Heading size="5">{strings.website.tools.tanks.crew.title}</Heading>
<Popover.Root>
<Popover.Trigger>
@@ -542,7 +537,7 @@ export function Characteristics() {
<Popover.Content>
<Flex gap="1" align="center">
<AccessibilityIcon />
<Text>{strings.website.tools.tankopedia.crew.info}</Text>
<Text>{strings.website.tools.tanks.crew.info}</Text>
</Flex>
</Popover.Content>
</Popover.Root>
@@ -557,7 +552,7 @@ export function Characteristics() {
stats={stats}
key={`${member.type}-root`}
name={`${
strings.website.tools.tankopedia.crew[
strings.website.tools.tanks.crew[
CREW_MEMBER_NAMES[member.type]
]
}${
@@ -591,7 +586,7 @@ export function Characteristics() {
{member.substitute
.map((sub, index) =>
index === 0
? strings.website.tools.tankopedia.crew[
? strings.website.tools.tanks.crew[
CREW_MEMBER_NAMES[sub]
]
: sub,
@@ -613,10 +608,10 @@ export function Characteristics() {
<Flex direction="column" gap="8" style={{ flex: 1 }}>
<Flex direction="column" gap="2">
<Heading size="5">
{strings.website.tools.tankopedia.maneuverability.title}
{strings.website.tools.tanks.maneuverability.title}
</Heading>
<Info
name={strings.website.tools.tankopedia.characteristics.values.speed}
name={strings.website.tools.tanks.characteristics.values.speed}
unit="kph"
/>
<InfoWithDelta
@@ -641,7 +636,7 @@ export function Characteristics() {
/>
<Info
name={
strings.website.tools.tankopedia.characteristics.values
strings.website.tools.tanks.characteristics.values
.terrain_coefficients
}
/>
@@ -668,7 +663,7 @@ export function Characteristics() {
/>
<Info
name={
strings.website.tools.tankopedia.characteristics.values
strings.website.tools.tanks.characteristics.values
.raw_terrain_coefficients
}
deltaType="lowerIsBetter"
@@ -699,7 +694,7 @@ export function Characteristics() {
/>
<Info
name={
strings.website.tools.tankopedia.characteristics.values
strings.website.tools.tanks.characteristics.values
.power_to_weight_ratio
}
unit="hp/tn"
@@ -730,7 +725,7 @@ export function Characteristics() {
/>
<Info
name={
strings.website.tools.tankopedia.characteristics.values
strings.website.tools.tanks.characteristics.values
.hull_traverse_speed
}
unit="°/s"
@@ -757,14 +752,12 @@ export function Characteristics() {
<Flex direction="column" gap="2">
<Heading size="5">
{strings.website.tools.tankopedia.survivability.title}
{strings.website.tools.tanks.survivability.title}
</Heading>
<InfoWithDelta value="health" stats={stats} unit="hp" decimals={0} />
<InfoWithDelta
stats={stats}
name={
strings.website.tools.tankopedia.characteristics.values.fireChance
}
name={strings.website.tools.tanks.characteristics.values.fireChance}
unit="%"
deltaType="lowerIsBetter"
decimals={0}
@@ -777,9 +770,7 @@ export function Characteristics() {
decimals={0}
/>
<Info
name={
strings.website.tools.tankopedia.characteristics.values.camouflage
}
name={strings.website.tools.tanks.characteristics.values.camouflage}
unit="%"
/>
<InfoWithDelta
@@ -787,8 +778,7 @@ export function Characteristics() {
stats={stats}
indent
name={
strings.website.tools.tankopedia.characteristics.values
.camouflageStill
strings.website.tools.tanks.characteristics.values.camouflageStill
}
decimals={2}
/>
@@ -797,7 +787,7 @@ export function Characteristics() {
stats={stats}
indent
name={
strings.website.tools.tankopedia.characteristics.values
strings.website.tools.tanks.characteristics.values
.camouflageMoving
}
decimals={2}
@@ -806,7 +796,7 @@ export function Characteristics() {
stats={stats}
indent
name={
strings.website.tools.tankopedia.characteristics.values
strings.website.tools.tanks.characteristics.values
.camouflageShootingStill
}
decimals={2}
@@ -816,7 +806,7 @@ export function Characteristics() {
stats={stats}
indent
name={
strings.website.tools.tankopedia.characteristics.values
strings.website.tools.tanks.characteristics.values
.camouflageShootingMoving
}
decimals={2}
@@ -826,7 +816,7 @@ export function Characteristics() {
stats={stats}
indent
name={
strings.website.tools.tankopedia.characteristics.values
strings.website.tools.tanks.characteristics.values
.camouflageCaughtOnFire
}
decimals={2}
@@ -42,7 +42,7 @@ export function Consumables() {
<Flex gap="4" align="center">
<Flex gap="2" align="center">
<Heading size="4">
{strings.website.tools.tankopedia.configuration.consumables.title}
{strings.website.tools.tanks.configuration.consumables.title}
</Heading>
<Popover.Root>
@@ -54,10 +54,7 @@ export function Consumables() {
<Popover.Content>
<Text>
{
strings.website.tools.tankopedia.configuration.consumables
.info
}
{strings.website.tools.tanks.configuration.consumables.info}
</Text>
</Popover.Content>
</Popover.Root>
@@ -72,7 +69,7 @@ export function Consumables() {
});
}}
>
{strings.website.tools.tankopedia.configuration.consumables.clear}
{strings.website.tools.tanks.configuration.consumables.clear}
</Button>
</Flex>
@@ -21,7 +21,7 @@ export function Equipment() {
<ConfigurationChildWrapper>
<Flex gap="4" align="center">
<Heading size="4">
{strings.website.tools.tankopedia.configuration.equipment.title}
{strings.website.tools.tanks.configuration.equipment.title}
</Heading>
<Button
variant="ghost"
@@ -36,7 +36,7 @@ export function Equipment() {
});
}}
>
{strings.website.tools.tankopedia.configuration.equipment.clear}
{strings.website.tools.tanks.configuration.equipment.clear}
</Button>
</Flex>
@@ -17,7 +17,7 @@ export function Miscellaneous() {
return (
<ConfigurationChildWrapper>
<Heading size="4">
{strings.website.tools.tankopedia.configuration.miscellaneous.title}
{strings.website.tools.tanks.configuration.miscellaneous.title}
</Heading>
<Flex gap="2" align="center">
@@ -356,7 +356,7 @@ export function Modules() {
<ConfigurationChildWrapper>
<Flex gap="4" align="center">
<Heading size="4">
{strings.website.tools.tankopedia.configuration.modules.title}
{strings.website.tools.tanks.configuration.modules.title}
</Heading>
{hasUpgrades && (
@@ -375,7 +375,7 @@ export function Modules() {
});
}}
>
{strings.website.tools.tankopedia.configuration.modules.stock}
{strings.website.tools.tanks.configuration.modules.stock}
</Button>
<Button
variant="ghost"
@@ -393,7 +393,7 @@ export function Modules() {
});
}}
>
{strings.website.tools.tankopedia.configuration.modules.upgrade}
{strings.website.tools.tanks.configuration.modules.upgrade}
</Button>
</>
)}
@@ -19,7 +19,7 @@ export function Provisions() {
<ConfigurationChildWrapper>
<Flex gap="4" align="center">
<Heading size="4">
{strings.website.tools.tankopedia.configuration.provisions.title}
{strings.website.tools.tanks.configuration.provisions.title}
</Heading>
<Button
variant="ghost"
@@ -30,7 +30,7 @@ export function Provisions() {
});
}}
>
{strings.website.tools.tankopedia.configuration.provisions.clear}
{strings.website.tools.tanks.configuration.provisions.clear}
</Button>
</Flex>
@@ -22,7 +22,7 @@ export function Skills() {
<Flex gap="4" align="center">
<Flex gap="2" align="center">
<Heading size="4">
{strings.website.tools.tankopedia.configuration.skills.title}
{strings.website.tools.tanks.configuration.skills.title}
</Heading>
<Popover.Root>
@@ -35,7 +35,7 @@ export function Skills() {
<Popover.Content>
<Flex direction="column" gap="2">
<Text>
{strings.website.tools.tankopedia.configuration.skills.info}
{strings.website.tools.tanks.configuration.skills.info}
</Text>
</Flex>
</Popover.Content>
@@ -53,7 +53,7 @@ export function Skills() {
});
}}
>
{strings.website.tools.tankopedia.configuration.skills.clear}
{strings.website.tools.tanks.configuration.skills.clear}
</Button>
<Button
variant="ghost"
@@ -65,7 +65,7 @@ export function Skills() {
});
}}
>
{strings.website.tools.tankopedia.configuration.skills.maximize}
{strings.website.tools.tanks.configuration.skills.maximize}
</Button>
</Flex>
@@ -27,9 +27,7 @@ export function CharacteristicsSection() {
maxWidth="21rem"
align={{ initial: 'center', sm: 'start' }}
>
<Heading>
{strings.website.tools.tankopedia.configuration.title}
</Heading>
<Heading>{strings.website.tools.tanks.configuration.title}</Heading>
<Modules />
<Equipment />
<Provisions />
@@ -22,9 +22,7 @@ export function GameModeSection() {
return (
<Flex direction="column" gap="4" align="center">
<Heading size="6">
{strings.website.tools.tankopedia.game_modes.title}
</Heading>
<Heading size="6">{strings.website.tools.tanks.game_modes.title}</Heading>
<Flex justify="center" gap="4" wrap="wrap" px="4">
{roles.map(([key, value]) => {
@@ -58,8 +58,8 @@ export function CustomShellButton() {
<Flex align="center" justify="between" gap="4">
<Text>
{
strings.website.tools.tankopedia.sandbox.dynamic
.custom_shell.type
strings.website.tools.tanks.sandbox.dynamic.custom_shell
.type
}
</Text>
<Select.Root
@@ -124,8 +124,8 @@ export function CustomShellButton() {
<Flex align="center" justify="between" gap="4">
<Text>
{
strings.website.tools.tankopedia.sandbox.dynamic
.custom_shell.caliber
strings.website.tools.tanks.sandbox.dynamic.custom_shell
.caliber
}
</Text>
<TextField.Root
@@ -159,8 +159,8 @@ export function CustomShellButton() {
<Flex align="center" justify="between" gap="4">
<Text>
{
strings.website.tools.tankopedia.sandbox.dynamic
.custom_shell.penetration
strings.website.tools.tanks.sandbox.dynamic.custom_shell
.penetration
}
</Text>
<TextField.Root
@@ -198,8 +198,8 @@ export function CustomShellButton() {
<Flex align="center" justify="between" gap="4" py="1">
<Text>
{
strings.website.tools.tankopedia.sandbox.dynamic
.custom_shell.normalization
strings.website.tools.tanks.sandbox.dynamic.custom_shell
.normalization
}
</Text>
@@ -234,8 +234,8 @@ export function CustomShellButton() {
<Flex align="center" justify="between" gap="4" py="1">
<Text>
{
strings.website.tools.tankopedia.sandbox.dynamic
.custom_shell.ricochet
strings.website.tools.tanks.sandbox.dynamic.custom_shell
.ricochet
}
</Text>
@@ -297,8 +297,8 @@ export function CustomShellButton() {
<Popover.Close>
<Button color="red" variant="outline">
{
strings.website.tools.tankopedia.sandbox.dynamic
.custom_shell.exit
strings.website.tools.tanks.sandbox.dynamic.custom_shell
.exit
}
</Button>
</Popover.Close>
@@ -310,10 +310,7 @@ export function CustomShellButton() {
});
}}
>
{
strings.website.tools.tankopedia.sandbox.dynamic.custom_shell
.reset
}
{strings.website.tools.tanks.sandbox.dynamic.custom_shell.reset}
</Button>
</Flex>
</>
@@ -60,7 +60,7 @@ export function Thicknesses({ thicknessRange }: ThicknessesProps) {
])}
</Text>
<Text size="1">
{strings.website.tools.tankopedia.sandbox.static.primary}
{strings.website.tools.tanks.sandbox.static.primary}
</Text>
<Text color="gray" size="1">
{literals(strings.common.units.mm, ['0'])}
@@ -101,7 +101,7 @@ export function Thicknesses({ thicknessRange }: ThicknessesProps) {
])}
</Text>
<Text size="1">
{strings.website.tools.tankopedia.sandbox.static.spaced}
{strings.website.tools.tanks.sandbox.static.spaced}
</Text>
<Text color="gray" size="1">
{literals(strings.common.units.mm, ['0'])}
@@ -135,7 +135,7 @@ export function Thicknesses({ thicknessRange }: ThicknessesProps) {
>
<Flex direction="column" align="end" justify="between">
<Text size="1">
{strings.website.tools.tankopedia.sandbox.static.external}
{strings.website.tools.tanks.sandbox.static.external}
</Text>
</Flex>
@@ -168,7 +168,7 @@ export function Thicknesses({ thicknessRange }: ThicknessesProps) {
}}
>
<Text size="1">
{strings.website.tools.tankopedia.sandbox.static.edit.label}
{strings.website.tools.tanks.sandbox.static.edit.label}
</Text>
<Checkbox size="2" checked={editStatic} />
</Flex>
@@ -186,7 +186,7 @@ export function Thicknesses({ thicknessRange }: ThicknessesProps) {
}}
>
<ReloadIcon />
{strings.website.tools.tankopedia.sandbox.static.edit.reset}
{strings.website.tools.tanks.sandbox.static.edit.reset}
</Button>
</Flex>
@@ -346,13 +346,13 @@ export function Options({ thicknessRange, canvas }: OptionsProps) {
>
<Checkbox checked={advancedHighlighting} />
<Text color="gray" size="2">
{strings.website.tools.tankopedia.sandbox.dynamic.advanced}
{strings.website.tools.tanks.sandbox.dynamic.advanced}
</Text>
</Flex>
<Flex align="center" gap="2">
<Text color="gray" size="2">
{strings.website.tools.tankopedia.sandbox.dynamic.shooter}
{strings.website.tools.tanks.sandbox.dynamic.shooter}
</Text>
<Dialog.Root
open={antagonistSelectorOpen}
@@ -408,9 +408,7 @@ export function Options({ thicknessRange, canvas }: OptionsProps) {
}}
>
<SegmentedControl.Item value={`${TankopediaDisplay.Model}`}>
<Tooltip
content={strings.website.tools.tankopedia.sandbox.model.name}
>
<Tooltip content={strings.website.tools.tanks.sandbox.model.name}>
<Flex height="100%" align="center">
<img src={imgur('jAdYf0m')} style={{ height: '1.25em' }} />
</Flex>
@@ -418,7 +416,7 @@ export function Options({ thicknessRange, canvas }: OptionsProps) {
</SegmentedControl.Item>
<SegmentedControl.Item value={`${TankopediaDisplay.DynamicArmor}`}>
<Tooltip
content={strings.website.tools.tankopedia.sandbox.dynamic.name}
content={strings.website.tools.tanks.sandbox.dynamic.name}
>
<Flex height="100%" align="center">
<img src={imgur('oe4Cq0g')} style={{ height: '1.25em' }} />
@@ -427,7 +425,7 @@ export function Options({ thicknessRange, canvas }: OptionsProps) {
</SegmentedControl.Item>
<SegmentedControl.Item value={`${TankopediaDisplay.StaticArmor}`}>
<Tooltip
content={strings.website.tools.tankopedia.sandbox.static.name}
content={strings.website.tools.tanks.sandbox.static.name}
>
<Flex height="100%" align="center">
<img src={imgur('VQ4uDno')} style={{ height: '1.25em' }} />
@@ -452,15 +450,15 @@ export function Options({ thicknessRange, canvas }: OptionsProps) {
<DropdownMenu.Content>
<DropdownMenu.Item onClick={() => poseEvent.emit(Pose.HullDown)}>
{strings.website.tools.tankopedia.sandbox.poses.hull_down}
{strings.website.tools.tanks.sandbox.poses.hull_down}
</DropdownMenu.Item>
<DropdownMenu.Item onClick={() => poseEvent.emit(Pose.FaceHug)}>
{strings.website.tools.tankopedia.sandbox.poses.face_hug}
{strings.website.tools.tanks.sandbox.poses.face_hug}
</DropdownMenu.Item>
<DropdownMenu.Item onClick={() => poseEvent.emit(Pose.Default)}>
{strings.website.tools.tankopedia.sandbox.poses.default}
{strings.website.tools.tanks.sandbox.poses.default}
</DropdownMenu.Item>
</DropdownMenu.Content>
</DropdownMenu.Root>
@@ -476,7 +474,7 @@ export function Options({ thicknessRange, canvas }: OptionsProps) {
{display === TankopediaDisplay.DynamicArmor && (
<>
<DropdownMenu.Label>
{strings.website.tools.tankopedia.sandbox.settings.armor}
{strings.website.tools.tanks.sandbox.settings.armor}
</DropdownMenu.Label>
<DropdownMenu.CheckboxItem
@@ -488,7 +486,7 @@ export function Options({ thicknessRange, canvas }: OptionsProps) {
}}
>
{
strings.website.tools.tankopedia.sandbox.settings
strings.website.tools.tanks.sandbox.settings
.green_penetration
}
</DropdownMenu.CheckboxItem>
@@ -502,7 +500,7 @@ export function Options({ thicknessRange, canvas }: OptionsProps) {
}}
>
{
strings.website.tools.tankopedia.sandbox.settings
strings.website.tools.tanks.sandbox.settings
.hide_model_under_armor
}
</DropdownMenu.CheckboxItem>
@@ -515,7 +513,7 @@ export function Options({ thicknessRange, canvas }: OptionsProps) {
});
}}
>
{strings.website.tools.tankopedia.sandbox.settings.opaque}
{strings.website.tools.tanks.sandbox.settings.opaque}
</DropdownMenu.CheckboxItem>
{developerMode && (
@@ -528,7 +526,7 @@ export function Options({ thicknessRange, canvas }: OptionsProps) {
}}
>
{
strings.website.tools.tankopedia.sandbox.settings
strings.website.tools.tanks.sandbox.settings
.dev_wireframe
}
</DropdownMenu.CheckboxItem>
@@ -537,7 +535,7 @@ export function Options({ thicknessRange, canvas }: OptionsProps) {
)}
<DropdownMenu.Label>
{strings.website.tools.tankopedia.sandbox.settings.environment}
{strings.website.tools.tanks.sandbox.settings.environment}
</DropdownMenu.Label>
<DropdownMenu.CheckboxItem
@@ -548,7 +546,7 @@ export function Options({ thicknessRange, canvas }: OptionsProps) {
});
}}
>
{strings.website.tools.tankopedia.sandbox.settings.show_grid}
{strings.website.tools.tanks.sandbox.settings.show_grid}
</DropdownMenu.CheckboxItem>
</DropdownMenu.Content>
</DropdownMenu.Root>
@@ -581,10 +579,7 @@ export function Options({ thicknessRange, canvas }: OptionsProps) {
}}
>
<DownloadIcon />
{
strings.website.tools.tankopedia.sandbox.screenshot
.download
}
{strings.website.tools.tanks.sandbox.screenshot.download}
</Button>
</Popover.Close>
<Popover.Close>
@@ -603,7 +598,7 @@ export function Options({ thicknessRange, canvas }: OptionsProps) {
}}
>
<CopyIcon />
{strings.website.tools.tankopedia.sandbox.screenshot.copy}
{strings.website.tools.tanks.sandbox.screenshot.copy}
</Button>
</Popover.Close>
</Flex>
@@ -47,7 +47,7 @@ export function MetaSection() {
<LinkI18n locale={locale} href="/tools/tankopedia">
<Button variant="outline">
<ChevronLeftIcon />
{strings.website.tools.tankopedia.meta.back}
{strings.website.tools.tanks.meta.back}
</Button>
</LinkI18n>
@@ -57,7 +57,7 @@ export function MetaSection() {
>
<Button variant="outline">
<MixIcon />
{strings.website.tools.tankopedia.meta.compare}
{strings.website.tools.tanks.meta.compare}
</Button>
</LinkI18n>
@@ -73,8 +73,8 @@ export function MetaSection() {
<ScienceIcon height="1.25em" width="1.25em" />
{assertSecret(import.meta.env.PUBLIC_ASSET_BRANCH) ===
'opentest'
? strings.website.tools.tankopedia.meta.vanilla
: strings.website.tools.tankopedia.meta.opentest}
? strings.website.tools.tanks.meta.vanilla
: strings.website.tools.tanks.meta.opentest}
</Button>
</Link>
)}
@@ -83,13 +83,13 @@ export function MetaSection() {
<Dialog.Trigger>
<Button>
<UpdateIcon />
{strings.website.tools.tankopedia.meta.swap.button}
{strings.website.tools.tanks.meta.swap.button}
</Button>
</Dialog.Trigger>
<Dialog.Content>
<Dialog.Title>
{strings.website.tools.tankopedia.meta.swap.title}
{strings.website.tools.tanks.meta.swap.title}
</Dialog.Title>
<TankSearch
@@ -123,11 +123,11 @@ export function MetaSection() {
>
<Flex direction="column" width="100%">
{protagonist.name_full && (
<Listing label={strings.website.tools.tankopedia.meta.full_name}>
<Listing label={strings.website.tools.tanks.meta.full_name}>
{unwrap(protagonist.name_full)}
</Listing>
)}
<Listing label={strings.website.tools.tankopedia.meta.nation}>
<Listing label={strings.website.tools.tanks.meta.nation}>
<Flex align="center" gap="1">
<img
style={{ width: '1em', height: '1em' }}
@@ -141,17 +141,17 @@ export function MetaSection() {
}
</Flex>
</Listing>
<Listing label={strings.website.tools.tankopedia.meta.class}>
<Listing label={strings.website.tools.tanks.meta.class}>
<Flex align="center" gap="1">
<ClassIcon width="1em" height="1em" />
{strings.common.tank_class_short[protagonist.class]}
</Flex>
</Listing>
<Listing label={strings.website.tools.tankopedia.meta.tier}>
<Listing label={strings.website.tools.tanks.meta.tier}>
{TIER_ROMAN_NUMERALS[protagonist.tier]}
</Listing>
<Listing
label={strings.website.tools.tankopedia.meta.type}
label={strings.website.tools.tanks.meta.type}
color={
protagonist.type === TankType.COLLECTOR
? 'blue'
@@ -166,12 +166,12 @@ export function MetaSection() {
<Flex direction="column" width="100%">
{developerMode && (
<Listing label={strings.website.tools.tankopedia.meta.dev_id}>
<Listing label={strings.website.tools.tanks.meta.dev_id}>
<Code>{protagonist.id}</Code>
</Listing>
)}
{protagonist.type === TankType.PREMIUM && (
<Listing label={strings.website.tools.tankopedia.meta.purchase}>
<Listing label={strings.website.tools.tanks.meta.purchase}>
<Flex align="center" gap="1">
{protagonist.price.value / 400}
<img
@@ -185,8 +185,8 @@ export function MetaSection() {
<Listing
label={
protagonist.type === TankType.RESEARCHABLE
? strings.website.tools.tankopedia.meta.purchase
: strings.website.tools.tankopedia.meta.restoration
? strings.website.tools.tanks.meta.purchase
: strings.website.tools.tanks.meta.restoration
}
>
<Flex align="center" gap="1">
@@ -204,7 +204,7 @@ export function MetaSection() {
/>
</Flex>
</Listing>
<Listing label={strings.website.tools.tankopedia.meta.sale}>
<Listing label={strings.website.tools.tanks.meta.sale}>
<Flex align="center" gap="1">
{(protagonist.price.value / 2).toLocaleString(locale)}
<img
@@ -221,7 +221,7 @@ export function MetaSection() {
</Flex>
</Listing>
{protagonist.research_cost && (
<Listing label={strings.website.tools.tankopedia.meta.research}>
<Listing label={strings.website.tools.tanks.meta.research}>
<Flex align="center" gap="1">
{(
protagonist.research_cost.research_cost_type!
@@ -132,11 +132,10 @@ export function Node({ id, highlight, nextIds, skeleton }: NodeProps) {
{skeleton && <Skeleton height="1em" width="4em" />}
{!skeleton &&
(games === 1
? strings.website.tools.tankopedia.tech_tree.battle
: literals(
strings.website.tools.tankopedia.tech_tree.battles,
[`${games}`],
))}
? strings.website.tools.tanks.tech_tree.battle
: literals(strings.website.tools.tanks.tech_tree.battles, [
`${games}`,
]))}
</Text>
)}
</Flex>
@@ -93,7 +93,7 @@ export function TechTreeSection({ skeleton }: MaybeSkeletonComponentProps) {
>
<Flex direction="column" align="center">
<Heading size="6">
{strings.website.tools.tankopedia.tech_tree.title}
{strings.website.tools.tanks.tech_tree.title}
</Heading>
{master.tier > 1 && (
@@ -219,7 +219,7 @@ export function TechTreeSection({ skeleton }: MaybeSkeletonComponentProps) {
<CaretLeftIcon />
</IconButton>
<Text>
{literals(strings.website.tools.tankopedia.tech_tree.route, [
{literals(strings.website.tools.tanks.tech_tree.route, [
`${lineIndex + 1}`,
`${lines.length}`,
])}
@@ -22,12 +22,10 @@ export function VideoSection({ skeleton }: MaybeSkeletonComponentProps) {
<PageWrapper noFlex1 noMinHeight>
<Flex direction="column" gap="6" align="center">
<Flex direction="column" align="center">
<Heading size="6">
{strings.website.tools.tankopedia.review.title}
</Heading>
<Heading size="6">{strings.website.tools.tanks.review.title}</Heading>
<Text color="gray">
{strings.website.tools.tankopedia.review.disclaimer}
{strings.website.tools.tanks.review.disclaimer}
</Text>
</Flex>
@@ -117,7 +115,7 @@ export function VideoSection({ skeleton }: MaybeSkeletonComponentProps) {
width: '9rem',
}}
>
{literals(strings.website.tools.tankopedia.review.join, [
{literals(strings.website.tools.tanks.review.join, [
'BlitzKit',
])}
</Text>
@@ -11,10 +11,10 @@ import {
TIER_ROMAN_NUMERALS,
} from '@blitzkit/core';
import { DEFAULT_LOCALE, unwrapper } from '@blitzkit/i18n';
import { literals } from '@blitzkit/i18n/src/literals';
import type { GetStaticPaths } from 'astro';
import { tankCharacteristics } from '../../../../../core/blitzkit/tankCharacteristics';
import { getStrings } from '../../../../../core/i18n/getStrings';
import { literals } from '@blitzkit/i18n/src/literals';
import BaseLayout from '../../../../../layouts/BaseLayout.astro';
import { genericDefaultEquipmentMatrix } from '../../../../../stores/duel/constants';
import { getStaticPaths as parentGetStaticPaths } from '../index.astro';
@@ -45,7 +45,7 @@ const tank = tankDefinitions.tanks[id];
const tankModelDefinition = tankModelDefinitions.models[tank.id];
const name = tank.name_full ?? tank.name;
const unwrap = unwrapper(locale);
const title = literals(strings.website.tools.tankopedia.tank_seo_title, [
const title = literals(strings.website.tools.tanks.tank_seo_title, [
unwrap(name),
TIER_ROMAN_NUMERALS[tank.tier],
strings.common.nations_adjectives[
@@ -82,17 +82,14 @@ const characteristics = tankCharacteristics(
},
{ equipmentDefinitions, provisionDefinitions, tankModelDefinition },
);
const description = literals(
strings.website.tools.tankopedia.tank_seo_description,
[
unwrap(name),
Math.round(characteristics.dpm).toLocaleString(locale),
Math.round(characteristics.damage).toLocaleString(locale),
Math.round(characteristics.penetration).toLocaleString(locale),
Math.round(characteristics.speedForwards).toLocaleString(locale),
Math.round(characteristics.health).toLocaleString(locale),
],
);
const description = literals(strings.website.tools.tanks.tank_seo_description, [
unwrap(name),
Math.round(characteristics.dpm).toLocaleString(locale),
Math.round(characteristics.damage).toLocaleString(locale),
Math.round(characteristics.penetration).toLocaleString(locale),
Math.round(characteristics.speedForwards).toLocaleString(locale),
Math.round(characteristics.health).toLocaleString(locale),
]);
---
<title>{title}</title>
@@ -16,9 +16,9 @@ const glossary = await fetchGlossary(DEFAULT_LOCALE);
/**
* Returns an in-game avatar image. Use gallery/list.json to get all valid ids.
* Not all ids may have images due to poor Wargaming CDNs. Some images may be
* animated. Not all images share the same dimensions.
* Some images may be animated. Not all images share the same dimensions.
*
* @warning Not all ids have images due to poor Wargaming CDN.
* @param avatar The avatar id.
* @returns A webp image.
*/
+1 -1
View File
@@ -2,7 +2,7 @@
"compilerOptions": {
"target": "ESNext",
"module": "ESNext",
"moduleResolution": "Node",
"moduleResolution": "bundler",
"esModuleInterop": true,
"forceConsistentCasingInFileNames": true,
"strict": true,