saumwacht-godot/scripts/luneraria/ui/components/status_badge.gd
Martin Stickelbroeck 1b540f2a55 G3 (Zwischenstand): neues Ingame-HUD; Projekt wechselt nach Unity
Nicht abgenommen: Nach dem ersten Spieltest wurde entschieden, Champions of
Luneraria nach Unity 6 zu portieren. Dieser Stand ist die Referenz für das
HUD im Unity-Projekt (../luneraria-unity).

- HUD neu aus Komponenten mit eigenem Theme, Porträts aus den echten Modellen
  (einmal gerendert, zwischengespeichert), Lane-Übersicht mit deterministischer
  Bedrohung aus öffentlichem Zustand, Bossgrotte, nächste Welle, Ereignisse,
  Minimap mit zusammengefassten Armeen, Held/Items/Talente, Einheitendetails,
  Angriffschampions, Bereit-Sperre, UI-Größe, Team-Formen statt nur Farben
- Privatsphäre über LuneHudModel: fremdes Gold und fremde Entwürfe erscheinen nie
- Keine Regeländerung: Regeln 91/91, M2 73/73, Netz 43/43; verify_g3 715/715;
  verify_m1 38/38 und verify_m2 14/14 mit angepassten UI-Treibern
- Spieltest bis Welle 8 über die echte Oberfläche, Befunde in G3-HUD.md
- HELDEN-KONZEPT.md: vom Projektinhaber vorgegebene Helden (nicht umgesetzt)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 19:59:55 +02:00

30 lines
1.1 KiB
GDScript

class_name LuneStatusBadge
extends PanelContainer
## Small labelled state (RUHIG, KRITISCH, BEREIT, BOT, COOLDOWN …). Always colour plus text
## and, where it helps, a symbol; never colour alone. Styles come from the theme cache.
var _row: HBoxContainer
var _glyph: LuneGlyph
var _label: Label
var text: String = ""
func _init() -> void:
mouse_filter = Control.MOUSE_FILTER_IGNORE
size_flags_vertical = Control.SIZE_SHRINK_CENTER
_row = HBoxContainer.new()
_row.add_theme_constant_override("separation", 4)
_row.mouse_filter = Control.MOUSE_FILTER_IGNORE
add_child(_row)
_glyph = LuneGlyph.make("", Color.WHITE, 12.0, _row)
_glyph.visible = false
_label = LuneUiTheme.label("", "HudBadge", _row)
func set_state(text_value: String, color: Color, glyph: String = "", filled: bool = false) -> void:
text = text_value
_label.text = text_value
var ink: Color = Color("15110b") if filled else color.lightened(.15)
_label.add_theme_color_override("font_color", ink)
_glyph.visible = not glyph.is_empty()
_glyph.glyph = glyph
_glyph.color = ink
add_theme_stylebox_override("panel", LuneUiTheme.badge_style(color, filled))