diff --git a/packages/scripts/src/buildAssets/flags.ts b/packages/scripts/src/buildAssets/flags.ts deleted file mode 100644 index 1168af119..000000000 --- a/packages/scripts/src/buildAssets/flags.ts +++ /dev/null @@ -1,73 +0,0 @@ -import sharp from "sharp"; -import { AssetUploader } from "../core/github/assetUploader"; -import { vfs } from "./constants"; - -export async function flags() { - console.log("Building flags..."); - - using uploader = new AssetUploader("flags"); - const circleFiles = await vfs - .dir(`Data/Gfx/Lobby/flags`) - .then((files) => - files.filter( - (flag) => - flag.startsWith("flag_profile-stat_") && - !flag.endsWith("@2x.packed.webp"), - ), - ); - const scratchedFiles = await vfs - .dir(`Data/Gfx/Lobby/flags`) - .then((files) => - files.filter( - (flag) => - flag.startsWith("flag_tutor-tank_") && - !flag.endsWith("@2x.packed.webp"), - ), - ); - const fadedFiles = await vfs - .dir(`Data/Gfx/Lobby/flags`) - .then((files) => - files.filter( - (flag) => - flag.startsWith("flag_filter_") && flag.endsWith("@2x.packed.webp"), - ), - ); - - for (const flag of circleFiles) { - const image = sharp(await vfs.file(`Data/Gfx/Lobby/flags/${flag}`)); - const content = await image.trim({ threshold: 100 }).toBuffer(); - const name = flag.match(/flag_profile-stat_(.+)\.packed\.webp/)![1]; - - uploader.add({ - content, - path: `flags/circle/${name}.webp`, - }); - } - - for (const flag of scratchedFiles) { - const content = await vfs.file(`Data/Gfx/Lobby/flags/${flag}`); - const name = flag.match(/flag_tutor-tank_(.+)\.packed\.webp/)![1]; - - uploader.add({ - path: `flags/scratched/${name}.webp`, - content, - }); - } - - for (const flag of fadedFiles) { - const content = await sharp(await vfs.file(`Data/Gfx/Lobby/flags/${flag}`)) - .trim({ - threshold: 100, - background: { r: 0, g: 0, b: 0, alpha: 0 }, - }) - .toBuffer(); - const name = flag.match(/flag_filter_(.+)@2x\.packed\.webp/)![1]; - - uploader.add({ - content, - path: `flags/fade_small/${name}.webp`, - }); - } - - await uploader.flush(); -} diff --git a/packages/website/src/pages/[...chunk_api]/flags/scratched/[id].webp.ts b/packages/website/src/pages/[...chunk_api]/flags/scratched/[id].webp.ts new file mode 100644 index 000000000..c56db0a06 --- /dev/null +++ b/packages/website/src/pages/[...chunk_api]/flags/scratched/[id].webp.ts @@ -0,0 +1,40 @@ +import type { APIContext, GetStaticPathsItem } from "astro"; +import { mixStaticPaths } from "../../../../core/blitzkit/mixStaticPaths"; +import { vfs } from "../../../../core/blitzkit/vfs"; +import { getStaticPaths as _getStaticPaths } from "../../_index"; + +export const getStaticPaths = mixStaticPaths(_getStaticPaths, async () => { + const paths: GetStaticPathsItem[] = []; + + const scratchedFiles = await vfs + .dir("Data/Gfx/Lobby/flags") + .then((files) => + files.filter( + (flag) => + flag.startsWith("flag_tutor-tank_") && + !flag.endsWith("@2x.packed.webp"), + ), + ); + + for (const flag of scratchedFiles) { + const path = `Data/Gfx/Lobby/flags/${flag}`; + const id = flag.match(/flag_tutor-tank_(.+)\.packed\.webp/)![1]; + + paths.push({ + params: { id }, + props: { path }, + }); + } + + return paths; +}); + +export async function GET({ props }: APIContext<{ path: string }>) { + const bytes = new Uint8Array(await vfs.file(props.path)); + + return new Response(bytes, { + headers: { + "Content-Type": "image/webp", + }, + }); +}