From b572ac5ea8211b16e92395b3d33514d818f26413 Mon Sep 17 00:00:00 2001 From: tresabhi <43380238+tresabhi@users.noreply.github.com> Date: Tue, 16 Jun 2026 19:44:58 -0500 Subject: [PATCH] graphics and settings --- packages/i18n/strings/en.json | 12 +++ .../public/media/tools/banners/settings.webp | Bin 0 -> 77340 bytes .../website-ue/src/components/Carousel.tsx | 37 ++++++++ .../website-ue/src/components/Code/index.tsx | 7 +- .../components/RendererStats/index.module.css | 29 ++++++ .../src/components/RendererStats/index.tsx | 40 +++++++++ .../src/components/TankModelPart.tsx | 27 +++++- .../TankopediaSandbox/index.module.css | 2 +- .../components/TankopediaSandbox/index.tsx | 5 +- packages/website-ue/src/config/settings.ts | 66 ++++++++++++++ packages/website-ue/src/config/tools.ts | 7 ++ packages/website-ue/src/hooks/useSetting.ts | 24 +++++ .../src/pages/[...locale]/settings/_index.tsx | 83 ++++++++++++++++++ .../pages/[...locale]/settings/index.astro | 19 ++++ packages/website-ue/src/stores/settings.ts | 17 ++++ 15 files changed, 367 insertions(+), 8 deletions(-) create mode 100644 packages/website-ue/public/media/tools/banners/settings.webp create mode 100644 packages/website-ue/src/components/Carousel.tsx create mode 100644 packages/website-ue/src/components/RendererStats/index.module.css create mode 100644 packages/website-ue/src/components/RendererStats/index.tsx create mode 100644 packages/website-ue/src/config/settings.ts create mode 100644 packages/website-ue/src/hooks/useSetting.ts create mode 100644 packages/website-ue/src/pages/[...locale]/settings/_index.tsx create mode 100644 packages/website-ue/src/pages/[...locale]/settings/index.astro create mode 100644 packages/website-ue/src/stores/settings.ts diff --git a/packages/i18n/strings/en.json b/packages/i18n/strings/en.json index 1158b0849..319f77ba7 100644 --- a/packages/i18n/strings/en.json +++ b/packages/i18n/strings/en.json @@ -1,4 +1,11 @@ { + "settings": { + "quality3": { + "low": "Low", + "medium": "Medium", + "high": "High" + } + }, "price": { "free": "Free" }, @@ -159,6 +166,11 @@ "name": "Changelogs", "slogan": "BlitzKit patch notes", "action": "Read up" + }, + "settings": { + "name": "Settings", + "slogan": "", + "action": "" } }, diff --git a/packages/website-ue/public/media/tools/banners/settings.webp b/packages/website-ue/public/media/tools/banners/settings.webp new file mode 100644 index 0000000000000000000000000000000000000000..ff4f757572a31073826ff20540b3aa802316726f GIT binary patch literal 77340 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

ZMMzy2tE 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%0DLIFHw(=?T3hqqjBF6*T~0D+e{W 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 void; + options: ReactNode[]; +} + +export function Carousel({ value, onChange, options }: Props) { + const isMin = value === 0; + const isMax = value === options.length - 1; + + return ( +

+
{ + if (!isMin) onChange(value - 1); + }} + > + +
+ +
{options[value]}
+ +
{ + if (!isMax) onChange(value + 1); + }} + > + +
+
+ ); +} diff --git a/packages/website-ue/src/components/Code/index.tsx b/packages/website-ue/src/components/Code/index.tsx index 8811704e3..ef200ef39 100644 --- a/packages/website-ue/src/components/Code/index.tsx +++ b/packages/website-ue/src/components/Code/index.tsx @@ -1,14 +1,15 @@ -import type { ComponentProps } from "react"; import { classNames } from "../../ui/classNames"; +import { Text, type TextProps } from "../Text"; import styles from "./index.module.css"; -export interface CodeProps extends ComponentProps<"code"> { +export interface CodeProps extends TextProps { + lowContrast?: boolean; variant?: "ghost" | "solid"; } export function Code({ className, variant = "ghost", ...props }: CodeProps) { return ( - ; +} + +function Inner() { + const parent = useRef(null!); + const settings = Settings.use(); + + return ( +
+
+ {stats.map((stat) => ( + + ))} +
+ +
+ {settingsOrder[0].settings.map((setting) => ( + + {setting} = {settings[setting]} + + ))} +
+
+ ); +} diff --git a/packages/website-ue/src/components/TankModelPart.tsx b/packages/website-ue/src/components/TankModelPart.tsx index 8feff02bb..e8a3cee36 100644 --- a/packages/website-ue/src/components/TankModelPart.tsx +++ b/packages/website-ue/src/components/TankModelPart.tsx @@ -1,6 +1,8 @@ import { useGLTF } from "@react-three/drei"; import { useEffect } from "react"; import { Mesh, MeshStandardMaterial } from "three"; +import { SettingQuality3 } from "../config/settings"; +import { useSetting } from "../hooks/useSetting"; interface Props { url: string; @@ -8,6 +10,9 @@ interface Props { } export function TankModelPart({ url, map }: Props) { + const tankQuality = useSetting("tank_quality"); + const lightingQuality = useSetting("lighting_quality"); + const gltf = useGLTF(url); const [root] = gltf.scene.children; @@ -17,16 +22,32 @@ export function TankModelPart({ url, map }: Props) { // TODO: remove this hack and fix the gltf material.vertexColors = false; material.needsUpdate = true; + + if (tankQuality <= SettingQuality3.Medium) { + material.normalMap = null; + } + + if (tankQuality <= SettingQuality3.Low) { + material.metalness = 0; + material.roughness = 1; + + material.metalnessMap = null; + material.roughnessMap = null; + } + + if (tankQuality <= SettingQuality3.Medium) { + material.aoMap = null; + } } } for (const node of Object.values(gltf.nodes)) { if (node instanceof Mesh) { - node.castShadow = true; - node.receiveShadow = true; + node.castShadow = lightingQuality >= SettingQuality3.Medium; + node.receiveShadow = lightingQuality >= SettingQuality3.High; } } - }, [url]); + }, [url, tankQuality]); useEffect(() => { for (const child of root.children) { diff --git a/packages/website-ue/src/components/TankopediaSandbox/index.module.css b/packages/website-ue/src/components/TankopediaSandbox/index.module.css index b4372736a..e545b2a26 100644 --- a/packages/website-ue/src/components/TankopediaSandbox/index.module.css +++ b/packages/website-ue/src/components/TankopediaSandbox/index.module.css @@ -10,7 +10,7 @@ height: 100%; .canvas { - background-color: black; + background-color: black; } } } diff --git a/packages/website-ue/src/components/TankopediaSandbox/index.tsx b/packages/website-ue/src/components/TankopediaSandbox/index.tsx index 695793afb..018cfe79f 100644 --- a/packages/website-ue/src/components/TankopediaSandbox/index.tsx +++ b/packages/website-ue/src/components/TankopediaSandbox/index.tsx @@ -1,6 +1,7 @@ import { type StageParameters } from "@protos/blitz_static_tank_upgrade_single_stage"; import { Canvas } from "@react-three/fiber"; import { fov } from "../../config/camera"; +import { RendererStats } from "../RendererStats"; import { TankModelChassis } from "../TankModelChassis"; import { TankModelGun } from "../TankModelGun"; import { TankModelHull } from "../TankModelHull"; @@ -17,7 +18,9 @@ interface TankopediaSandboxProps { export function TankopediaSandbox({ parameters }: TankopediaSandboxProps) { return (
-
+
+ + ; + +export type SettingName = keyof typeof settings; + +export interface SettingsGroup { + name: string; + settings: SettingName[]; +} + +export const settingsOrder: SettingsGroup[] = [ + { + name: "general", + settings: ["tank_quality", "lighting_quality"], + }, + { + name: "developer", + settings: ["tank_slug_and_id", "render_statistics"], + }, +]; + +export type SettingTypes = Setting["default"]; diff --git a/packages/website-ue/src/config/tools.ts b/packages/website-ue/src/config/tools.ts index b63b6bb11..99376e7ac 100644 --- a/packages/website-ue/src/config/tools.ts +++ b/packages/website-ue/src/config/tools.ts @@ -91,4 +91,11 @@ export const tools: Record = { accent: "gray", banner_background_position: "bottom", }, + + settings: { + id: "settings", + + accent: "gray", + banner_background_position: "center", + }, }; diff --git a/packages/website-ue/src/hooks/useSetting.ts b/packages/website-ue/src/hooks/useSetting.ts new file mode 100644 index 000000000..46a256d00 --- /dev/null +++ b/packages/website-ue/src/hooks/useSetting.ts @@ -0,0 +1,24 @@ +import { + settings, + type SettingName, + type SettingType, + type SettingTypes, +} from "../config/settings"; +import { Settings } from "../stores/settings"; + +export function useSetting(name: SettingName): Type { + const value = Settings.use((state) => state[name]); + + return value as Type; +} + +export function useSettingDeferred( + name: SettingName, +): Type { + const value = Settings.useDeferred( + (state) => state[name], + settings[name].default, + ); + + return value as Type; +} diff --git a/packages/website-ue/src/pages/[...locale]/settings/_index.tsx b/packages/website-ue/src/pages/[...locale]/settings/_index.tsx new file mode 100644 index 000000000..de63844b3 --- /dev/null +++ b/packages/website-ue/src/pages/[...locale]/settings/_index.tsx @@ -0,0 +1,83 @@ +import { Carousel } from "../../../components/Carousel"; +import { Heading } from "../../../components/Heading"; +import { Text } from "../../../components/Text"; +import { + SettingBoolean, + SettingQuality3, + settings, + settingsOrder, + SettingType, + type Setting, + type SettingName, + type SettingsGroup, +} from "../../../config/settings"; +import { withLocale } from "../../../hocs/withLocale"; +import { useSetting } from "../../../hooks/useSetting"; +import { useStrings } from "../../../hooks/useStrings"; +import { Settings } from "../../../stores/settings"; + +export const Page = withLocale(() => { + return settingsOrder.map((group) => ); +}); + +interface GroupProps { + group: SettingsGroup; +} + +function Group({ group }: GroupProps) { + return ( +
+ {group.name} + +
+ {group.settings.map((setting) => ( + + ))} +
+
+ ); +} + +interface SettingProps { + name: SettingName; +} + +function Setting({ name }: SettingProps) { + const setting = settings[name]; + + return ( +
+ {name} + + {setting.type === SettingType.Boolean && } + {setting.type === SettingType.Quality3 && } +
+ ); +} + +function TypeBoolean({ name }: SettingProps) { + const value = useSetting(name); + + return null; +} + +function TypeQuality3({ name }: SettingProps) { + const value = useSetting(name); + const strings = useStrings(); + + return ( + { + Settings.mutate((draft) => { + draft[name] = value; + }); + }} + options={[ + strings.settings.quality3.low, + strings.settings.quality3.medium, + strings.settings.quality3.high, + ]} + /> + ); +} diff --git a/packages/website-ue/src/pages/[...locale]/settings/index.astro b/packages/website-ue/src/pages/[...locale]/settings/index.astro new file mode 100644 index 000000000..29272eb65 --- /dev/null +++ b/packages/website-ue/src/pages/[...locale]/settings/index.astro @@ -0,0 +1,19 @@ +--- +import { Section } from "../../../components/Section"; +import ToolBanner from "../../../components/ToolBanner.astro"; +import { tools } from "../../../config/tools"; +import BaseLayout from "../../../layouts/BaseLayout.astro"; +import { Page } from "./_index"; + +export { getStaticPaths } from "../index.astro"; + +const { locale } = Astro.props; +--- + + + + +
+ +
+
diff --git a/packages/website-ue/src/stores/settings.ts b/packages/website-ue/src/stores/settings.ts new file mode 100644 index 000000000..8efa9ecaf --- /dev/null +++ b/packages/website-ue/src/stores/settings.ts @@ -0,0 +1,17 @@ +import { Varuna } from "varuna"; +import { + settings, + type SettingName, + type SettingTypes, +} from "../config/settings"; + +type Settings = Record; + +const defaults: Partial = {}; + +for (const key in settings) { + const setting = settings[key as SettingName]; + defaults[key as SettingName] = setting.default; +} + +export const Settings = new Varuna(defaults as Settings, "settings");