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("Kamera & Steuerung") out += _table(_rows([ ["Mittlere Maustaste ziehen", "Orbit: um die Karte drehen"], ["Mittlere Maustaste + Umschalt", "Pan: Karte verschieben"], ["Mausrad", "Zoom"], ["Rechte Maustaste halten", "Freelook-Flug in jedem Werkzeug: Maus = Umsehen, W/A/S/D = Bewegen, Leertaste hoch, Umschalt runter"], ["Strg / Alt (im Flug)", "schneller (×3) / langsamer (×0,3); Mausrad ändert die Grundgeschwindigkeit"], ["Umschalt+F", "Flugmodus dauerhaft an/aus"], ["F", "Auswahl ins Bild zentrieren"], ["L", "Höhenlinien fixieren (sonst nur im Terrain-Werkzeug)"], ["H", "diese Hilfe an/aus (Esc schließt auch)"], ])) out += _header("Objekte auswählen & platzieren (F2)") out += _table(_rows([ ["Linksklick", "Objekt wählen; Umschalt/Strg+Klick: Mehrfachauswahl"], ["Rahmen aufziehen", "alle Objekte im Rahmen wählen (Umschalt: hinzufügen)"], ["Bibliothek: Klick / Doppelklick", "Objekt auswählen / Platzieren starten; Klick in die Karte setzt, Esc bricht ab"], ["G", "greifen: Objekt hängt an der Maus (Klick setzt, Esc zurück)"], ["Pfeiltasten", "im 2-m-Raster verschieben"], ["Bild↑ / Bild↓", "0,25 m anheben / absenken; Strg+Bild↑ = auf den Boden setzen"], ["Strg halten", "Snap-Zwang auf ganze Meter"], ["Strg+D", "duplizieren"], ["Entf", "löschen"], ["Strg+G / Strg+Umschalt+G", "Gruppieren / Gruppe lösen"], ["Esc", "abbrechen, dann Auswahl aufheben"], ])) out += _header("Objekte verschieben, drehen, kippen (Werkzeugleiste links oben in der 3D-Ansicht)") out += _table(_rows([ ["Verschieben", "Pfeile am Objekt ziehen (X rot, Y grün, Z blau); Mausrad ändert die Schrittweite"], ["Drehen", "Ringe am Objekt ziehen: um alle drei Achsen, in 15°-Schritten; R = 90° um Y (Umschalt+R = −90°)"], ["Kippen", "Strg+R / Strg+Umschalt+R = um X ±15°; Alt+R / Alt+Umschalt+R = um Z ±15° (auch beim Platzieren)"], ["Spiegeln", "an der Stelle links↔rechts oder vor↔zurück (Panel Auswahl)"], ["Strg+Z / Strg+Y", "jeder Zug ist ein Undo-Schritt"], ])) out += _header("Terrain formen (F1)") out += _table(_rows([ ["1 / 2 / 3", "Heben / Senken / Glätten"], ["5 / 6", "Einebnen (Höhe vom Strichstart) / Rampe (Start klicken, ziehen, loslassen)"], ["[ / ]", "Pinselgröße Klein / Mittel / Groß"], ["Linksklick ziehen", "Boden formen; Strg+Klick = Gegenteil (Heben ↔ Senken)"], ["Tablet/Controller", "Stärke folgt dem Druck (Maus = voll)"], ])) out += _header("Malen (4)") out += _table(_rows([ ["Material wählen", "Tab Malen: Kacheln mit Vorschau"], ["Linksklick ziehen", "Material auf den Boden malen; Strg+Klick malt Steppe zurück"], ["Kante", "Regler: hart ↔ weich auslaufend"], ])) out += _header("Bauen (F3)") out += _table(_rows([ ["Teil im Tab Bauen", "wählen, dann in die Karte klicken — Wände rasten an die Zellkante, Böden/Dächer in die Zellmitte"], ["Klick auf Wandoberkante", "stapelt das nächste Geschoss; Klick auf die Seite ersetzt das Teil (Wand → Tür)"], ["R / Esc", "Teil umdrehen bzw. drehen / Bauen beenden"], ["Gebäude", "jedes Haus ist eine Gruppe: „Ganzes Gebäude auswählen“, kopieren, löschen im Tab Bauen"], ])) out += _header("Spawn-Zonen (F4) und Test-Start (T)") out += _table(_rows([ ["F4: Linksklick", "Zone setzen; Ziehen verschiebt, Entf löscht; Team und Radius im Tab Prüfen"], ["T: Linksklick", "Test-Startpunkt setzen (nur für F5, kein Spawn)"], ["F5", "▶ Karte testen"], ])) out += _header("Datei & Rückgängig") out += _table(_rows([ ["Strg+Z", "Rückgängig"], ["Strg+Y / Strg+Umschalt+Z", "Wiederherstellen"], ["Strg+S / Strg+Umschalt+S", "Speichern / Speichern unter"], ["Strg+O / Strg+N", "Öffnen / Neue Map"], ["Datei → Hand-Haltung der Waffen", "öffnet das Tool für Hände und Finger pro Waffe (eigenes Fenster)"], ["Datei → Updates prüfen", "prüft auf eine neue Version; Banner „Jetzt updaten“ lädt und startet neu"], ])) 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