saumwacht-godot/scripts/luneraria/ui/lune_minimap_overlay.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

24 lines
934 B
GDScript

extends Control
## Camera frame on the minimap. A separate layer, so moving the camera only redraws this
## outline and not the whole map.
var map: Control
func _init() -> void:
mouse_filter = Control.MOUSE_FILTER_IGNORE
func _draw() -> void:
if map == null:
return
var footprint: PackedVector2Array = map.camera_footprint
if footprint.size() == 4:
var outline := PackedVector2Array()
for corner: Vector2 in footprint:
outline.append(map.to_map(corner).clamp(Vector2.ZERO, size))
draw_colored_polygon(outline, Color(1, 1, 1, .05))
outline.append(outline[0])
draw_polyline(outline, Color(1, 1, 1, .75), 1.3, true)
else:
var center: Vector2 = map.to_map(Vector2(map.camera_focus.x, map.camera_focus.z))
var span: float = map.camera_span / ((LuneMap.HALF_EXTENT + 4.0) * 2.0) * size.x
draw_rect(Rect2(center - Vector2(span * .9, span * .55), Vector2(span * 1.8, span * 1.1)), Color(1, 1, 1, .6), false, 1.2)