From e6bfcbe96071ab0ba1af970fce689c20910c55b0 Mon Sep 17 00:00:00 2001 From: Tom Boullay Date: Sat, 30 May 2026 20:11:40 +0200 Subject: [PATCH] feat(intro): polish loading transition --- src/components/ui/SceneLoadingOverlay.tsx | 50 +++++++- .../ui/intro/FadeToVideoOverlay.tsx | 14 +++ src/components/ui/intro/index.ts | 1 + src/data/game/gameStateConfig.ts | 1 + src/index.css | 119 ++++++++++++------ src/pages/page.tsx | 23 +++- src/types/game.ts | 1 + src/utils/map/loadMapSceneData.ts | 47 ++++--- src/world/GameMusic.tsx | 2 +- 9 files changed, 195 insertions(+), 63 deletions(-) create mode 100644 src/components/ui/intro/FadeToVideoOverlay.tsx diff --git a/src/components/ui/SceneLoadingOverlay.tsx b/src/components/ui/SceneLoadingOverlay.tsx index d5c66c9..b58dbd8 100644 --- a/src/components/ui/SceneLoadingOverlay.tsx +++ b/src/components/ui/SceneLoadingOverlay.tsx @@ -1,5 +1,13 @@ import type { SceneLoadingState } from "@/types/world/sceneLoading"; +const LOADING_BACKGROUND_PATH = "/assets/bg-site.png"; +const LOADING_LOGO_PATH = "/assets/logo/logo.jpg"; + +for (const path of [LOADING_BACKGROUND_PATH, LOADING_LOGO_PATH]) { + const image = new Image(); + image.src = path; +} + interface SceneLoadingOverlayProps { state: SceneLoadingState; } @@ -15,11 +23,47 @@ export function SceneLoadingOverlay({ className={`scene-loading-overlay${isReady ? " scene-loading-overlay--ready" : ""}`} aria-live="polite" > -
- {state.currentStep} + +
+ La Fabrik Durable +
+
+
+ Loading... + +
+ {progress}% +
- {progress}%
diff --git a/src/components/ui/intro/FadeToVideoOverlay.tsx b/src/components/ui/intro/FadeToVideoOverlay.tsx new file mode 100644 index 0000000..dfe341b --- /dev/null +++ b/src/components/ui/intro/FadeToVideoOverlay.tsx @@ -0,0 +1,14 @@ +export function FadeToVideoOverlay(): React.JSX.Element { + return ( +