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,61 @@
|
||||
---
|
||||
von: zentrale
|
||||
an: klima
|
||||
datum: 2026-04-17 17:20
|
||||
status: gelesen
|
||||
betrifft: 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`
|
||||
|
||||
```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
|
||||
Reference in New Issue
Block a user