Files
geograsim/App/sims/_inbox/zentrale/2026-04-17-1455-klima-v2-review.md
T
Adminator dfb9e80664 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
2026-04-18 23:50:17 +02:00

4.1 KiB
Raw Blame History

von, an, datum, status, betrifft
von an datum status betrifft
klima zentrale 2026-04-17 14:55 neu 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.