Files
geograsim/App/php/build-wp-geo-lines.php
T
Adminator 1e51ef7def Nachtrag: alle bisher untracked Ordner + hängende Änderungen mit-committen
- Konzept/, didaktik_geografie/, didaktik_simulation/, v2-modules/, v2-platform/
- 12 code-workspace-Files
- STATUS-*.md
- viele M/D/R-Änderungen an bereits getrackten Files
- .gitignore verstärkt: **/.humaninput/, **/secret_keys.txt

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-07-08 02:27:02 +02:00

110 lines
3.8 KiB
PHP
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.
<?php
/**
* Baut sims/heli/scripts/wp-geo-lines.json fuer den Audio-Generator.
* Liest pro Mission-Wegpunkt einen kurzen Text:
* 1. Bevorzugt geo_waypoint_facts.text_de (kind='geo', display_order ASC)
* 2. Fallback: geo_waypoints.info
* 3. Letzter Fallback: nur der Name
*
* Aufruf via Browser:
* http://localhost/geograsim/App/php/build-wp-geo-lines.php
*/
require_once __DIR__ . '/config/db.php';
header('Content-Type: text/plain; charset=utf-8');
$db = getDB();
// Alle Wegpunkte aus den 25 Missionen (Spiegel zu ALL_MISSIONS in game.html).
// Doubletten werden per array_unique entfernt.
$missionWaypoints = [
// Vorarlberg
'nenzing','thueringen','zwischenwasser','damuels','bergrettung_muels',
'feldkirch','rankweil','verkehr_a14',
'buers','brand',
'dornbirn','bregenz',
'egg','bezau','mellau',
'bludenz','schruns','stgallenk','gaschurn',
// Tirol
'innsbruck','telfs','oetz','soelden','skiunfall_soelden',
'hall','schwaz','jenbach','woergl','kufstein',
'zell_ziller','mayrhofen',
// Wien
'wien_c9','wien','moedling','baden','verkehr_a2_baden',
'wien_donau','see_donau_wien',
// Niederoesterreich
'wr_neustadt_c3','wr_neustadt','puchberg','schneeberg','berg_schneeberg',
'rax','berg_rax',
// Burgenland
'oberwart_c16','mattersburg','eisenstadt','podersdorf','see_neusiedl',
// Oberoesterreich
'linz_c10','wels','sattledt','verkehr_a1_sattledt',
'gmunden','traunsee','see_traun',
// Salzburg
'salzburg_c6','hallein','golling','flachau','verkehr_a10_tauern',
'st_wolfgang','see_wolfgang',
'zell_see','kaprun','heiligenblut','grossglockner','berg_glockner',
// Steiermark
'niederoeblarn_c14','bad_aussee','dachstein','berg_dachstein',
'graz_c12','bruck_mur','hochschwab','berg_hochschwab',
'leoben','verkehr_a9_pyhrn',
// Kaernten
'klagenfurt_c11','klagenfurt','poertschach','see_woerth',
'villach','spittal',
'verkehr_a2_klagenfurt',
];
$missionWaypoints = array_values(array_unique($missionWaypoints));
// Wegpunkt-Stammdaten + Geo-Facts laden
$inList = implode(',', array_fill(0, count($missionWaypoints), '?'));
$wpStmt = $db->prepare("SELECT wp_key, name, info FROM geo_waypoints WHERE wp_key IN ($inList)");
$wpStmt->execute($missionWaypoints);
$wps = [];
foreach ($wpStmt as $row) $wps[$row['wp_key']] = $row;
$factsByKey = [];
try {
$factStmt = $db->prepare("SELECT wp_key, text_de FROM geo_waypoint_facts
WHERE kind = 'geo' AND wp_key IN ($inList)
ORDER BY wp_key, display_order ASC");
$factStmt->execute($missionWaypoints);
foreach ($factStmt as $row) {
$factsByKey[$row['wp_key']][] = $row['text_de'];
}
} catch (Exception $e) {
echo "WARN: geo_waypoint_facts fehlt — fallback nur info/name\n";
}
$lines = [];
$missing = [];
foreach ($missionWaypoints as $key) {
$wp = $wps[$key] ?? null;
if (!$wp) { $missing[] = $key; continue; }
$name = $wp['name'];
$text = '';
if (!empty($factsByKey[$key])) {
// 12 erste Geo-Facts nehmen, mit Name als Lead
$facts = array_slice($factsByKey[$key], 0, 2);
$text = $name . '. ' . implode(' ', $facts);
} elseif (!empty($wp['info'])) {
$text = $name . '. ' . $wp['info'];
} else {
$text = $name . '.';
}
$lines[] = [
'id' => 'r_wp_geo_' . $key,
'text' => $text,
];
}
$out = [
'_note' => 'Wegpunkt-Geografie fuer die Plan-Phase. Spielt waehrend der Bearbeiter den jeweils gesuchten Wegpunkt sucht.',
'lines' => $lines,
];
$path = __DIR__ . '/../sims/heli/scripts/wp-geo-lines.json';
file_put_contents($path, json_encode($out, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT));
echo "Geschrieben: $path\n";
echo "Zeilen: " . count($lines) . "\n";
if ($missing) echo "Fehlende wp_keys (nicht in DB): " . implode(', ', $missing) . "\n";