From ab0d3f7170cb858a464e16c0bb43684347fe3088 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tr=C3=A8sAbhi?= <43380238+tresabhi@users.noreply.github.com> Date: Fri, 25 Oct 2024 10:57:49 -0500 Subject: [PATCH] fix: crew skill off by 1 roman numerals --- packages/core/src/blitzkit/index.ts | 1 + packages/core/src/blitzkit/romanize.ts | 45 +++++++++++++++++++ .../src/components/CrewSkillManager.tsx | 7 +-- 3 files changed, 48 insertions(+), 5 deletions(-) create mode 100644 packages/core/src/blitzkit/romanize.ts diff --git a/packages/core/src/blitzkit/index.ts b/packages/core/src/blitzkit/index.ts index ce31cc01b..1153a0388 100644 --- a/packages/core/src/blitzkit/index.ts +++ b/packages/core/src/blitzkit/index.ts @@ -43,4 +43,5 @@ export * from './uniqueGuns'; export * from './unwrapBlitzkitResponse'; export * from './votes'; // export * from './withCORSProxy'; +export * from './romanize'; export * from './youtubers'; diff --git a/packages/core/src/blitzkit/romanize.ts b/packages/core/src/blitzkit/romanize.ts new file mode 100644 index 000000000..09485e760 --- /dev/null +++ b/packages/core/src/blitzkit/romanize.ts @@ -0,0 +1,45 @@ +/** + * Thank you, Rene Pot! + * + * https://stackoverflow.com/a/9083076/12294756 + */ +export function romanize(num: number) { + if (isNaN(num)) return NaN; + var digits = String(+num).split(''), + key = [ + '', + 'C', + 'CC', + 'CCC', + 'CD', + 'D', + 'DC', + 'DCC', + 'DCCC', + 'CM', + '', + 'X', + 'XX', + 'XXX', + 'XL', + 'L', + 'LX', + 'LXX', + 'LXXX', + 'XC', + '', + 'I', + 'II', + 'III', + 'IV', + 'V', + 'VI', + 'VII', + 'VIII', + 'IX', + ], + roman = '', + i = 3; + while (i--) roman = (key[+digits.pop()! + i * 10] || '') + roman; + return Array(+digits.join('') + 1).join('M') + roman; +} diff --git a/packages/website/src/components/CrewSkillManager.tsx b/packages/website/src/components/CrewSkillManager.tsx index a116dae4e..55503d557 100644 --- a/packages/website/src/components/CrewSkillManager.tsx +++ b/packages/website/src/components/CrewSkillManager.tsx @@ -2,8 +2,7 @@ import { asset, fetchSkillDefinitions, permanentSkills, - TIER_ROMAN_NUMERALS, - type Tier, + romanize, } from '@blitzkit/core'; import { Flex } from '@radix-ui/themes'; import { GenericTankComponentButton } from './ModuleButtons/GenericTankComponentButton'; @@ -31,9 +30,7 @@ export function CrewSkillManager({ key={skill} special={!permanentSkills.includes(skill)} selected={level > 0} - discriminator={ - level === 0 ? undefined : TIER_ROMAN_NUMERALS[level as Tier] - } + discriminator={level === 0 ? undefined : romanize(level)} icon={asset(`icons/skills/${skill}.webp`)} onClick={(event) => { if (!onChange) return;