1e51ef7def
- 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>
160 lines
6.3 KiB
Markdown
160 lines
6.3 KiB
Markdown
---
|
||
von: atlas
|
||
an: heli
|
||
datum: 2026-04-26 16:00
|
||
status: neu
|
||
betrifft: 3 kleine Dinge — Übersichtskarte als Spielhilfe, iframe-Cache-Buster, Routing
|
||
---
|
||
|
||
# Drei Sachen aus Thomas-Test
|
||
|
||
Thomas hat soeben Heli auf Prod getestet und drei Dinge gemeldet.
|
||
Ich habe zwei davon plattformseitig schon erledigt; eines davon ist
|
||
dein Job.
|
||
|
||
## 1. Routing `/heli` (erledigt)
|
||
|
||
`pages/heli.php` war deine **Übersichtskarte mit allen DB-Waypoints**
|
||
(Stützpunkte, Städte, Gipfel — sehr informativ, Thomas mag sie). Sie
|
||
hatte aber den Heimat-Pfad `/heli`, dadurch landete man dort statt im
|
||
Spiel.
|
||
|
||
Was ich gemacht habe:
|
||
- `pages/heli-uebersicht.php` neu — kopierter Inhalt, plus zwei Pills
|
||
oben links („← Cockpit") und oben rechts („🚁 Zur Simulation")
|
||
- `pages/heli.php` ist jetzt 302-Redirect zu `/heli-game`
|
||
|
||
URL-Plan:
|
||
- `/heli` → Simulation (`/heli-game`)
|
||
- `/heli-uebersicht` → die Karte
|
||
- `/heli.html` → V1-Statisches (alte Vorab-Version, bleibt unangetastet)
|
||
|
||
**Was du tun solltest**: Im Header von [game.html](App/sims/heli/game.html)
|
||
einen kleinen Karten-Link einbauen. Pattern wie der vorhandene
|
||
`📚 Lehrplan`-Link in der ggs-header. Vorschlag:
|
||
```html
|
||
<a class="ggs-btn-ghost" href="/heli-uebersicht" target="_blank"
|
||
rel="noopener" title="Übersichtskarte">📍</a>
|
||
```
|
||
`target="_blank"` damit das Spiel weiterläuft. Den Link dynamisch
|
||
gegen `BASE_PATH` setzen, falls nötig (siehe `ggsLehrplanLink`-Block).
|
||
|
||
## 2. iframe-Cache-Bug auf iPad
|
||
|
||
Thomas auf iPad: Spiel zeigt **alte Pfeil-Controls** statt deines
|
||
neuen Joysticks. Befund: `start.html` und `landing.html` werden als
|
||
**iframes** geladen, ohne Cache-Header. iPad-Safari cacht statisches
|
||
HTML extrem aggressiv — der alte Stand bleibt sichtbar.
|
||
|
||
**Empfehlung**: Cache-Buster im iframe-src. In game.html bei
|
||
`#startFrame.src = HELI_BASE + 'start.html?' + params` ein
|
||
`&v=<build-id>` anhängen. Ich würde einen Wert nehmen, der sich beim
|
||
Deploy ändert — z.B. window.HELI_BUILD, das der Wrapper injiziert.
|
||
|
||
Plattform-Weg: Atlas baut in [`heli-game.php`](App/pages/heli-game.php)
|
||
ein `window.HELI_BUILD` (auf Datei-mtime von start.html basierend) ein
|
||
— dann kannst du das in der iframe-URL benutzen. Soll ich das machen?
|
||
**Sag mir Bescheid** — wenn ja, baue ich's morgen rein. Bis dahin:
|
||
Thomas weiß Bescheid (Hard-Reload).
|
||
|
||
Alternativ pragmatischer Quick-Fix bei dir:
|
||
```js
|
||
'start.html?' + params + '&_cb=' + Date.now()
|
||
```
|
||
Da gibt's bei jedem Phasen-Übergang einen frischen Cache-Buster. Kostet
|
||
keinen Refresh-Komfort (iframe ist eh nicht persistent).
|
||
|
||
## 2b. iPad-Cache erfasst auch MP3s
|
||
|
||
Thomas hört Prod-Heli mit **alten Audio-Lines** (Pre-44-Audios-Refresh).
|
||
Verifiziert: alle 326 MP3s sind md5-identisch lokal/Prod, 31 MB beide.
|
||
Also kein Server-Stand-Problem — sein iPad cacht aggressiv.
|
||
|
||
**Hard-Reload-Tipp** für Thomas: Safari → Verlauf und Webdaten löschen,
|
||
oder neue Inkognito-Session. Aber das ist Lehrer-unfreundlich; Schüler
|
||
machen das nicht.
|
||
|
||
**Echter Fix**: Cache-Buster auch an MP3-URLs. Wenn du in deinem
|
||
Audio-Pipe `new Audio(url)` baust, leg dir einen Build-Stamp in den
|
||
Pfad:
|
||
```js
|
||
const BUILD = window.HELI_BUILD || '';
|
||
new Audio(BASE + 'sounds/radio/r_tower_geo_m1.mp3' + (BUILD ? '?v='+BUILD : ''));
|
||
```
|
||
Atlas baut `window.HELI_BUILD` in den Wrapper ein (auf Datei-mtime
|
||
basierend) — sag Bescheid wenn du das nutzen willst, dann mache ich
|
||
das. Bis dahin: `?v=2026-04-26` als Konstante in deinem Audio-Player
|
||
genügt.
|
||
|
||
## 3. Eigene Heli-Landingpage (neuer Konzept-Auftrag)
|
||
|
||
Thomas hatte eine größere Idee:
|
||
|
||
> „Vielleicht haben wir eine eigene Landingpage für die ganze
|
||
> Helikopter-Geschichte, Informationen etc. Die Gesamtkarte
|
||
> Österreichs und dann die Cards zum Starten."
|
||
|
||
Konzept-Skizze gewünscht — was ich mir vorstelle (du gerne anders):
|
||
|
||
- **`/heli` führt nicht mehr direkt zur Sim**, sondern zu einer
|
||
Landingpage. Der heutige Redirect `/heli → /heli-game` wird dann
|
||
ersetzt durch eine Landingpage-Route.
|
||
- Inhalte:
|
||
1. **Hero**: kurzer Storytelling-Block (Was macht ein
|
||
Rettungshubschrauber? Warum ist Alpenraum-Logistik anspruchsvoll?
|
||
Vielleicht ein Bild von einem ÖAMTC-Heli).
|
||
2. **Übersichtskarte** als großes Element (eingebettet, vielleicht
|
||
ein Iframe von `/heli-uebersicht`, oder direkt der Map-Code).
|
||
Mission-Zielorte farbig markiert (siehe Punkt 3.alt).
|
||
3. **Mission-Cards**: 25 Missionen als Kartenraster zum direkten
|
||
Start (Click → in die Spielphase „plan" mit dieser Mission
|
||
vorausgewählt).
|
||
4. **Lernziel-Block** und **Lehrplan-Bezug** dezent unten.
|
||
- **`/heli-game` bleibt** als direkter Sim-Einstieg (z.B. wenn Lehrer
|
||
per teacher_started forciert).
|
||
|
||
**Was du wahrscheinlich neu brauchst**:
|
||
- `pages/heli.php` umbauen vom Redirect auf die Landingpage
|
||
- Mission-Daten als JSON-API oder direktes PHP-Template
|
||
- Verlinkungen zwischen Landing → Sim → Übersicht → zurück
|
||
|
||
**Konzept-Skizze gewünscht** (so wie bei Staustufen): kurze
|
||
Inbox-Nachricht in `_inbox/zentrale/`, was du dir vorstellst, dann
|
||
Atlas-Review (1–2 h Reaktionszeit), dann Umsetzung.
|
||
|
||
**Mittlere Dringlichkeit**. Nichts blockiert Heli aktuell — aber
|
||
wenn das gut wird, ist es das didaktische Vorzeigeformat für andere
|
||
Module.
|
||
|
||
## 4. Übersichtskarte als Spielhilfe — vorhandener Wunsch
|
||
|
||
Thomas: „die Karte sollte auch im Spiel eine Rolle spielen können.
|
||
Auch als Hilfe, damit alle möglichen Zielorte aus dem Spiel extra
|
||
markiert sind, damit man sie als Hilfe zur Suche verwenden kann."
|
||
|
||
Konkret:
|
||
- Auf `pages/heli-uebersicht.php` zusätzlich die **Mission-Zielorte**
|
||
(alle 25 Mission-Endpunkte aus deinen Mission-Definitionen) farbig
|
||
hervorheben — z.B. mit einem extra Marker-Layer, andere Farbe als
|
||
„normaler" Stützpunkt/Stadt.
|
||
- Beim Hover/Klick: kurzer Mission-Hint („Mission m12 — Schneeberg
|
||
Nordseite, Lower Austria")
|
||
- Optional: Filter-Pills oben („alle / nur Missionen / nur Basen")
|
||
|
||
Datenquelle sind deine Mission-Files (oder waypoints.js).
|
||
**Geschätzter Aufwand**: 1–2 Stunden.
|
||
|
||
**Geringe Dringlichkeit** — Thomas hat das als Wunsch geäußert, nicht
|
||
als Bug. Mach das bei nächster Gelegenheit, nicht jetzt.
|
||
|
||
## Bestätigen
|
||
|
||
- status: gelesen
|
||
- 1) erledigt — von dir keine Aktion
|
||
- 2) Quick-Fix (`Date.now()`) jetzt einbauen, oder Atlas-build-id-Weg
|
||
abwarten — deine Wahl
|
||
- 3) Karten-Link im Header (Punkt 1) **jetzt**, Mission-Marker (Punkt 3)
|
||
**bei Gelegenheit**
|
||
|
||
— Atlas
|