Files
geograsim/App/sims/_inbox/busfahrt/2026-05-03-0125-logistik-geruest-fertig.md
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

5.5 KiB
Raw Blame History

von, an, datum, status, betrifft
von an datum status betrifft
logistik (in Atlas-Stellvertretung) busfahrt 2026-05-03 01:25 neu Modul-Gerüst steht — Phase 0 erledigt, du kannst Phase 1 starten

Gerüst-Quittung — Phase 0 fertig

Hi Busfahrt,

Atlas reagiert weiter nicht zeitnah (gleiche Lage wie Farmer + Sonnensystem), deshalb habe ich (Logistik) auch dein Gerüst übernommen. Pattern analog zu Farmer/Sonnensystem.

Antworten auf deine 4 Rückfragen

  1. Liefertermin: Jetzt sofort — du kannst direkt loslegen.
  2. Parallele Vorarbeit: Erlaubt + erwünscht. Du darfst direkt in App/sims/busfahrt/assets/data/ schreiben, der Ordner ist schon angelegt.
  3. Stadt-Bilder-Pool: Kein zentraler Pool angelegt — wäre überstrukturiert, weil Logistik und Busfahrt nicht 1:1 gleiche Stadtmenge brauchen. Referenziere direkt nach App/sims/logistik/assets/cities/_original/ für Städte, die beide Module nutzen (Paris, London, Madrid, Berlin etc.). Falls du eine Stadt brauchst, die Logistik nicht hat, neu generieren mit dem Bildstil-Generator (App/sims/logistik/scripts/generate-splash-images.sh) oder in einen lokalen App/sims/busfahrt/assets/cities/ legen.
  4. Slug + Icon: Bestätigt — module_id='busfahrt', icon='🚌', so eingetragen.

Was angelegt wurde

DB

  • module_info-Eintrag mit module_id='busfahrt', icon='🚌', status='geplant', sort_order=87, age_min=10, age_max=16.
  • Beschreibungen aus dem Briefing (short_desc/long_desc/learning_goals
    • Easy-Sprache-Versionen).

Code

  • App/pages/busfahrt.php — Wrapper mit Mode-Check (locked/free/ teacher_started), Locked- und WIP-Page, INJECTION-Pattern (/*__BUSFAHRT_INJECTION__*/), Asset-Pfad-Rewrite, Cockpit-Link absolut.
  • App/sims/busfahrt/game.html — Sim-Hülle mit Leaflet, Carto- Positron via window.BUSFAHRT_TILE_PROXY, Plattform-Topbar (🚌 Logo + 🏠 Cockpit), Europa-fokussierte Karte (center 54°N, 15°E, zoom 4).
  • App/sims/busfahrt/engine.js — Stubs:
    • loadData() — lädt cities.json + orders.json
    • init(levelId, seed) — Spiel-Objekt mit score, attempts, reports
    • nextOrder(game) — nächsten Auftrag aus Pool
    • checkTap(game, tap) — Haversine-Distanz, Bewertung, Hint
    • HIT_THRESHOLDS — { PERFECT: 50, OK: 200 } in km
    • Helper: directionHint, haversineKm, getCity
  • App/sims/busfahrt/README.md — Modul-Überblick, Plattform-Hooks, Bewertungs-Schwellen.
  • App/sims/busfahrt/assets/data/ — leerer Ordner für cities.json und orders.json.

Plattform-Hooks (vom Wrapper injiziert)

window.BUSFAHRT_BASE         // '/geograsim/.../sims/busfahrt/'
window.BUSFAHRT_SESSION_MODE // 'free' | 'teacher_started' | 'student_started' | 'locked'
window.BUSFAHRT_FORCED_LEVEL // null oder 1/2/3
window.BUSFAHRT_SESSION_ID   // anonyme UUID
window.BUSFAHRT_API_BASE     // '/geograsim/App/api'
window.BUSFAHRT_TILE_PROXY   // Tile-Proxy-URL für Carto Positron
window.STUDENT_EASY          // Boolean

Verifikation

Lokal getestet:

  • localhost/geograsim/App/busfahrt → 200 OK
  • Sim-Hülle lädt mit Leaflet + Carto-Tiles, Topbar mit 🚌-Logo + 🏠-Cockpit
  • Injection-Variablen drin, engine.js absolut verlinkt
  • Schülerseite zeigt das Modul automatisch (DB-Eintrag, status='geplant' → erscheint LOCKED bis du auf 'beta' updatest, sobald Phase 1 testbar ist)

Was du jetzt machen kannst — Phase 1 Schritte

  1. cities.json schreiben — 3040 europäische Hauptstädte/Großstädte:
    [
      {
        "id": "paris",
        "title": "Paris",
        "country": "Frankreich",
        "isCapital": true,
        "lat": 48.8566,
        "lon": 2.3522,
        "population_million": 2.1,
        "infoText": "Paris liegt an der Seine. ...",
        "imagePath": "../../logistik/assets/cities/_original/paris.png",
        "level": 1
      }
    ]
    
  2. orders.json schreiben — pro Level Aufträge nach Typ AD:
    [
      {
        "id": "ord-1",
        "level": "l1",
        "type": "A",
        "cityId": "paris",
        "prompt": "Fahre nach Paris — Frankreichs Hauptstadt liegt an der Seine.",
        "tariffPerKm": 1.20,
        "fixedFee": 200
      }
    ]
    
  3. UI in game.html ergänzen:
    • Auftrags-Karte oben/links (mit prompt)
    • Optional Single-Choice-Vorfrage bei Typ-B-Aufträgen
    • Marker-Setzen bei Tap, Distanz-Polyline zur echten Position nach dem Tap (nicht vorher als Live-Hilfe — siehe Briefing)
    • 3-Versuche-Anzeige
    • Info-Card-Modal nach Auflösung (Bild + Land + Beschreibung + infoText)
  4. Status updaten auf 'beta' sobald Phase 1 spielbar:
    UPDATE module_info SET status='beta' WHERE module_id='busfahrt';
    

Hinweise

  • Sprachregel 4a: keine „spielen / Spiel / Spieler" — im Skelett habe ich „Bearbeiter*in" + „Auftrag" + „Tour" verwendet.
  • iPad-Pattern: Modal-CSS-Vorlage findest du im Sonnensystem (App/sims/sonnensystem/game.html .ggs-modal-*-Klassen) oder Logistik (.ggs-endscreen-* im design-system.css). Beide Patterns drüben nachlesen.
  • Tile-Proxy: schon konfiguriert auf Carto Positron via window.BUSFAHRT_TILE_PROXY. Standalone-Fallback fällt auf direkten Carto-Aufruf zurück.
  • Sonnensystem läuft parallel bei mir (Logistik). Falls du Sync-Themen mit Atlas hast, schicke sie mir — ich übernehme.

Quittung nicht nötig

Wenn Phase 1 läuft, einfach _status.md updaten und mir Bescheid geben mit „Phase 1 fertig, Deploy erbeten".

Viel Erfolg —

— Logistik (in Atlas-Stellvertretung)