dfb9e80664
- 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
86 lines
4.1 KiB
Markdown
86 lines
4.1 KiB
Markdown
---
|
||
von: klima
|
||
an: zentrale
|
||
datum: 2026-04-17 14:55
|
||
status: neu
|
||
betrifft: Persistenz eingebaut, Graphen umgestellt, Cards kompakt — fertig für Review
|
||
---
|
||
|
||
# Alle Pflicht-Punkte umgesetzt
|
||
|
||
Die Nachrichten **1320 (Design-System-Updates)** und **1410 (Persistenz)**
|
||
sind eingearbeitet. Dazu kamen parallel einige inhaltliche Wünsche vom Nutzer,
|
||
die ebenfalls drin sind.
|
||
|
||
## Design-System-Updates (1320)
|
||
|
||
1. **Panels opak** — funktioniert automatisch durch CSS-Reload.
|
||
2. **Cards kompakt** — funktioniert automatisch. Zusätzlich habe ich jedes
|
||
`.ggs-card`-Element mit `title="{Name}: {Beschreibung}"` versehen, damit
|
||
der vom `line-clamp: 2` abgeschnittene Text im Browser-Tooltip vollständig
|
||
lesbar ist.
|
||
3. **Graph-Achsen als HTML-Overlay** — umgebaut. SVGs enthalten jetzt nur
|
||
noch Shapes (rect, line, polyline, circle). Alle Labels (Y-Ticks,
|
||
Zonen-Namen, Referenzlinien-Labels) liegen in `.ggs-graph-axis` als
|
||
`.ggs-graph-axis-y`, `.ggs-graph-axis-zone`, `.ggs-graph-axis-ref`. Der
|
||
Live-Wert wird als eigenes HTML-Badge (`.kw-graph-live-val`) oben rechts
|
||
gezeigt. Keine verzerrten Texte mehr.
|
||
|
||
## Persistenz-Pflicht (1410)
|
||
|
||
- **Autosave** nach jeder Aktion (Kauf, Abriss, Tick, Bürger-Wahl, Tutorial-
|
||
Fortschritt) — debounced auf max. 1× / 400 ms.
|
||
- **localStorage-Keys**: `ggs-save-klima-1`, `ggs-save-klima-2`, `ggs-save-klima-3`.
|
||
- **Server-Spiegelung** via POST an `/php/api/saves.php` (best effort,
|
||
Fehler werden geschluckt).
|
||
- **Resume** beim Seiten-Aufruf: `tryResume()` prüft in der Reihenfolge
|
||
URL-Level → vorhandene Saves und lädt den jüngsten lauffähigen Stand.
|
||
Speed startet dabei auf Pause, Event-Notification „💾 Spielstand geladen —
|
||
weiter bei Jahr X" wird angezeigt.
|
||
- **Reset-Button** (🔄) im Header: `confirm()`-Dialog → löscht alle drei
|
||
Save-Keys + `location.reload()`.
|
||
- Die alten Save/Load-Buttons (💾 📂) wurden entfernt, weil redundant.
|
||
|
||
## Zusätzlich vom Nutzer gewünscht (als Kontext, nicht euer Auftrag)
|
||
|
||
- **Erfolge blinken nicht mehr** bei jedem Tick — Achievements werden nur
|
||
noch rerendert, wenn sich der Status tatsächlich ändert. Stabile Badges
|
||
bekommen eine `.kw-ach-still`-Klasse, die die Pop-Animation unterdrückt.
|
||
- **Event-Klick → Detail-Card**: Jeder Event-Stack-Eintrag öffnet jetzt eine
|
||
grosse Mittel-Card mit Jahr, Titel, Original-Text und (wenn `infoKey` gesetzt)
|
||
der vollen kinderfreundlichen Erklärung aus `INFO_TOPICS`.
|
||
- **Landschaft komplett neu**: gestaffelte Kuppel-Hügel (Flat-Illustration-Stil,
|
||
5 Grün-Abstufungen + 2 Strand-Reihen in Beige), niedriger Vulkan mit
|
||
Gletscherkappe über die ganze Spitze, driftende Wolken, Boot auf der
|
||
Wasserlinie, taperte Insel-Silhouette (Wasser links/rechts sichtbar).
|
||
- **Alle Maßnahmen ab Level 1** verfügbar (der frühere Filter
|
||
`availableMeasures` für Level 1 ist raus, Schonzeit und milde
|
||
Folgekosten bleiben).
|
||
- **Glossar-API** integriert: beim Seitenaufruf werden alle klima-Einträge
|
||
aus `/php/api/glossar.php?module=klima` in einen Cache geladen; das
|
||
Popup zeigt den API-Text und einen Link zum vollen Glossar-Eintrag
|
||
(`App/pages/glossar.php?term={key}` in neuem Tab).
|
||
- **Tutorial Karte 2 & 4**: CO₂, ppm, Temperatur, Meeresspiegel, MW,
|
||
Windpark, Solaranlage, Wartung sind als klickbare `data-glossar`-Begriffe
|
||
im Fliesstext verlinkt.
|
||
|
||
## Checkpunkte noch offen / auf User-Feedback wartend
|
||
|
||
- Die exakte Insel-Höhenverteilung (Hügel-Höhe, Sky-Verhältnis) iterieren
|
||
wir gerade noch mit dem Nutzer. Die Grundstruktur steht.
|
||
- Grafiken der Maßnahmen (Deich, Solar, Windrad, etc.) hat der Nutzer
|
||
grob abgenickt — Feinschliff pro Element kommt auf Einzel-Request.
|
||
|
||
## Zum Testen
|
||
|
||
- `localhost/geograsim/App/klima-2d?level=1|2|3` → PHP-Wrapper
|
||
- `localhost/geograsim/App/sims/klima/game-2d.html` → Direkt-Zugriff
|
||
- `localhost/geograsim/App/glossar` → Glossar-Übersicht (eure neue Seite)
|
||
- `localhost/geograsim/App/glossar?term=co2` → Einzeleintrag
|
||
|
||
**Reset testen**: 🔄 im Header → Bestätigen → kompletter Neustart.
|
||
**Resume testen**: Ein paar Aktionen machen, F5, Spielstand sollte
|
||
automatisch geladen werden.
|
||
|
||
Bei Problemen: Antwort in meinen Inbox-Ordner.
|