From fd314cf2ecd178d7b1a8d2ffdd2d9c52db3457ed Mon Sep 17 00:00:00 2001 From: neru Date: Tue, 2 Jun 2026 03:57:31 -0300 Subject: [PATCH] feat: make finale text infinite --- src/app/fear/scene-components/finale-text.tsx | 47 +++++++++++-------- src/app/fear/state.ts | 3 +- 2 files changed, 28 insertions(+), 22 deletions(-) diff --git a/src/app/fear/scene-components/finale-text.tsx b/src/app/fear/scene-components/finale-text.tsx index 85718ce..513bbaa 100644 --- a/src/app/fear/scene-components/finale-text.tsx +++ b/src/app/fear/scene-components/finale-text.tsx @@ -1,35 +1,42 @@ import { JSX, useEffect, useState } from "react" -import { FEAR_SETTINGS, fearState } from "../state" +import { fearState } from "../state" import './finale-text.css'; export default function FinaleText() { - const [progression, setProgression] = useState(fearState.finaleProgression); - const [wasCaught, setWasCaught] = useState(fearState.isRustActive); + const [wasCaught, setWasCaught] = useState(fearState.wasCaught); + const [elements, setElements] = useState([]); useEffect(() => { const unsubscribe = fearState.subscribe(() => { - setProgression(fearState.finaleProgression); setWasCaught(fearState.wasCaught) }); return () => unsubscribe(); - }); - - let elementCount = (FEAR_SETTINGS.EVENT_FINALE_TEXT_COUNT / FEAR_SETTINGS.EVENT_FINALE_DURATION) * progression; - - let testElements: Array = []; - - for (let x = 0; x < elementCount; x++) - testElements.push(the deal has been sealed) + }, []); - if (wasCaught) - return (<> -
- {testElements} -
-
- ) + useEffect(() => { + if (!wasCaught) + return; - return <> + const interval = setInterval(() => { + setElements((prev) => [ + ...prev, + + the deal has been sealed + + ]); + }, 25); + + return () => clearInterval(interval); + }, [wasCaught]); + + if (!wasCaught) return null; + + return (<> +
+ {elements} +
+
+ ) } \ No newline at end of file diff --git a/src/app/fear/state.ts b/src/app/fear/state.ts index 37a7bfe..ef0e107 100644 --- a/src/app/fear/state.ts +++ b/src/app/fear/state.ts @@ -14,8 +14,7 @@ export const FEAR_SETTINGS = { EVENT_RUST_LOOP_COUNT: 4, EVENT_FINALE_LOOP_COUNT: 5, - EVENT_FINALE_DURATION: 3, - EVENT_FINALE_TEXT_COUNT: 128, + EVENT_FINALE_DURATION: 1, TEST_MODE: false };