scopedvr-map-editor/src/ui/help_text.gd

86 lines
3.9 KiB
GDScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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; E hoch / Q runter"],
["Umschalt (im Flug)", "schneller fliegen (×3)"],
["Alt (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"],
["Rechtsklick-Ziehen", "Gegenteil formen / 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)"],
]))
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