63 lines
2.4 KiB
GDScript
63 lines
2.4 KiB
GDScript
extends "res://core/ui/panels/editor_panel.gd"
|
|
## Test-Start-Bereich (rechte Spalte — Karte t_96e3c4ee / T1b, Wiederanbindung
|
|
## durch den Operator am 20.10.).
|
|
##
|
|
## Aufteilung: der ZUSTAND lebt in main.gd (`test_start_point`) samt den Haken
|
|
## `_test_start_apply` / `_test_start_delete` / `_test_start_reload`, weil die
|
|
## Prüfsuite tests/test_playtest_spawn.gd (56 checks) genau diese drei Namen auf
|
|
## main erwartet — das ist der T1b-Vertrag. Beim U1-Umbau waren sie verschwunden,
|
|
## die Suite brach mit „Nonexistent function '_test_start_reload'" ab.
|
|
## Dieses Modul zeigt den Zustand nur an (Info-Text + Löschen-Knopf) und meldet
|
|
## sich datengetrieben über registry.gd an — main.gd verdrahtet nichts fest.
|
|
|
|
var info: Label
|
|
var delete_btn: Button
|
|
var info_hint: Label
|
|
|
|
|
|
static func spec() -> Dictionary:
|
|
return {"titel": "Test-Start", "gruppe": "map", "order": 20}
|
|
|
|
|
|
func panel_title() -> String:
|
|
return "Test-Start (F5)"
|
|
|
|
|
|
func build() -> void:
|
|
add_child(_header_label("Startpunkt für „▶ Karte testen“"))
|
|
info = Label.new()
|
|
info.autowrap_mode = TextServer.AUTOWRAP_WORD_SMART
|
|
add_child(info)
|
|
|
|
delete_btn = Button.new()
|
|
delete_btn.text = "🗑 Test-Start löschen"
|
|
delete_btn.custom_minimum_size = UIScale.v2(0, 40)
|
|
delete_btn.tooltip_text = "Test-Startpunkt entfernen — F5 startet dann wieder am ersten Team-Spawnpunkt."
|
|
delete_btn.pressed.connect(func() -> void: main.call("_test_start_delete"))
|
|
add_child(delete_btn)
|
|
|
|
add_child(_separator())
|
|
info_hint = Label.new()
|
|
info_hint.autowrap_mode = TextServer.AUTOWRAP_WORD_SMART
|
|
info_hint.text = "Leiste „🎯 Test-Start“ oder Taste T, dann in die Karte klicken."
|
|
add_child(info_hint)
|
|
|
|
# main holt sich das Modul hier ab (main._refresh_test_start_panel) — die
|
|
# Prüfsuite liest es als main.test_start_panel. Sichtbar erst, wenn das
|
|
# Werkzeug aktiv ist (wie vor dem U1-Umbau).
|
|
main.set("test_start_panel", self)
|
|
visible = false
|
|
refresh_point(main.get("test_start_point"))
|
|
|
|
|
|
## Wird von main._refresh_test_start_panel() gerufen. point = Vector3 oder null.
|
|
func refresh_point(point: Variant) -> void:
|
|
if info == null or delete_btn == null:
|
|
return
|
|
if point == null:
|
|
info.text = "Kein Test-Start gesetzt.\nF5 startet dann am ersten Team-Blau-Spawnpunkt (ohne Spawnpunkte: Kartenmitte)."
|
|
delete_btn.disabled = true
|
|
else:
|
|
var p: Vector3 = point
|
|
info.text = "Test-Start: x=%.0f z=%.0f\n(Höhe kommt automatisch vom Terrain)" % [p.x, p.z]
|
|
delete_btn.disabled = false
|