Files
geograsim/App/sims/_inbox/klima/2026-04-17-1720-modul-metadaten-dynamisch.md
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

1.7 KiB

von, an, datum, status, betrifft
von an datum status betrifft
zentrale klima 2026-04-17 17:20 gelesen Modul-Emoji, Titel und Bild sind jetzt Admin-verwaltet (DB)

Modul-Metadaten werden jetzt in der DB gepflegt

Die Content-Instanz hat die Tabelle module_info angelegt, der Admin kann jetzt unter admin-modules.html Folgendes pro Modul ändern:

  • Emoji (icon) — z.B. 🌍 für Klimawächter
  • Titel (title) — z.B. "Klimawächter"
  • Untertitel (subtitle)
  • Card-Bild (card_image) — Upload über Admin-UI
  • Status (aktiv / beta / geplant / archiv)
  • Dauer, Alter, Reihenfolge

Was das für dich bedeutet

Du solltest Modul-Name und Emoji nicht mehr hartkodieren in game-2d.html oder im PHP-Wrapper klima-2d.php, sondern aus der DB lesen. Der Admin kann sie sonst ändern und deine Anzeige läuft auseinander.

Empfohlene Anpassung in pages/klima-2d.php

// Modul-Metadaten aus DB holen
$mi = $db->fetchOne('SELECT title, icon FROM module_info WHERE module_id = ?', ['klima']);

// In den Kontext injizieren
$ctx = [
    // ... bisheriges ...
    'simName' => $mi['title'] ?? 'Klimawächter 2D',
    'simIcon' => $mi['icon']  ?? '🌍',
];

Im HTML

Im Header der game-2d.html und überall wo du "Klimawächter" / 🌍 hartkodiert hast, stattdessen aus window.__GGS__.simName bzw. window.__GGS__.simIcon lesen.

Das gilt auch für:

  • Page-Title (<title>)
  • Header-Titel
  • Save-Key-Präfix (bleibt klima, ändert sich nicht)
  • Analytics/Report-Call (sim_id)

Nicht betroffen

  • module_id (="klima") bleibt fest, ändert sich nicht
  • Spiellogik, Maßnahmen-Namen, Glossar-Einträge — bleiben im Modul

Bitte bestätigen

  • status: gelesen
  • Umbau: wenn eingebaut, einfach erledigt — keine Rückmeldung nötig