81 lines
3 KiB
GDScript
81 lines
3 KiB
GDScript
extends HBoxContainer
|
||
## Statusleiste (aus main.gd ausgezogen, Karte t_eaccbfed U1 — Logik
|
||
## unverändert): Hilfs-Meldungen + permanente Werkzeug-Anzeige +
|
||
## Symmetrie-Anzeige + Objekt-/Terrain-Zähler + FPS-Timer.
|
||
|
||
var main # core/ui/main.gd
|
||
var status_label: Label
|
||
var tool_label: Label # permanenter Werkzeugmodus + Flug-Hint
|
||
var sym_label: Label
|
||
var stats_objects: Label
|
||
var stats_terrain: Label
|
||
|
||
|
||
static func spec() -> Dictionary:
|
||
return {"titel": "Statuszeile", "gruppe": "status", "order": 0}
|
||
|
||
|
||
func setup(p_main) -> void:
|
||
main = p_main
|
||
# Eine Leiste ist EINE Zeile (VBox-Erbe stapelte alle Labels senkrecht →
|
||
# riesiger Balken, Befund 25.10.).
|
||
size_flags_vertical = Control.SIZE_SHRINK_END
|
||
size_flags_horizontal = Control.SIZE_EXPAND_FILL
|
||
|
||
|
||
func theme_color(cname: String) -> Color:
|
||
if main != null and main.theme != null and main.theme.has_color(cname, "Editor"):
|
||
return main.theme.get_color(cname, "Editor")
|
||
return get_theme_color(cname, "Editor")
|
||
|
||
|
||
func build() -> void:
|
||
add_theme_constant_override("separation", UIScale.px(16))
|
||
status_label = Label.new()
|
||
status_label.size_flags_horizontal = Control.SIZE_EXPAND_FILL
|
||
status_label.clip_text = true # langer Text darf das Layout NICHT sprengen
|
||
add_child(status_label)
|
||
|
||
# Karte 3/3 (t_11b5c25b): PERMANENTE Werkzeug-Anzeige — Sly sieht immer,
|
||
# in welchem Werkzeug er ist, plus Hint für den Flugmodus (Umschalt+F).
|
||
tool_label = Label.new()
|
||
# U7: Werkzeug-Farbe über Theme (Editor/colors/accent).
|
||
tool_label.add_theme_color_override("font_color",
|
||
theme_color("accent"))
|
||
# Karte t_297221b5: Statuszeilen-Labels egalisiert (min-size-Druck bei 1.5×)
|
||
tool_label.clip_text = true
|
||
tool_label.text_overrun_behavior = TextServer.OVERRUN_TRIM_ELLIPSIS
|
||
add_child(tool_label)
|
||
|
||
# Symmetrie-Anzeige (Karte t_f5935023, M1): Sly sieht in der Statuszeile
|
||
# immer, ob/wie gespiegelt wird (Standard: Punkt).
|
||
sym_label = Label.new()
|
||
# U7: Symmetrie-Farbe über Theme (Editor/colors/accent).
|
||
sym_label.add_theme_color_override("font_color",
|
||
theme_color("accent"))
|
||
sym_label.clip_text = true
|
||
sym_label.text_overrun_behavior = TextServer.OVERRUN_TRIM_ELLIPSIS
|
||
add_child(sym_label)
|
||
|
||
stats_objects = Label.new()
|
||
# U7: Nebentext-Farbe über Theme (Editor/colors/field).
|
||
stats_objects.add_theme_color_override("font_color",
|
||
theme_color("field"))
|
||
stats_objects.clip_text = true
|
||
stats_objects.text_overrun_behavior = TextServer.OVERRUN_TRIM_ELLIPSIS
|
||
add_child(stats_objects)
|
||
|
||
# Terrain-Anteil + Editor-FPS (Perf-Zähler, Karte t_9aba04f1)
|
||
stats_terrain = Label.new()
|
||
# U7: Nebentext-Farbe über Theme (Editor/colors/field).
|
||
stats_terrain.add_theme_color_override("font_color",
|
||
theme_color("field"))
|
||
stats_terrain.clip_text = true
|
||
stats_terrain.text_overrun_behavior = TextServer.OVERRUN_TRIM_ELLIPSIS
|
||
add_child(stats_terrain)
|
||
|
||
var fps_timer := Timer.new()
|
||
fps_timer.wait_time = 0.5
|
||
fps_timer.autostart = true
|
||
fps_timer.timeout.connect(main.call.bind("_refresh_stats"))
|
||
add_child(fps_timer)
|