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 (
-
+ */}
);
@@ -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];