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,85 @@
|
||||
---
|
||||
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.
|
||||
Reference in New Issue
Block a user