Tourismustal: Komplett-Integration (Sim + Wrapper + SQL + Lehrer-Backend)
Sim nach App/sims/tourismustal umgezogen (Source of Truth), game.html mit Injection-Marker. Neu in der Sim: 5 Sommergebaeude (Bikepark mit Flowtrails, Hochseilgarten, Fahrradverleih als Verstaerker, Aussichtsplattform, Erlebnisspielplatz), Rettungsstation mit Notarzthubschrauber, Ausbau- Bauanimation, Event-Pacing, Schulden-Notbremse (Bank-Zwangsverkauf), Berater-Tipps (Ruecklagen), Sommer-Trend-Mechanik (Serfaus-Effekt) und Wissens-Bausteine mit echten DACH-Tourismusdaten (QUELLEN.md). Plattform: PHP-Wrapper mit base-Tag + Session-Mode, Modul-Detailseite, module_info (beta) + Glossar (14 Begriffe inkl. Leichter Sprache + Quellen) + Lehrplan-Anker AT/DE/CH an neuer Kompetenz tourismus-raumentwicklung. Lehrer-Backend: Benchmark-Formel, Live-Cockpit-Spalten, needsHelp-Heuristik, Modul-Highlights. Strategie-Testharness (tests/strategien.mjs) belegt: Panzer-Rush wird liquidiert, Ruecklagen zahlen sich aus. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -592,6 +592,31 @@ function _liveBar(val, min, max, goodWhen) {
|
||||
}
|
||||
|
||||
var LIVE_PRIMARY_FIELDS = {
|
||||
'tourismustal': [
|
||||
{k:'scene', label:'Szene', align:'left', fmt:function(v){
|
||||
return {pionierzeit:'⛏️ 1975', boom:'📈 Boom 2000', klimawandel:'🌡️ 2035'}[v] || v || '—';
|
||||
}},
|
||||
{k:'season', label:'Saison', align:'center'},
|
||||
{k:'year', label:'Jahr'},
|
||||
{k:'money', label:'Konto', fmt:function(v){
|
||||
if (v === undefined) return '—';
|
||||
var color = v < 0 ? '#c0392b' : v < 4000 ? '#c9913a' : '#5a8a5e';
|
||||
return '<span style="color:'+color+';font-weight:700">'+Number(v).toLocaleString('de-AT')+' €</span>';
|
||||
}},
|
||||
{k:'guestsToday', label:'Gäste'},
|
||||
{k:'satisfaction', label:'Zufr.', fmt:function(v){ return _liveBar(v, 0, 100, 'high'); }},
|
||||
{k:'nature', label:'Natur', fmt:function(v){ return _liveBar(v, 0, 100, 'high'); }},
|
||||
{k:'goalsDone', label:'Ziele', fmt:function(v, row){
|
||||
var s = row.state || {};
|
||||
if (v === undefined || !s.goalsTotal) return '—';
|
||||
var color = v === s.goalsTotal ? '#5a8a5e' : v >= 2 ? '#c9913a' : '#8a8a8a';
|
||||
return '<span style="color:'+color+';font-weight:700">'+v+'/'+s.goalsTotal+'</span>';
|
||||
}},
|
||||
{k:'buildings', label:'Geb.'},
|
||||
{k:'bottleneck', label:'Engpass', align:'left', fmt:function(v){
|
||||
return v ? '<span style="color:#c07a6b">⚠️ '+v+'</span>' : '<span style="color:#8a8a8a">—</span>';
|
||||
}},
|
||||
],
|
||||
klima: [
|
||||
{k:'level', label:'Stufe'},
|
||||
{k:'tick', label:'Tick'},
|
||||
|
||||
Reference in New Issue
Block a user