From 476d8e804acf57e1e8a18801a30e98a1330b7389 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tr=C3=A8sAbhi?= <43380238+tresabhi@users.noreply.github.com> Date: Thu, 14 Mar 2024 17:31:11 -0500 Subject: [PATCH] feat: some ui --- package.json | 2 +- src/commands/research.tsx | 132 ++++++++++++++++++++++++++++- src/components/CommandWrapper.tsx | 2 +- src/core/blitzkrieg/tankIconPng.ts | 9 ++ yarn.lock | 2 +- 5 files changed, 141 insertions(+), 6 deletions(-) create mode 100644 src/core/blitzkrieg/tankIconPng.ts diff --git a/package.json b/package.json index 3546cc0e0..110e4ffdc 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,7 @@ "@octokit/plugin-throttling": "^8.1.3", "@octokit/rest": "^20.0.1", "@prisma/client": "^5.4.1", - "@radix-ui/colors": "^3.0.0-rc.4", + "@radix-ui/colors": "^3.0.0", "@radix-ui/react-icons": "^1.3.0", "@radix-ui/themes": "^2.0.1", "@react-three/drei": "^9.93.0", diff --git a/src/commands/research.tsx b/src/commands/research.tsx index 8c540c1d9..ef66a62ca 100644 --- a/src/commands/research.tsx +++ b/src/commands/research.tsx @@ -9,11 +9,17 @@ import { buildTechTreeLine } from '../core/blitzkrieg/buildTechTreeLine'; import { emblemIdToURL } from '../core/blitzkrieg/emblemIdToURL'; import { resolveAncestry } from '../core/blitzkrieg/resolveAncestry'; import { tankDefinitions } from '../core/blitzkrieg/tankDefinitions'; +import { + TANK_ICONS, + TIER_ROMAN_NUMERALS, +} from '../core/blitzkrieg/tankDefinitions/constants'; +import { tankIconPng } from '../core/blitzkrieg/tankIconPng'; import addTankChoices from '../core/discord/addTankChoices'; import autocompleteTanks from '../core/discord/autocompleteTanks'; import { createLocalizedCommand } from '../core/discord/createLocalizedCommand'; import resolvePlayerFromCommand from '../core/discord/resolvePlayerFromCommand'; import { CommandRegistry } from '../events/interactionCreate'; +import { theme } from '../stitches.config'; export const researchCommand = new Promise((resolve) => { resolve({ @@ -41,15 +47,19 @@ export const researchCommand = new Promise((resolve) => { const { id, region } = await resolvePlayerFromCommand(interaction); const tankStats = await getTankStats(region, id, interaction.locale); const ancestry = await resolveAncestry(tankId); - const firstOwnedTechTree = ancestry.find((id) => - tankStats.some(({ tank_id }) => tank_id === id), + const firstOwnedTechTree = ancestry.find( + (id) => + awaitedTankDefinitions[id].tier === 1 || + tankStats.some(({ tank_id }) => tank_id === id), ); if (firstOwnedTechTree === undefined) { return `idk what to call this error lol`; } - const line = await buildTechTreeLine(firstOwnedTechTree, tankId); + const line = ( + await buildTechTreeLine(firstOwnedTechTree, tankId) + ).reverse(); const { nickname } = await getAccountInfo(region, id); const clan = (await getClanAccountInfo(region, id, ['clan']))?.clan; const clanImage = clan ? emblemIdToURL(clan.emblem_set_id) : undefined; @@ -61,6 +71,122 @@ export const researchCommand = new Promise((resolve) => { image={clanImage} description={`Research • ${tank.name}`} /> + +
+ {await Promise.all( + line.map(async (id) => { + const tank = awaitedTankDefinitions[id]; + + return ( +
+
+ + {TIER_ROMAN_NUMERALS[tank.tier]} + +
+ +
+
+ +
+ +
+ + + + {tank.name} + +
+
+ +
+ Research: 144,000 + Upgrades: 62,000 + Purchase: 1,500,000 + Equipment: 450,000 +
+
+ ); + }), + )} +
); }, diff --git a/src/components/CommandWrapper.tsx b/src/components/CommandWrapper.tsx index bf9b99f49..bc75f1756 100644 --- a/src/components/CommandWrapper.tsx +++ b/src/components/CommandWrapper.tsx @@ -16,7 +16,7 @@ export default function CommandWrapper({ children, fat }: CommandWrapperProps) { gap: 16, width: 480, color: theme.colors.textHighContrast, - background: 'url(https://i.imgur.com/PhS06NJ.png)', + backgroundColor: theme.colors.appBackground1, }} > {children} diff --git a/src/core/blitzkrieg/tankIconPng.ts b/src/core/blitzkrieg/tankIconPng.ts new file mode 100644 index 000000000..1fb197cfb --- /dev/null +++ b/src/core/blitzkrieg/tankIconPng.ts @@ -0,0 +1,9 @@ +import sharp from 'sharp'; +import { tankIcon } from './tankIcon'; + +export async function tankIconPng(id: number) { + const imageResponse = await fetch(tankIcon(id)); + const imageBufferWEBP = await imageResponse.arrayBuffer(); + const imageBufferPNG = await sharp(imageBufferWEBP).png().toBuffer(); + return `data:image/png;base64,${imageBufferPNG.toString('base64')}`; +} diff --git a/yarn.lock b/yarn.lock index 7029eaa43..f02ec5e07 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1156,7 +1156,7 @@ dependencies: "@prisma/debug" "5.9.1" -"@radix-ui/colors@^3.0.0", "@radix-ui/colors@^3.0.0-rc.4": +"@radix-ui/colors@^3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@radix-ui/colors/-/colors-3.0.0.tgz#e8a591a303c44e503bd1212cacf40a09511165e0" integrity sha512-FUOsGBkHrYJwCSEtWRCIfQbZG7q1e6DgxCIOe1SUQzDe/7rXXeA47s8yCn6fuTNQAj1Zq4oTFi9Yjp3wzElcxg==