diff --git a/cspell.json b/cspell.json index edc0cd11e..6ac80dcae 100644 --- a/cspell.json +++ b/cspell.json @@ -7,6 +7,7 @@ "oodle", "blitzkit", "webp", - "hocs" + "hocs", + "cooldown" ] } \ No newline at end of file diff --git a/packages/website-ue/public/media/status/ammo_bay_damaged.png b/packages/website-ue/public/media/status/ammo_bay_damaged.png new file mode 100644 index 000000000..fbcf9b7d5 Binary files /dev/null and b/packages/website-ue/public/media/status/ammo_bay_damaged.png differ diff --git a/packages/website-ue/public/media/status/caught_on_fire.png b/packages/website-ue/public/media/status/caught_on_fire.png new file mode 100644 index 000000000..691dde6c1 Binary files /dev/null and b/packages/website-ue/public/media/status/caught_on_fire.png differ diff --git a/packages/website-ue/public/media/status/chassis_damaged.png b/packages/website-ue/public/media/status/chassis_damaged.png new file mode 100644 index 000000000..90995b454 Binary files /dev/null and b/packages/website-ue/public/media/status/chassis_damaged.png differ diff --git a/packages/website-ue/public/media/status/commander_dead.png b/packages/website-ue/public/media/status/commander_dead.png new file mode 100644 index 000000000..dd3bde670 Binary files /dev/null and b/packages/website-ue/public/media/status/commander_dead.png differ diff --git a/packages/website-ue/public/media/status/driver_dead.png b/packages/website-ue/public/media/status/driver_dead.png new file mode 100644 index 000000000..890b0fe4d Binary files /dev/null and b/packages/website-ue/public/media/status/driver_dead.png differ diff --git a/packages/website-ue/public/media/status/engine_damaged.png b/packages/website-ue/public/media/status/engine_damaged.png new file mode 100644 index 000000000..c062f0c95 Binary files /dev/null and b/packages/website-ue/public/media/status/engine_damaged.png differ diff --git a/packages/website-ue/public/media/status/fuel_tank_damaged.png b/packages/website-ue/public/media/status/fuel_tank_damaged.png new file mode 100644 index 000000000..bba8b0a3b Binary files /dev/null and b/packages/website-ue/public/media/status/fuel_tank_damaged.png differ diff --git a/packages/website-ue/public/media/status/gun_damaged.png b/packages/website-ue/public/media/status/gun_damaged.png new file mode 100644 index 000000000..687b11316 Binary files /dev/null and b/packages/website-ue/public/media/status/gun_damaged.png differ diff --git a/packages/website-ue/public/media/status/gunner_dead.png b/packages/website-ue/public/media/status/gunner_dead.png new file mode 100644 index 000000000..db7d531e4 Binary files /dev/null and b/packages/website-ue/public/media/status/gunner_dead.png differ diff --git a/packages/website-ue/public/media/status/loader_dead.png b/packages/website-ue/public/media/status/loader_dead.png new file mode 100644 index 000000000..1da191db1 Binary files /dev/null and b/packages/website-ue/public/media/status/loader_dead.png differ diff --git a/packages/website-ue/public/media/status/shooting.png b/packages/website-ue/public/media/status/shooting.png new file mode 100644 index 000000000..7c65495a3 Binary files /dev/null and b/packages/website-ue/public/media/status/shooting.png differ diff --git a/packages/website-ue/public/media/status/turret_damaged.png b/packages/website-ue/public/media/status/turret_damaged.png new file mode 100644 index 000000000..a03a7aa2d Binary files /dev/null and b/packages/website-ue/public/media/status/turret_damaged.png differ diff --git a/packages/website-ue/public/media/status/viewport_damaged.png b/packages/website-ue/public/media/status/viewport_damaged.png new file mode 100644 index 000000000..34f01cb1a Binary files /dev/null and b/packages/website-ue/public/media/status/viewport_damaged.png differ diff --git a/packages/website-ue/src/components/TankopediaCharacteristics/index.module.css b/packages/website-ue/src/components/TankopediaCharacteristics/index.module.css index 3ad74f6ef..8b7773572 100644 --- a/packages/website-ue/src/components/TankopediaCharacteristics/index.module.css +++ b/packages/website-ue/src/components/TankopediaCharacteristics/index.module.css @@ -41,8 +41,8 @@ } .content { - --cell-width: 3rem; - --toy-span: 5; + --cell-width: 2rem; + --toy-span: 6; display: grid; grid-auto-rows: var(--cell-width); @@ -71,14 +71,14 @@ .bar-wrapper { flex: 1; - height: var(--space-2); + height: var(--space-1); background-color: var(--gray-3); border-radius: var(--radius-max); overflow: hidden; .bar { - background-color: green; + background-color: var(--jade-9); width: 75%; height: 100%; } diff --git a/packages/website-ue/src/components/TankopediaLoadout/index.module.css b/packages/website-ue/src/components/TankopediaLoadout/index.module.css index 3139b9a63..e11c6766b 100644 --- a/packages/website-ue/src/components/TankopediaLoadout/index.module.css +++ b/packages/website-ue/src/components/TankopediaLoadout/index.module.css @@ -13,13 +13,25 @@ } } - .state { + .states { display: flex; - flex-wrap: wrap; - gap: var(--space-3); + flex-direction: column; + gap: var(--space-2); - .toggle { - font-size: 2em; + .group { + display: flex; + flex-wrap: wrap; + gap: var(--space-2); + + .state { + font-size: 1.25em; + + &[data-selected="true"] { + img { + filter: sepia(1) saturate(10); + } + } + } } } diff --git a/packages/website-ue/src/components/TankopediaLoadout/index.tsx b/packages/website-ue/src/components/TankopediaLoadout/index.tsx index c3cbf5e03..e9803456f 100644 --- a/packages/website-ue/src/components/TankopediaLoadout/index.tsx +++ b/packages/website-ue/src/components/TankopediaLoadout/index.tsx @@ -84,22 +84,28 @@ function State() { -
- {vehicleStatusKeys.map((key) => ( - { - Tankopedia.mutate((draft) => { - draft.protagonist.status[key] = !draft.protagonist.status[key]; - }); - }} - > - - +
+ {vehicleStatusKeys.map((group, index) => ( +
+ {group.map((key) => ( + { + Tankopedia.mutate((draft) => { + draft.protagonist.status[key] = + !draft.protagonist.status[key]; + }); + }} + > + + + ))} +
))}
diff --git a/packages/website-ue/src/components/TankopediaSandbox/index.tsx b/packages/website-ue/src/components/TankopediaSandbox/index.tsx index 129ba7acb..4185d9eb6 100644 --- a/packages/website-ue/src/components/TankopediaSandbox/index.tsx +++ b/packages/website-ue/src/components/TankopediaSandbox/index.tsx @@ -1,6 +1,5 @@ import { OrbitControls } from "@react-three/drei"; -import { Canvas, useLoader } from "@react-three/fiber"; -import { FogExp2 } from "three"; +import { useLoader } from "@react-three/fiber"; import { GLTFLoader } from "three-stdlib"; import styles from "./index.module.css"; @@ -8,14 +7,14 @@ export function TankopediaSandbox() { return (
- {!import.meta.env.SSR && } - + */}
); @@ -24,10 +23,9 @@ export function TankopediaSandbox() { function Content() { const gltf = useLoader(GLTFLoader, "/amogos.glb"); - gltf.scene.traverse(child => - { + gltf.scene.traverse((child) => { child.castShadow = true; - }) + }); return ( <> diff --git a/packages/website-ue/src/pages/[...locale]/tanks/[slug]/index.astro b/packages/website-ue/src/pages/[...locale]/tanks/[slug]/index.astro index a1bd40bdb..e41516244 100644 --- a/packages/website-ue/src/pages/[...locale]/tanks/[slug]/index.astro +++ b/packages/website-ue/src/pages/[...locale]/tanks/[slug]/index.astro @@ -2,10 +2,10 @@ import "@radix-ui/colors/violet-dark.css"; import { api } from "../../../../api/dynamic"; import { mixStaticPaths } from "../../../../astro/mixStaticPaths"; +import ColorScale from "../../../../components/ColorScale.astro"; import BaseLayout from "../../../../layouts/BaseLayout.astro"; import { getStaticPaths as _getStaticPaths } from "../index.astro"; import { Page } from "./_index"; -import ColorScale from "../../../../components/ColorScale.astro"; export const getStaticPaths = mixStaticPaths(_getStaticPaths, async () => { const { list } = await api.tankList(); @@ -21,5 +21,8 @@ const { id, locale } = Astro.props; + + + diff --git a/packages/website-ue/src/tankopedia/characteristics.ts b/packages/website-ue/src/tankopedia/characteristics.ts index f26c2bcba..c6897a338 100644 --- a/packages/website-ue/src/tankopedia/characteristics.ts +++ b/packages/website-ue/src/tankopedia/characteristics.ts @@ -242,12 +242,12 @@ export const characteristics = { const maxSpeed = characteristic("speed_forward") as number; return ( - (state.isGunDamaged ? gunDamaged : 1) * + (state.status.gun_damaged ? gunDamaged : 1) * (base + (state.speed / maxSpeed) * movement + - (state.isHullTraversing ? vehicleRotation : 0) + - (state.isTurretTraversing ? turretRotation : 0) + - (state.isShooting ? afterShot : 0)) + (state.status.hull_traversing ? vehicleRotation : 0) + + (state.status.turret_traversing ? turretRotation : 0) + + (state.status.shooting ? afterShot : 0)) ); }, @@ -376,7 +376,7 @@ export const characteristics = { 100 * base * (1 + moving * state.speed) * - (state.isShooting ? shooting : 1) + (state.status.shooting ? shooting : 1) ); }, @@ -409,7 +409,7 @@ export const characteristics = { }, id({ state }) { - return state.id; + return state.id.split(".").at(-1)!; }, slug({ tank }) { diff --git a/packages/website-ue/src/tankopedia/characteristicsOrder.tsx b/packages/website-ue/src/tankopedia/characteristicsOrder.tsx index f93bf1d10..d33885532 100644 --- a/packages/website-ue/src/tankopedia/characteristicsOrder.tsx +++ b/packages/website-ue/src/tankopedia/characteristicsOrder.tsx @@ -103,8 +103,13 @@ export const characteristicsOrder: CharacteristicsGroup[] = [ { name: "module_damage", units: "hp" }, { name: "clip_size" }, { name: "intra_clip", decimals: 2, units: "s" }, + // { name: "burst_size" }, // TODO: implement burst size + // { name: 'intra_burst', decimals: 2, units: "s" }, // TODO: implement intra burst + // TODO: investigate ATTRIBUTE_NAME_SHELLS_SLOTS + // TODO: investigate ATTRIBUTE_NAME_RELOAD_SPEED_SCALE + // TODO: investigate ATTRIBUTE_NAME_AVERAGE_THICKNESS - { toy: "ricochet" }, + // { toy: "ricochet" }, { name: "penetration", units: "mm" }, { name: "caliber", units: "mm" }, { name: "normalization", units: "deg" }, @@ -114,29 +119,33 @@ export const characteristicsOrder: CharacteristicsGroup[] = [ { name: "shell_range", units: "m" }, { name: "shell_capacity" }, - { toy: "aim_time" }, + // { toy: "aim_time" }, { name: "aim_time", decimals: 1, units: "s" }, { name: "dispersion", decimals: 3, units: "m" }, + // { name: "dispersion_angle", decimals: 3, units: "m" }, // TODO: implement dispersion angle - { toy: "flexibility" }, + // { toy: "flexibility" }, { name: "gun_depression", decimals: 0, units: "deg" }, { name: "gun_elevation", decimals: 0, units: "deg" }, + // { name: "gun_yaw_range", decimals: 0, units: "deg" }, // TODO: implement gun yaw range ], }, { group: "maneuverability", order: [ - { toy: "traverse" }, + // { toy: "traverse" }, { name: "speed_forward", units: "km_h" }, { name: "speed_backward", units: "km_h" }, { name: "engine_power", units: "bhp" }, + // { name: "brake_force", units: "N" }, // TODO: implement brake force { name: "weight", decimals: 1, units: "t" }, { name: "terrain_coefficient" }, { name: "power_to_weight", decimals: 1, units: "bhp_t" }, { name: "hull_traverse_speed", units: "deg_s" }, { name: "turret_traverse_speed", units: "deg_s" }, + // { name: "gun_traverse_speed", units: "deg_s" }, // TODO: implement gun traverse speed ], }, { @@ -144,13 +153,18 @@ export const characteristicsOrder: CharacteristicsGroup[] = [ order: [ { name: "health", units: "hp" }, { name: "fire_chance", units: "%" }, + // { name: "fire_health_burn", units: "hp_s" }, // TODO: implement fire health burn + // { name: "ramming_resistance", units: "%" }, // TODO: implement ramming resistance - { toy: "view_range" }, + // { toy: "view_range" }, { name: "view_range", units: "m" }, { name: "camouflage", decimals: 0, units: "%" }, - // TODO: implement width - // { name: "width", units: "m" }, + // { name: "consumable_cooldown", decimals: 0, units: "%" }, // TODO: implement consumable cooldown + // { name: "consumable_duration", decimals: 0, units: "s" }, // TODO: implement consumable duration + // { name: "consumable_reload", decimals: 0, units: "s" }, // TODO: implement consumable reload + + // { name: "width", units: "m" }, // TODO: implement width { name: "height", units: "m" }, { name: "length", units: "m" }, { name: "volume", units: "m" }, diff --git a/packages/website-ue/src/tankopedia/tankState.ts b/packages/website-ue/src/tankopedia/tankState.ts index 11851e44b..2f1979e74 100644 --- a/packages/website-ue/src/tankopedia/tankState.ts +++ b/packages/website-ue/src/tankopedia/tankState.ts @@ -21,23 +21,19 @@ export interface TankState { } export const vehicleStatusKeys = [ - "commander_dead", - "gunner_dead", - "driver_dead", - "loader_dead", + ["commander_dead", "gunner_dead", "driver_dead", "loader_dead"], - "fuel_tank_damaged", - "engine_damaged", - "chassis_damaged", - "viewport_damaged", - "ammo_bay_damaged", - "gun_damaged", - "turret_damaged", + [ + "fuel_tank_damaged", + "engine_damaged", + "chassis_damaged", + "viewport_damaged", + "ammo_bay_damaged", + "gun_damaged", + "turret_damaged", + ], - "caught_on_fire", - "shooting", - "turret_traversing", - "hull_traversing", + ["caught_on_fire", "shooting", "turret_traversing", "hull_traversing"], ] as const; -export type VehicleStatusKey = (typeof vehicleStatusKeys)[number]; +export type VehicleStatusKey = (typeof vehicleStatusKeys)[number][number];