Files
geograsim/App/sims/tourismusregion/game.html
T
Adminator db4b75c5e6 Tourismusregion Quick-Fixes: Startflow, Auto-Save, Lift-Talstation, iPad-Responsive
- Startbildschirm: Name/Klasscode-Felder entfernt (Kinder sind über die
  Plattform-Session identifiziert). Klick auf eine Wegkarte startet die
  Partie sofort — separater „Partie starten"-Button entfernt.
- Abschluss: „Ergebnis speichern"-Button entfernt; Speichern passiert schon
  automatisch am Partie-Ende (submitAssessment). Hinweis „automatisch
  gespeichert" ergänzt. btnSave-Listener null-sicher gemacht.
- Seilbahn: Talstation (Baukörper + Satteldach + Umlenkrad) ergänzt — der
  Lift-Anfang wirkte vorher „transparent".
- Responsive/iPad: Panels bekommen Höhen-Deckel + internes Scrollen (decken
  nie den ganzen Schirm zu). Neue Media-Query für iPad-Landscape (901–1200px
  / niedrige Höhe): kompaktere Panels, Graphen nach rechts-unten aus dem
  Info-Panel-Bereich. Sehr flache Screens blenden die Graphen aus.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-18 14:15:41 +02:00

175 lines
6.9 KiB
HTML
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.
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<meta name="apple-mobile-web-app-capable" content="yes">
<title>Tourismusregion entwickeln GeoGraSim</title>
<script>/*__TOURISMUSREGION_INJECTION__*/</script>
<link rel="stylesheet" href="css/style.css">
</head>
<body>
<canvas id="map"></canvas>
<header id="topbar" class="panel">
<button id="btnHome" class="icon-btn" title="Zurück zur Übersicht"></button>
<h1>Tourismusregion <span class="subtitle">entwickeln</span></h1>
<div id="waveStatus" class="wave-status">Welle 1 vorbereiten…</div>
<div class="top-right">
<div id="clock" class="clock">Welle 1/8</div>
<div class="speed" role="group" aria-label="Zeit">
<button data-speed="0" class="icon-btn speed-btn" title="Pause"></button>
<button data-speed="1" class="icon-btn speed-btn active" title="Normal">1×</button>
<button data-speed="2" class="icon-btn speed-btn" title="Doppelt">2×</button>
<button data-speed="3" class="icon-btn speed-btn" title="Dreifach">3×</button>
<button data-speed="4" class="icon-btn speed-btn" title="Vierfach">4×</button>
</div>
<button id="btnLog" class="icon-btn" title="Meldungen">🔔<span id="logBadge" class="badge hidden">0</span></button>
<button id="btnSound" class="icon-btn" title="Sound an/aus">🔊</button>
<button id="btnMusic" class="icon-btn" title="Musik-Player">🎵</button>
<button id="btnAnim" class="icon-btn" title="Reduzierte Animationen">🐢</button>
<button id="btnCamera" class="icon-btn" title="Ansicht zurücksetzen">🎯</button>
<button id="btnHelp" class="icon-btn" title="Anleitung">?</button>
</div>
</header>
<aside id="kpis" class="panel">
<div class="kpi-season" id="seasonBadge">🌸 Frühling</div>
<div id="repRow">
<div class="rep-head"><span>🏆 Ruf der Region</span><b id="repVal"></b></div>
<div class="rep-bar"><div id="repFill"></div></div>
</div>
<div class="kpi"><span>💰 Budget</span><b id="kMoney">500 €</b></div>
<div class="kpi"><span>🌲 Umwelt</span><b id="kEnv">75</b></div>
<div class="kpi"><span>🥾 Gäste jetzt</span><b id="kVisitors">0</b></div>
<div class="kpi"><span>🚗 Verkehr</span><b id="kTraffic">0</b></div>
<div class="kpi"><span>📈 Wertschöpfung</span><b id="kRevenue">0 €</b></div>
<div id="goals">
<h3>Ziele</h3>
<ul id="goalList"></ul>
</div>
<button id="btnStats" class="secondary slim">📊 Statistik</button>
<button id="btnNextWave" class="primary slim">⏩ Nächste Welle</button>
</aside>
<aside id="musicPanel" class="panel hidden">
<div class="music-row">
<button id="muPrev" class="icon-btn small" title="Voriger Titel"></button>
<button id="muPlay" class="icon-btn small" title="Abspielen/Pause"></button>
<button id="muNext" class="icon-btn small" title="Nächster Titel"></button>
<input id="muVol" type="range" min="0" max="1" step="0.05" value="0.28"
aria-label="Musik-Lautstärke">
</div>
<select id="muSelect" aria-label="Titel wählen"></select>
</aside>
<aside id="buildmenu" class="panel">
<h2>Bauen</h2>
<div id="buildItems"></div>
</aside>
<section id="infoPanel" class="panel hidden">
<div class="info-head">
<b id="infoTitle"></b>
<button id="infoClose" class="icon-btn small" title="Schließen"></button>
</div>
<div id="infoBody"></div>
<button id="btnUpgrade" class="primary slim hidden"></button>
<button id="btnDemolish" class="secondary slim">🧨 Abreißen (30 % zurück)</button>
</section>
<section id="graphMoney" class="panel graphbox">
<canvas id="graphMoneyCanvas"></canvas>
</section>
<section id="graphSat" class="panel graphbox">
<canvas id="graphSatCanvas"></canvas>
</section>
<div id="toast" class="panel hidden"></div>
<div id="cardOverlay" class="overlay hidden">
<div class="card panel">
<div id="cardIcon" class="card-icon"></div>
<h2 id="cardTitle"></h2>
<ul id="cardList" class="hidden"></ul>
<p id="cardText"></p>
<div class="card-buttons">
<button id="cardOk" class="primary">Weiter</button>
<button id="cardAlt" class="secondary hidden">Ablehnen</button>
</div>
</div>
</div>
<div id="logOverlay" class="overlay hidden">
<div class="card panel">
<h2>📨 Meldungen</h2>
<ul id="logList"></ul>
<button id="logClose" class="primary">Schließen</button>
</div>
</div>
<div id="statsOverlay" class="overlay hidden">
<div class="card panel end-card">
<h2>📊 Regions-Statistik</h2>
<div id="statsBody"></div>
<button id="statsClose" class="primary">Schließen</button>
</div>
</div>
<div id="startOverlay" class="overlay">
<div class="card panel">
<div class="card-icon">🏞️</div>
<h2>Tourismusregion entwickeln</h2>
<p class="intro">Besuchergruppen kommen in <b>8 Wellen</b> durch dein Tal.
Baue in den Baupausen die passende Infrastruktur, mach jede Gruppe
glücklich und halte Wirtschaft, Umwelt und Budget im Gleichgewicht.</p>
<h3 class="map-title">Wegkarte wählen — tippe eine Karte, dann geht's los</h3>
<div id="mapList"></div>
<p class="start-hint">Tipp: Gebäude wirken nur auf Gäste in ihrer Reichweite
baue nah an den Wegen!</p>
</div>
</div>
<div id="endOverlay" class="overlay hidden">
<div class="card panel end-card">
<div id="endProfileIcon" class="card-icon"></div>
<h2 id="endProfileName"></h2>
<p id="endProfileText" class="intro"></p>
<div id="endStars" class="end-stars"></div>
<div id="endBars"></div>
<ul id="endGoals" class="end-goals"></ul>
<p id="endFacts" class="end-facts"></p>
<div id="endFeedback" class="end-feedback"></div>
<div id="endReflect" class="end-reflect"></div>
<p class="end-saved">💾 Dein Ergebnis wurde automatisch gespeichert.</p>
<div class="card-buttons">
<button id="btnRestart" class="secondary">🔄 Nochmal spielen</button>
</div>
</div>
</div>
<script type="module" src="js/main.js"></script>
<script>
// Fallback: Per Doppelklick geöffnet (file://) laden ES-Module nicht.
window.addEventListener('load', function () {
setTimeout(function () {
if (window.__ttLoaded) return;
var card = document.querySelector('#startOverlay .card');
if (!card) return;
var warn = document.createElement('p');
warn.style.cssText = 'background:#fdecea;color:#a33227;border-radius:12px;'
+ 'padding:12px;font-size:14px;text-align:left;line-height:1.5';
warn.textContent = location.protocol === 'file:'
? '⚠️ Die Seite wurde als Datei geöffnet so kann die Simulation nicht '
+ 'starten. Bitte über einen Webserver aufrufen, z. B. XAMPP starten '
+ 'und http://localhost/DefensegeograSimMac/ öffnen.'
: '⚠️ Die Simulation konnte nicht geladen werden. Bitte Seite neu laden '
+ '(Strg/Cmd+R).';
card.appendChild(warn);
}, 1500);
});
</script>
</body>
</html>