Stand 2026-04-13: PHP/MySQL Infrastruktur, Flussmanagement, Stadt-Prototyp

- PHP/MySQL Backend (XAMPP + Produktionsserver)
- Front-Controller, API-Endpunkte, Session-Management
- Flussmanagement-Simulation (Echtzeit, Punkt-basierter Fluss)
- Stadt & Raumplanung (Prototyp, Top-Down Kachelsystem)
- Klimawaechter 3D: Deiche kleiner, Baeume kippen, Budget angepasst
- persistence.ts: Dualer Speicher (localStorage + Server-API)
- 6 Unit-Test-Dateien fuer bestehende Simulationen

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-13 16:43:42 +02:00
commit f22c5ebbfe
83 changed files with 22709 additions and 0 deletions
+5
View File
@@ -0,0 +1,5 @@
<?php
/** GeoGraSim — Lehrkraefte-Dashboard */
$html = file_get_contents(APP_ROOT . '/dashboard.html');
$ctx = '<script>window.__GGS__ = ' . json_encode(['sessionId' => Session::studentId(), 'teacherId' => Session::teacherId(), 'baseUrl' => BASE_URL, 'basePath' => BASE_PATH], JSON_UNESCAPED_UNICODE) . ';</script>';
echo str_replace('</body>', $ctx . "\n</body>", $html);
+5
View File
@@ -0,0 +1,5 @@
<?php
/** GeoGraSim — Energiemix-Simulator */
$html = file_get_contents(APP_ROOT . '/energiemix.html');
$ctx = '<script>window.__GGS__ = ' . json_encode(['sessionId' => Session::studentId(), 'teacherId' => Session::teacherId(), 'baseUrl' => BASE_URL, 'basePath' => BASE_PATH], JSON_UNESCAPED_UNICODE) . ';</script>';
echo str_replace('</body>', $ctx . "\n</body>", $html);
+5
View File
@@ -0,0 +1,5 @@
<?php
/** GeoGraSim — Erdbeben-Simulator */
$html = file_get_contents(APP_ROOT . '/erdbeben.html');
$ctx = '<script>window.__GGS__ = ' . json_encode(['sessionId' => Session::studentId(), 'teacherId' => Session::teacherId(), 'baseUrl' => BASE_URL, 'basePath' => BASE_PATH], JSON_UNESCAPED_UNICODE) . ';</script>';
echo str_replace('</body>', $ctx . "\n</body>", $html);
+5
View File
@@ -0,0 +1,5 @@
<?php
/** GeoGraSim — Flussmanagement-Simulation */
$html = file_get_contents(APP_ROOT . '/fluss.html');
$ctx = '<script>window.__GGS__ = ' . json_encode(['sessionId' => Session::studentId(), 'teacherId' => Session::teacherId(), 'baseUrl' => BASE_URL, 'basePath' => BASE_PATH], JSON_UNESCAPED_UNICODE) . ';</script>';
echo str_replace('</body>', $ctx . "\n</body>", $html);
+18
View File
@@ -0,0 +1,18 @@
<?php
/**
* GeoGraSim — Klimawächter (3D)
*/
$html = file_get_contents(APP_ROOT . '/game-3d.html');
$sessionScript = '<script>' . "\n"
. 'window.__GGS__ = ' . json_encode([
'sessionId' => Session::studentId(),
'teacherId' => Session::teacherId(),
'baseUrl' => BASE_URL,
'basePath' => BASE_PATH,
], JSON_UNESCAPED_UNICODE) . ";\n"
. '</script>';
$html = str_replace('</body>', $sessionScript . "\n</body>", $html);
echo $html;
+18
View File
@@ -0,0 +1,18 @@
<?php
/**
* GeoGraSim — Klimawächter (2D)
*/
$html = file_get_contents(APP_ROOT . '/game.html');
$sessionScript = '<script>' . "\n"
. 'window.__GGS__ = ' . json_encode([
'sessionId' => Session::studentId(),
'teacherId' => Session::teacherId(),
'baseUrl' => BASE_URL,
'basePath' => BASE_PATH,
], JSON_UNESCAPED_UNICODE) . ";\n"
. '</script>';
$html = str_replace('</body>', $sessionScript . "\n</body>", $html);
echo $html;
+21
View File
@@ -0,0 +1,21 @@
<?php
/**
* GeoGraSim — Startseite (Landing Page)
* Laedt die bestehende index.html und injiziert Session-Kontext.
*/
$html = file_get_contents(APP_ROOT . '/index.html');
// Session-Kontext vor </body> injizieren
$sessionScript = '<script>' . "\n"
. 'window.__GGS__ = ' . json_encode([
'sessionId' => Session::studentId(),
'teacherId' => Session::teacherId(),
'baseUrl' => BASE_URL,
'basePath' => BASE_PATH,
], JSON_UNESCAPED_UNICODE) . ";\n"
. '</script>';
$html = str_replace('</body>', $sessionScript . "\n</body>", $html);
echo $html;
+5
View File
@@ -0,0 +1,5 @@
<?php
/** GeoGraSim — Lieferketten-Simulator */
$html = file_get_contents(APP_ROOT . '/lieferketten.html');
$ctx = '<script>window.__GGS__ = ' . json_encode(['sessionId' => Session::studentId(), 'teacherId' => Session::teacherId(), 'baseUrl' => BASE_URL, 'basePath' => BASE_PATH], JSON_UNESCAPED_UNICODE) . ';</script>';
echo str_replace('</body>', $ctx . "\n</body>", $html);
+5
View File
@@ -0,0 +1,5 @@
<?php
/** GeoGraSim — Regenwald-Explorer */
$html = file_get_contents(APP_ROOT . '/regenwald.html');
$ctx = '<script>window.__GGS__ = ' . json_encode(['sessionId' => Session::studentId(), 'teacherId' => Session::teacherId(), 'baseUrl' => BASE_URL, 'basePath' => BASE_PATH], JSON_UNESCAPED_UNICODE) . ';</script>';
echo str_replace('</body>', $ctx . "\n</body>", $html);
+5
View File
@@ -0,0 +1,5 @@
<?php
/** GeoGraSim — Simulationsseite (POE-Workflow) */
$html = file_get_contents(APP_ROOT . '/sim.html');
$ctx = '<script>window.__GGS__ = ' . json_encode(['sessionId' => Session::studentId(), 'teacherId' => Session::teacherId(), 'baseUrl' => BASE_URL, 'basePath' => BASE_PATH], JSON_UNESCAPED_UNICODE) . ';</script>';
echo str_replace('</body>', $ctx . "\n</body>", $html);
+5
View File
@@ -0,0 +1,5 @@
<?php
/** GeoGraSim — Stilauswahl */
$html = file_get_contents(APP_ROOT . '/stilauswahl.html');
$ctx = '<script>window.__GGS__ = ' . json_encode(['sessionId' => Session::studentId(), 'teacherId' => Session::teacherId(), 'baseUrl' => BASE_URL, 'basePath' => BASE_PATH], JSON_UNESCAPED_UNICODE) . ';</script>';
echo str_replace('</body>', $ctx . "\n</body>", $html);