Commit Graph

11 Commits

Author SHA1 Message Date
Adminator e221f14f5c Klima 3D: Flugzeug fliegt nase-vorwärts + Banking in der Kurve
Aus plane-test.html-Kalibrierung bestätigt: Flugzeug soll Nase in
airport-lokalem +X halten, Bewegung in +X. updateSinglePlane
komplett neu:

- Parken am -X-Ende der Runway (vorher +X)
- Takeoff rollt -X → +X (vom Vulkan weg, da airport.rotation.y =
  atan2(-dz, dx) das +X in die Away-Richtung dreht)
- Climb-Out in +X-Richtung
- Ab der zweiten Climb-Hälfte bankt es leicht (rotation.z wächst)
  zeigt Seitwärts-Kippen in die Kurve bevor es verschwindet
- Approach kommt aus -X-Ferne zurück, Banking löst sich auf
- Landung in +X-Richtung (wie Takeoff)
- Taxi zurück zur Parkposition: unsichtbar (Teleport OK)

Nase-Ausrichtung: rotation.y = airport.rotation.y (kein π-Offset mehr
— entspricht der Test-Seite). Pitch für Start/Landung, Roll für
Kurvenmanöver.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-19 14:29:12 +02:00
Adminator 96fb75ffdf Klima 3D: Flugzeug-Test-Seite + Airport-Ausrichtung vom Vulkan weg
- Neue Datei: App/sims/klima/plane-test.html
  Three.js-Sandbox mit dem makePlane-Mesh, Slidern für rotation.x/y/z,
  Achsen-Helper (X rot, Y grün, Z blau), großem roten Pfeil als
  Bewegungsrichtung (+X), "Flug simulieren"-Button und "Werte kopieren".
  Thomas kann damit die korrekte Flug-Rotation finden und zurückmelden.
- Airport-Ausrichtung: finalizeBuy überschreibt die zufällige
  placementRotation bei id='airport' mit atan2(-dz, dx) zum Vulkan —
  Runway (lokales +X) zeigt nun IMMER vom Vulkan weg, Start und
  Landung über Ozean statt Bergflanke.
- airportLocalToWorld: Vorzeichen an Three.js-Konvention angeglichen
  (x_w += lz·sinR, z_w -= lx·sinR), damit rotierte Airports ihre
  internen Offsets korrekt in Welt-Koordinaten übertragen.
- Plane-Zyklus: +60 s Grund-Offset entfernt, Flugzeug ist bei
  Airport-Bau sofort sichtbar (Phase 0 = parken auf der Runway).

Test-URL: http://localhost/geograsim/App/sims/klima/plane-test.html

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-19 14:22:34 +02:00
Adminator 665e86d485 Klima 3D: Musik-Reset, Szene 10% tiefer, Drohnen-Toggle
- ggsMusicResetToDefault: neuer Helper springt auf den ersten Track im
  Dropdown. Wird in startGame aufgerufen, damit Drama-Musik aus dem
  Endscreen eines vorherigen Durchgangs nicht ins neue Level hinüber-
  läuft (erklärt, warum 'Drama im laufenden Spiel' lief).
- camera.lookAt: von (0, 0.5, 0) auf (0, 2.8, 0) angehoben → Insel
  rutscht im Bild ~10 % nach unten, oben mehr Himmel/Dunst-Wolken.
- Drohnen-Toggle 🚁 im Header: neuer droneEnabled-Flag. Aus =
  Auto-Orbit ist dauerhaft gestoppt (nur Maus-Drag bewegt Kamera).
  Ein = Idle-Timeout resumed wie bisher. Button zeigt aktiven
  Zustand über opacity + .active-Klasse.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-19 14:13:47 +02:00
Adminator 21cc33e36b Klima 3D: Wolken kleiner + deutlich mehr Variation
- makeCloud: Opacity pro Wolke gewürfelt (0.45..0.80), Bump-Anzahl
  2..6 statt 3..5, Bump-Radien 0.45..1.15 statt 0.9..1.8 (halb so
  groß). Spacing zwischen Bumps variiert stärker.
- 5 Wolken-Instanzen (vorher 4), Parameter-Ranges breiter:
  - Höhe 5..9 (vorher 6.5..8.3)
  - Scale 0.35..0.85 (vorher 0.75..1.20) — kleiner + mehr Streuung
  - Speed 0.5..1.9 (vorher 0.8..1.4)
  - Z-Start 2..12, Z-End -14..-22 (stärker versetzt)
Fühlt sich jetzt mehr wie natürliche Dunst-Schwaden an, weniger
synchron.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-19 14:10:46 +02:00
Adminator 0fe4377deb Klima 3D: Heli pro Airport, Flugzeug, Flut-Tönung, Graph-Top-Verlust
- Airport-Fahrzeuge: pro Flughafen eigener Heli + Flugzeug, in
  airportVehicles-Map verwaltet, über syncMeasureMeshes mit-synchronisiert.
  Phasen-Offsets per Airport-Index, damit mehrere Flughäfen nicht
  synchron laufen.
- Heli: landet jetzt korrekt auf dem H (padLocal aus userData statt
  hardcoded, inkl. LIFT-Korrektur). Alle ~3 Zyklen (deterministisch)
  Vulkan-Runde statt Airport-Kreis — Radius 9 um VOLCANO_X/Z.
- Flugzeug (makePlane, low-poly Cessna): 110-s-Zyklus — parkt am
  Runway-Anfang, Takeoff-Roll, Climb-Out nach -X, 50 s unsichtbar
  (Reise), Approach, Landing-Roll, Taxi. Propeller dreht.
- Wolken: Höhe auf ~7 abgesenkt (Vulkan-Gletscher-Höhe), fühlen sich
  jetzt wie Dunst um den Kegel an statt Himmels-Schleier.
- Flut-Tönung: applyFloodTintAll lerpt Material-Farben aller Mesh-
  Füße, die unter ocean.position.y liegen, Richtung Dunkelgrau und
  kippt sie bis 0.12 rad. Wirkt auf Maßnahmen + Dorf + Citizen-Strand.
- Graph-Top = verloren: neu endLevel(false, 'co2-top' | 'temp-top')
  wenn state.co2Ppm ≥ 700 oder state.currentTemp ≥ 19. Endscreen
  bekommt passende Icons (🌫 / 🌡) und Titel.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-19 14:08:04 +02:00
Adminator c7b3636815 Klima 3D: Baumfäll-Animation + Solar-Kauf-Hinweis
- Blackout fällt Bäume jetzt sichtbar: Baum kippt um (easeOut), Totenkopf
  erscheint nach 1.8 s darüber, nach 3.2 s fadet alles weg. Animation
  hängt an state.animMs → Pause friert ein. Totenkopf als Canvas-Texture
  auf einem Billboard-Plane.
- simulateTick vergleicht Forest-Count vor/nach engine.tick; orphaned
  Meshes werden aus placedMeshes gepullt und an fallenTrees übergeben,
  damit syncMeasureMeshes sie nicht voreilig entfernt.
- Toast-Card pro Tick mit Holz-Fäll-Meldung (🪓 'Bewohner:innen fällen N
  Bäume zum Heizen'), klickbar auf INFO_TOPICS.blackout.
- Solaranlage-Kauf: Toast mit Strom-Leistung (+1 MW) und Wartung
  (2 Mio €/Jahr), analog zum Gründach-Hinweis.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-19 14:01:13 +02:00
Adminator f0fd54f458 Klima 3D: Wolken, kleineres Airport-Plateau, Pause-Zeichen zentral
- Wolken am Himmel: 4 Dunst-Gruppen (je 3-5 Kugeln, transluzent), ziehen
  vom +X Rand über die Insel Richtung Vulkan (−X, −Z-Drift). Eigene
  Phase, Höhe, Zyklusdauer pro Wolke. updateClouds in updateAmbient.
- Airport-Plateau: von 3.4×1.55 auf 2.55×1.25 geschrumpft, nach +Z
  versetzt (0.28). Endet knapp innerhalb der Runway, deckt aber
  Terminal + Heli-Pad weiter ab.
- Pause-Zentrum: neue Card mit ▶-Symbol in der Mitte der Szene, sichtbar
  bei state.speed === 0. Klick startet 1×-Speed. Glas-Optik, animation
  bei Einblendung. Sync via updatePauseCenter in renderUI und bei jedem
  Speed-Klick.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-19 13:58:22 +02:00
Adminator 9a8ce64d09 Klima 3D: Gründach-Kauf erklärt Wohnraum-Effekt
Jede Maßnahme hebt engine-seitig die Population-Obergrenze um 5 % der
Start-Bevölkerung (computePopulationGrowth.capBonus). Beim Gründach
machen wir das didaktisch explizit sichtbar: Toast-Card beim Kauf weist
auf neue Wohnungen, zuziehende Einwohner:innen und Touristen + höhere
Steuer-Einnahmen hin. infoKey=green_roof_info macht die Karte klickbar.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-19 13:55:08 +02:00
Adminator 3836b29c5d Klima 3D: Radweg-Snap, Start-Bäume, Krisen-Toasts, Airport-Plateau, Sand-Fixes
- Radwege: snappen an bestehende Pfade an (Distanz 2.2, Spacing 92 %,
  leicht überlappend). Rotation am NEUEN Mittelpunkt via coastRotation,
  Kette folgt so der Küstenbiegung statt starre Linie.
- Start-Wald: 3 Bäume bei startGame pre-seeded (forest.instances mit
  starter-Flag). Engine-Blackout-Logik fällt sie bei Stromausfall.
  Toast 'Du startest mit 3 Bäumen ...' am Level-Start, klickbar auf
  INFO_TOPICS.blackout.
- updateCrisisMusic: Edge-Detection pro Kriterium (Budget/Temp/Flood),
  jeweils Toast-Card beim Übergang ins Kritische. Merker in startGame
  zurückgesetzt.
- Airport: Plateau-Sockel (3.4×0.20×1.55 + dünne helle Oberkante), alle
  Bauten um LIFT=0.24 angehoben. Hebt Airport sichtbar aus dem Terrain,
  kein Versinken am Hang mehr. Heli-Pad-Offset folgt nach.
- Sand-Aufschüttung (Bau-Maßnahme): zurück zum reinen Lathe-Kegel
  (Plattform + Gras raus). Kleiner, zurückhaltender Sand-Hügel wie
  ursprünglich V1.
- Citizen-Event 'Strand aufschütten' (citizen-tourism): neuer
  syncCitizenBeach → breiter flacher Sand-Streifen vorne am Ufer,
  parallel zur Küste. Nur sichtbar wenn state.hasSandBeach gesetzt.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-19 13:53:48 +02:00
Adminator 64bb9356b0 Klima: 3D V2 fertig + PHP-Wrapper + Sprachregel + Lehrplan-Notiz
- App/sims/klima/game-3d.html neu (~4800 Z.): Three.js-Szene via KlimaEngine.
  Phasen A-D durch (Gerüst, Terrain + Vulkan + Ozean + OrbitControls,
  12 Mesh-Factories, Raycaster + Placement-Ghost + Zonen-Overlay).
  Ambient: Flughafen 2x mit Heli-Landezyklus auf H-Pad, drei Boote + Yacht,
  Start-Dorf mit Rauchfäden, Vulkan-Schutzwall, Mangroven-Sterben grau,
  Radwege am Küstenband, Ketten-Bau, Experten-Modus mit 17 Info-Cards.
  Sprachregel 4a angewandt (Arbeitsstand statt Spielstand etc.).
- App/pages/klima-3d.php neu: PHP-Wrapper analog zu klima-2d.php, teilt
  sich module_info und game_levels, separate Save-Slots (ggs-save-klima-3d).
- _inbox/klima/_status.md überschrieben.
- _inbox/zentrale/2026-04-19-1700-klima-3d-v2-fertig-modul-toggle.md:
  Bitte an Lehrplan um 2D/3D-Launcher auf modul-klima.php.

V1 (App/game-3d.html) bleibt unberührt.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-19 13:46:49 +02:00
Adminator dfb9e80664 Klima: Engine extrahiert + 2D refactored + Drama-Track + Bugfixes
- engine.js als headless Single Source of Truth (KlimaEngine)
- game-2d.html nutzt engine (-515 Zeilen Duplikation)
- rising-pressure.mp3 als Drama-Slot, Auto-Switch bei kritischem State
- state.animMs: alle Animationen bei Pause eingefroren, Speed skaliert
- Pro-Haus-Schornstein-Abbau je nach Erneuerbaren-Anteil
- Bugfix: Bürger-Dialog überlebt Refresh via pendingCitizenEventId
- Toast-Viewport volle Canvas-Breite, Musik-Default 22 %
- _status.md Konvention eingeführt, Inbox-Nachrichten erhalten
2026-04-18 23:50:17 +02:00