feat: make finale text infinite

This commit is contained in:
2026-06-02 03:57:31 -03:00
parent e3ab974988
commit fd314cf2ec
2 changed files with 28 additions and 22 deletions
+23 -16
View File
@@ -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<JSX.Element[]>([]);
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<JSX.Element> = [];
for (let x = 0; x < elementCount; x++)
testElements.push(<span className="finale-text" key={x}>the deal has been sealed</span>)
}, []);
if (wasCaught)
useEffect(() => {
if (!wasCaught)
return;
const interval = setInterval(() => {
setElements((prev) => [
...prev,
<span className="finale-text" key={prev.length}>
the deal has been sealed
</span>
]);
}, 25);
return () => clearInterval(interval);
}, [wasCaught]);
if (!wasCaught) return null;
return (<>
<div className="finale-container">
{testElements}
{elements}
</div>
<div className="scanlines" />
</>)
return <></>
}
+1 -2
View File
@@ -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
};