86 lines
3.9 KiB
GDScript
86 lines
3.9 KiB
GDScript
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
|