diff --git a/packages/i18n/strings/en.json b/packages/i18n/strings/en.json index 2930ee31c..920d0ebf1 100644 --- a/packages/i18n/strings/en.json +++ b/packages/i18n/strings/en.json @@ -1,4 +1,15 @@ { + "tiers": { + "vintage": "Vintage", + "four": "IV", + "five": "V", + "six": "VI", + "seven": "VII", + "eight": "VIII", + "nine": "IX", + "ten": "X" + }, + "common": { "name": "BlitzKit" }, diff --git a/packages/website-ue/src/core/tankopedia/characteristicsOrder.ts b/packages/website-ue/src/core/tankopedia/characteristicsOrder.ts index 0777fc64c..5dfaee313 100644 --- a/packages/website-ue/src/core/tankopedia/characteristicsOrder.ts +++ b/packages/website-ue/src/core/tankopedia/characteristicsOrder.ts @@ -1,3 +1,4 @@ +import type { Strings } from "@blitzkit/i18n"; import { Nation, TankClass, @@ -19,7 +20,11 @@ export interface CharacteristicRenderConfig { decimals?: number; units?: string; strings?: string; - render?: (output: CharacteristicOutput) => string; + render?: (data: { + output: CharacteristicOutput; + strings: Strings; + gameStrings: Record; + }) => string; } type CharacteristicsOrder = { @@ -36,23 +41,35 @@ export const characteristicsOrder: CharacteristicsOrder = [ { group: "meta", order: [ - { name: "name", strings: "TankEntity" }, - { name: "tier" }, + { + name: "name", + strings: "TankEntity", + render({ output, gameStrings }) { + return gameStrings[output as string]; + }, + }, + { + name: "tier", + render({ output, strings }) { + const [, name] = (output as string).split("."); + return strings.tiers[name as keyof typeof strings.tiers]; + }, + }, { name: "nation", - render(output) { + render({ output }) { return Nation[output as Nation]; }, }, { name: "class", - render(output) { + render({ output }) { return TankClass[output as TankClass]; }, }, { name: "type", - render(output) { + render({ output }) { return TankType[output as TankType]; }, }, @@ -66,7 +83,7 @@ export const characteristicsOrder: CharacteristicsOrder = [ order: [ { name: "gun_type", - render(output) { + render({ output }) { return GunType[output as GunType]; }, }, diff --git a/packages/website-ue/src/hooks/useCharacteristicRenderer.ts b/packages/website-ue/src/hooks/useCharacteristicRenderer.ts index 0658dfd5b..c41d09893 100644 --- a/packages/website-ue/src/hooks/useCharacteristicRenderer.ts +++ b/packages/website-ue/src/hooks/useCharacteristicRenderer.ts @@ -5,6 +5,7 @@ import { type CharacteristicRenderConfig, } from "../core/tankopedia/characteristicsOrder"; import { useGameStrings } from "./useGameStrings"; +import { useStrings } from "./useStrings"; export function useCharacteristicRenderer() { const groups = useMemo(() => { @@ -20,7 +21,9 @@ export function useCharacteristicRenderer() { return groups; }, []); - const tankEntityStrings = useGameStrings(groups); + + const strings = useStrings(); + const gameStrings = useGameStrings(groups); function renderCharacteristic( characteristic: CharacteristicOutput, @@ -28,7 +31,8 @@ export function useCharacteristicRenderer() { ): string | null { if (characteristic === null) return null; - if (config.render) return config.render(characteristic); + if (config.render) + return config.render({ output: characteristic, strings, gameStrings }); if (typeof characteristic === "number") { if (Number.isFinite(characteristic)) { @@ -43,10 +47,6 @@ export function useCharacteristicRenderer() { } if (typeof characteristic === "string") { - if (config.strings) { - return tankEntityStrings[characteristic]; - } - return characteristic; }