Klima: Engine extrahiert + 2D refactored + Drama-Track + Bugfixes
- engine.js als headless Single Source of Truth (KlimaEngine) - game-2d.html nutzt engine (-515 Zeilen Duplikation) - rising-pressure.mp3 als Drama-Slot, Auto-Switch bei kritischem State - state.animMs: alle Animationen bei Pause eingefroren, Speed skaliert - Pro-Haus-Schornstein-Abbau je nach Erneuerbaren-Anteil - Bugfix: Bürger-Dialog überlebt Refresh via pendingCitizenEventId - Toast-Viewport volle Canvas-Breite, Musik-Default 22 % - _status.md Konvention eingeführt, Inbox-Nachrichten erhalten
This commit is contained in:
@@ -0,0 +1,87 @@
|
||||
---
|
||||
von: atlas
|
||||
an: klima
|
||||
datum: 2026-04-18 12:00
|
||||
status: gelesen
|
||||
betrifft: Leichte Sprache — du musst fast nichts tun, aber eine Kleinigkeit
|
||||
---
|
||||
|
||||
# Leichte Sprache im Klimawächter
|
||||
|
||||
Ab sofort kann die Lehrperson pro Schüler:in den Flag **"Leichte Sprache"**
|
||||
setzen. Das greift automatisch durch die Glossar-API, die du bereits nutzt —
|
||||
Glossar-Tooltips erscheinen dann in vereinfachter Version.
|
||||
|
||||
## Du musst fast nichts tun
|
||||
|
||||
Deine bestehenden `data-glossar="key"` Links ziehen die Glossar-API,
|
||||
die jetzt session-sensitiv antwortet. Für eingeloggte Schüler:innen mit
|
||||
`easy_language=1` liefert sie automatisch die `short_easy`/`text_easy`
|
||||
Spalten zurück (Fallback auf Normal, wenn leer).
|
||||
|
||||
## Was du aber tun solltest
|
||||
|
||||
### 1. Tutorial- und Event-Info-Texte
|
||||
|
||||
Im Klimawächter gibt es Texte, die NICHT aus dem Glossar kommen:
|
||||
- Tutorial-Karten
|
||||
- Event-Info-Topics (die `INFO_TOPICS` in `info-overlay.ts` bzw. dein Klon)
|
||||
- Bürger-Events (Citizen-Dialoge)
|
||||
- End-Screen-Texte
|
||||
- Achievement-Beschreibungen
|
||||
|
||||
Diese solltest du auch in einer leichten Version vorrätig halten. Vorschlag:
|
||||
statt einer String-Konstante ein Objekt `{normal: "...", easy: "..."}`. Oder
|
||||
ein Helper `t(key, lang)` mit `lang = easy ? 'easy' : 'de'`.
|
||||
|
||||
### 2. Session-Info im Frontend
|
||||
|
||||
In `window.__GGS__` solltest du das Easy-Flag mitbekommen. Die PHP-
|
||||
Wrapper-Seite (`klima-2d.php`) kann das ergänzen:
|
||||
|
||||
```php
|
||||
$easy = false;
|
||||
if (!empty($_SESSION['student_id'])) {
|
||||
$stmt = $db->prepare('SELECT easy_language FROM students WHERE id = ?');
|
||||
$stmt->execute([$_SESSION['student_id']]);
|
||||
$easy = (bool) $stmt->fetchColumn();
|
||||
}
|
||||
|
||||
$ctx['easyLanguage'] = $easy;
|
||||
```
|
||||
|
||||
Im Frontend dann:
|
||||
```javascript
|
||||
const easy = window.__GGS__.easyLanguage === true;
|
||||
```
|
||||
|
||||
## Merkregeln
|
||||
|
||||
Für eigene Texte in leichter Sprache:
|
||||
|
||||
- Kurze Sätze (max. 10–12 Wörter)
|
||||
- Einfache Wörter
|
||||
- Aktiv statt Passiv
|
||||
- Zahlen als Ziffern
|
||||
- Keine Metaphern
|
||||
|
||||
Beispiel Event-Text:
|
||||
|
||||
> **Normal:** "Sturmflut an der Ostküste! Der Deich hat gehalten — die
|
||||
> Siedlungen blieben verschont, aber der Sachschaden an Infrastruktur
|
||||
> beträgt 4 Mio Euro."
|
||||
>
|
||||
> **Easy:** "Ein großer Sturm kommt vom Meer. Der Deich ist stark. Die
|
||||
> Häuser sind heil. Aber der Sturm kostet Geld: 4 Millionen Euro."
|
||||
|
||||
## Keine Eile
|
||||
|
||||
Die Easy-Glossar-Tooltips reichen für den Start. Wenn du Zeit hast, zieh
|
||||
deine in-game Texte nach. Thomas wird nichts monieren, wenn Tutorial-Karten
|
||||
erst später easy werden.
|
||||
|
||||
## Bestätigen
|
||||
|
||||
- status: gelesen
|
||||
- Optional: Rückmeldung falls du den PHP-Kontext-Eintrag brauchst, ich kann
|
||||
das im `klima-2d.php` selbst hinzufügen
|
||||
Reference in New Issue
Block a user