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