extends RefCounted ## Kurzhilfe-Overlay (Karte t_11b5c25b, Karte 3/3) — H schaltet das Panel an, ## H/Esc aus. Der Text spiegelt docs/tasten.md (Source of truth der Shortcut- ## Karten) als Kompakt-Tabelle für den Editor-Bildschirm. Bei neuen Tasten: ## docs/tasten.md UND hier pflegen. ## ## BBCode-Tabelle ([table=2]): Taste | Wirkung. Bei neuen Tasten die Zeile in ## der passenden Sektion ergänzen (text() aufbauen, _rows() macht die Zellen). static func text() -> String: var out := "" out += _header("Navigation (Kamera)") out += _table(_rows([ ["Mittlere Maustaste ziehen", "Orbit: um die Karte drehen"], ["Mittlere Maustaste + Umschalt ziehen", "Pan: Karte verschieben"], ["Mausrad", "Zoom (aus, während ein Objekt gedreht wird)"], ["Rechte Maustaste GEDACHT halten", "Freelook-Flug: Umsehen + W vor / S zurück / A links / D rechts; Leertaste hoch / Shift runter (Shooter-Konvention) — funktioniert in JEDEM Werkzeug (Terrain, Bauen, Platzieren), die rechte Maustaste hat immer Vorrang"], ["Strg halten (im Flug)", "schneller fliegen (×3)"], ["Alt halten (im Flug)", "langsamer fliegen (×0,3)"], ["Mausrad (im Flug)", "Grundgeschwindigkeit dauerhaft ändern (2–300 m/s)"], ["Umschalt+F", "Flugmodus dauerhaft an/aus"], ["F", "Auswahl ins Bild zentrieren"], ])) out += _header("Auswahl") out += _table(_rows([ ["Linksklick", "Objekt auswählen (ersetzt die Auswahl)"], ["Strg+Klick (Viewport + Baum)", "Objekt zur Auswahl hinzufügen/entfernen (Mehrfachauswahl)"], ["Umschalt+Klick", "wie Strg+Klick (Mehrfachauswahl umschalten)"], ["Ziehen über leeren Boden", "Rahmen aufziehen: alle Objekte im Rahmen wählen"], ["Umschalt + Rahmen", "Rahmen-Auswahl zur bestehenden Auswahl hinzufügen"], ["Esc", "Werkzeug abbrechen → Greifen zurückrollen → Ghost abbrechen → Auswahl aufheben"], ["G", "Auswahl greifen (hängt an der Maus; Klick setzt, Esc rollt zurück)"], ])) out += _header("Objekt-Manipulation") out += _table(_rows([ ["R", "90° drehen (Umschalt+R = −90°, ganze Gruppe dreht mit; Mausrad: 15° fein)"], ["Pfeiltasten", "Auswahl im 2-m-Raster verschieben (Kamera-nächste Weltachse)"], ["Bild↑ / Bild↓", "+0,25 m / −0,25 m anheben/absenken"], ["Strg+Bild↑", "Auswahl aufs Terrain/Boden absetzen"], ["Strg halten", "temporärer Snap-Zwang (rastet auf ganze Meter)"], ["Strg+D", "Auswahl duplizieren (+2 m versetzt)"], ["Entf", "Auswahl sofort löschen (Strg+Z holt zurück)"], ["Strg+G / Strg+Umschalt+G", "Gruppieren / Gruppe lösen"], ])) out += _header("Terrain-Werkzeug (F1)") out += _table(_rows([ ["1 / 2 / 3 / 4", "Pinselmodus: Heben / Senken / Glätten / Malen"], ["[ / ]", "Pinselgröße: Klein (4 m) / Mittel (12 m) / Groß (32 m) zyklisch"], ["Linksklick-Ziehen", "Boden formen bzw. malen"], ["Strg+Linksklick-Ziehen", "Gegenteil: senken (bei Heben) / heben (bei Senken) / Gras zurückmalen"], ])) out += _header("Datei & Undo") out += _table(_rows([ ["Strg+Z", "Rückgängig"], ["Strg+Y oder Strg+Umschalt+Z", "Wiederherstellen (Redo)"], ["Strg+S", "Map speichern (.svmap, bekannter Pfad)"], ["Strg+Umschalt+S", "Map speichern unter …"], ["Strg+O", "Map öffnen"], ["Strg+N", "Neue Map"], ])) out += _header("Werkzeuge & Tests") out += _table(_rows([ ["F1", "Werkzeug: Terrain formen"], ["F2", "Werkzeug: Objekte platzieren/auswählen"], ["F3", "Werkzeug: Bauen (Häuser)"], ["F4", "Werkzeug: Spawn-Zonen malen"], ["F5", "▶ Karte testen"], ["H", "Diese Kurzhilfe an/aus (Esc schließt auch)"], ["L", "Höhenlinien FIXIEREN (immer sichtbar/unsichtbar) — ohne Fix erscheinen sie nur im Terrain-Werkzeug (F1)"], ])) out += "[color=#a8b6ad]Vor „Neue Map“ und „Öffnen“ fragt der Editor nach, wenn noch ungespeicherte Änderungen da sind. Die Statuszeile unten zeigt immer das aktive Werkzeug.[/color]\n" return out static func _header(title: String) -> String: return "\n[color=#8cc9f2][b]%s[/b][/color]\n\n" % title static func _table(rows: String) -> String: return "[table=2]%s[/table]\n" % rows static func _rows(pairs: Array) -> String: var out := "" for pair in pairs: out += "[cell][b]%s[/b][/cell][cell]%s[/cell]" % [str(pair[0]), str(pair[1])] return out