// Title · Story · Briefing (dossier) · Boot — the "cold" pre-investigation screens. import { useEffect, useRef, useState } from 'preact/hooks' import type { ComponentChildren } from 'preact' import { useTypewriter } from '../engine/pixel' import { useGame } from '../store' import type { PublicCase } from '../types' import { playSfx } from '../ui/audio' import { BottomNav, Btn, Controls, ExhibitArt, HintButton, Hud, Panel, Portrait, Scene, Stamp } from '../ui/components' export function TitleScreen() { const g = useGame() const c = g.case const [enterId, setEnterId] = useState(false) const [idVal, setIdVal] = useState(c.id) const pull = () => { const id = idVal.trim() if (id) g.loadCase(id) // load that exact case (fresh run) and jump straight into it } return (
Every case is generated. The city, the body, the lies. Solve one no one has ever seen.
{body} {!done && }
{c.victim.bio}
FOUND — {c.found}
CAUSE — {c.cause}
Photographed and logged at the scene. Examine each on the wall.
Those who stayed when the others fled the sirens. Each had reason to be near.
One of them is lying. Find the crack.