scopedvr-map-editor/tests/probe_u7_theme_render.gd
2026-11-01 19:34:05 +01:00

61 lines
2.1 KiB
GDScript

extends SceneTree
## Beweis-Probe (Karte t_2336c58e, WEGWERF — nicht Teil der Suite):
## U7 Feinschliff — Screenshot der GANZEN Oberfläche (vorher/nachher je
## Baumzustand). Bibliothek „Alle auf" + erste Gruppe offen, damit die
## Kacheln im Bild sind.
## Aufruf: xvfb-run -a godot4 --path . --rendering-driver opengl3 \
## -s res://tests/probe_u7_theme_render.gd (mit ../scopedvr-client)
func _initialize() -> void:
_run.call_deferred()
func _shot(pfad: String) -> void:
await process_frame
await RenderingServer.frame_post_draw
var img := root.get_viewport().get_texture().get_image()
img.save_png(pfad)
print("Bild: %s (%dx%d)" % [pfad, img.get_width(), img.get_height()])
## „Modelle fehlen"-AcceptDialog schließen (kommt erst nach 2 Frames von
## utils/modelle_status.gd — mehrfach probieren, mit Wartezeit dazwischen).
func _dismiss_dialogs() -> void:
for i in 6:
await process_frame
var stack: Array = [root]
while not stack.is_empty():
var n: Node = stack.pop_back()
if n is AcceptDialog:
(n as AcceptDialog).hide()
n.queue_free()
stack.append_array(n.get_children())
func _run() -> void:
var dir := OS.get_environment("U7_DIR")
if dir.is_empty():
dir = "/tmp/u7_beweise"
DirAccess.make_dir_recursive_absolute(dir)
var name := "u7_ui_%s.png" % str(OS.get_environment("U7_MODUS"))
var scene: PackedScene = load("res://core/scenes/main.tscn")
var main = scene.instantiate()
root.add_child(main)
await process_frame
await process_frame
await _dismiss_dialogs()
DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_WINDOWED)
DisplayServer.window_set_size(Vector2i(2328, 1310))
await process_frame
await process_frame
# Bibliothek sichtbar füllen: „Alle auf" (der Klick feuert toggled an den
# Gruppen-Headern → Körper sichtbar; der cfg-Schrieb läuft in eine
# hermetische HOME-Umgebung, siehe Startkommando).
var open_btn: Button = main.library_open_all_btn
if open_btn != null:
open_btn.pressed.emit()
await process_frame
await process_frame
await _shot(dir.path_join(name))
print("PROBE_U7_OK dir=%s" % dir)
quit(0)