Untertitel vorher wählen, wie den Ton auch

Auf der Detailseite stand „Ton: Deutsch" und liess sich vor dem Start
umstellen — aus gutem Grund: im Spieler umzuschalten heisst, den Strom
neu aufzubauen. Für Untertitel gab es das nicht, obwohl dort dieselbe
Überlegung gilt und die Spuren ohnehin schon dastehen.

Jetzt steht „Untertitel: Keine" daneben. Auch bei nur einer Spur: anders
als beim Ton gibt es hier immer mindestens zwei Möglichkeiten — diese
eine, oder gar keine.

Der Wunsch wird gemerkt wie beim Ton, mit einem dritten Zustand. „Keine"
ist eine Antwort und kein Fehlen einer: wer sie abgewählt hat, will sie
beim nächsten Film auch nicht, während „nie etwas gesagt" offen lässt,
ob eine erzwungene Spur erscheinen darf.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Scarriffle
2026-10-10 21:33:35 +02:00
co-authored by Claude Opus 5
parent ab43656f71
commit 2c51f639be
2 changed files with 92 additions and 2 deletions
+25 -1
View File
@@ -138,6 +138,26 @@ export function tonspracheMerken(sprache: string): void {
try { localStorage.setItem(SPRACHSCHLUESSEL, sprache); } catch { /* Privates Fenster. */ }
}
/** Dasselbe für den Untertitel — mit einem dritten Zustand.
*
* **„Keine" ist eine Antwort, nicht das Fehlen einer.** Wer Untertitel
* abgewählt hat, will sie beim nächsten Film auch nicht; ein leerer Eintrag
* hiesse dagegen „noch nie etwas gesagt", und dann darf eine erzwungene
* Spur durchaus erscheinen. */
const UNTERTITELSCHLUESSEL = 'flaro.untertitelsprache';
/** Der gemerkte Wunsch: eine Sprache, `'keine'` oder `null` für „nie gesagt". */
export function untertitelsprache(): string | null {
try { return localStorage.getItem(UNTERTITELSCHLUESSEL); } catch { return null; }
}
export function untertitelspracheMerken(wunsch: string): void {
try { localStorage.setItem(UNTERTITELSCHLUESSEL, wunsch); } catch { /* Privates Fenster. */ }
}
/** Was „keine Untertitel" im Speicher heisst. */
export const OHNE_UNTERTITEL = 'keine';
/** „Ohne Versatz", „Ton 200 ms später", „Ton 1 s früher". */
function versatzWort(ms: number): string {
if (ms === 0) return 'Ohne Versatz';
@@ -166,6 +186,8 @@ export type Spieleranfrage = {
laenge: number | null;
/** Mit welcher Tonspur gestartet wird — gewählt auf der Detailseite. */
tonspur?: number | null;
/** Mit welchem Untertitel gestartet wird. `null` heisst: keiner. */
untertitelspur?: number | null;
danach: () => void;
};
@@ -213,7 +235,9 @@ export function spieler(anfrage: Spieleranfrage): void {
/** Die gewählte Stufe und Spuren — sie überleben einen Neustart des Stroms. */
let stufe: number | null = null;
let tonspur: number | null = anfrage.tonspur ?? null;
let untertitel: number | null = null;
// **Die Wahl von der Detailseite gilt ab dem ersten Bild.** Sie erst im
// Spieler zu treffen hiesse, die ersten Sätze ohne Untertitel zu sehen.
let untertitel: number | null = anfrage.untertitelspur ?? null;
/** Ob der Server umkodieren soll, egal was das Profil sagt.
*