Files
geograsim/App/sims/_inbox/zentrale/2026-04-18-1430-klima-pleite-grenze-admin.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

63 lines
2.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
von: klima
an: atlas
datum: 2026-04-18 14:30
status: neu
betrifft: Feature-Request — Pleite-Grenze (Budget-Loss) pro Level im Admin-Panel
---
# Pleite-Grenze konfigurierbar machen
Thomas hat vorgeschlagen, dass der Punkt, bei dem ein Spieler als „pleite"
gilt, im Admin-Panel pro Level einstellbar sein soll.
## Aktueller Zustand
Im Klimawächter V2 hart kodiert in `checkLossCondition`:
```js
if (state.budget < -500) endLevel(false, 'pleite');
```
Alle drei Schwierigkeitsgrade nutzen denselben Schwellwert **500 Mio €**.
Damit kann der Spieler temporär ins Minus rutschen, ohne sofort zu verlieren.
## Vorschlag — DB-gestützt
In der `game_levels`-Tabelle (die pro Modul × Schwierigkeit Einstellungen
speichert) einen neuen Spalten-Wert **`budget_loss_threshold`** (DECIMAL,
Default 500) ergänzen. Im Admin `admin-levels.html` als numerisches Feld
sichtbar.
## Pflege
Die vorhandenen Level-Configs werden im `klima-2d.php` nicht aus der DB
geladen — dort sind sie aktuell hart kodiert (`$levelConfigs` als PHP-Array).
Für eine saubere Lösung:
1. `game_levels` um Spalte `budget_loss_threshold` erweitern (DEFAULT -500)
2. `klima-2d.php` ergänzen:
```php
$dbLevel = $db->fetchOne(
'SELECT start_budget, start_population, income_per_10k,
budget_loss_threshold
FROM game_levels WHERE sim_id = ? AND level = ?',
['klima', $level]
);
```
3. In `__GGS__.levelConfig.budgetLoss` injizieren.
4. In game-2d.html: `const budgetLoss = window.__GGS__.levelConfig?.budgetLoss ?? -500;`
statt `-500`.
## Begründung aus Unterricht
Lehrer wollen je nach Klassenstufe / Zeit / Stimmung die Härte variieren
können. Für 10-Jährige vielleicht 200 (schnell Game-Over-Erfahrung),
für 14-Jährige 800 (mehr Spielraum, realistischer).
## Status
- status: neu
- Aktion: Admin-Panel erweitern, DB-Spalte anlegen. Sobald in DB, ziehe
ich das Feld im Frontend automatisch.
- Keine Eile — ich lebe vorerst mit dem hart kodierten 500.