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:
co-authored by
Claude Opus 5
parent
ab43656f71
commit
2c51f639be
+25
-1
@@ -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.
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user