feat(ui): zoom-based LoD for star map labels
Labels now appear based on zoom level and system importance: - Always: selected + hovered - Zoom >= 1.2: hubs, junctions, gateway - Zoom >= 2.0: all named systems - Below 1.2: only selected/hovered Prevents label soup at overview zoom levels. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
+26
-16
@@ -415,25 +415,35 @@ func _draw_systems(center: Vector2) -> void:
|
||||
|
||||
draw_circle(pos, radius, color)
|
||||
|
||||
# System name label — centered below the dot
|
||||
# System name label — centered below dot, zoom-based LoD
|
||||
var label: String = node.get("proper_name", "")
|
||||
if not label.is_empty() and label != sid:
|
||||
var label_color: Color
|
||||
var show_label := false
|
||||
if sid == _selected_system or sid == _hovered_system:
|
||||
label_color = COLOR_TEXT
|
||||
else:
|
||||
label_color = COLOR_TEXT_DIM
|
||||
var font := get_theme_default_font()
|
||||
var label_size := font.get_string_size(label, HORIZONTAL_ALIGNMENT_LEFT, -1, 9)
|
||||
draw_string(
|
||||
font,
|
||||
pos + Vector2(-label_size.x / 2.0, radius + 10.0),
|
||||
label,
|
||||
HORIZONTAL_ALIGNMENT_LEFT,
|
||||
-1,
|
||||
9,
|
||||
label_color,
|
||||
)
|
||||
show_label = true # always show selected/hovered
|
||||
elif _zoom >= 2.0:
|
||||
show_label = true # zoomed in: show all
|
||||
elif _zoom >= 1.2:
|
||||
show_label = topology in ["hub", "junction", ""] # medium: hubs + junctions + gateway
|
||||
# else: zoomed out, only selected/hovered
|
||||
|
||||
if show_label:
|
||||
var label_color: Color
|
||||
if sid == _selected_system or sid == _hovered_system:
|
||||
label_color = COLOR_TEXT
|
||||
else:
|
||||
label_color = COLOR_TEXT_DIM
|
||||
var font := get_theme_default_font()
|
||||
var label_size := font.get_string_size(label, HORIZONTAL_ALIGNMENT_LEFT, -1, 9)
|
||||
draw_string(
|
||||
font,
|
||||
pos + Vector2(-label_size.x / 2.0, radius + 10.0),
|
||||
label,
|
||||
HORIZONTAL_ALIGNMENT_LEFT,
|
||||
-1,
|
||||
9,
|
||||
label_color,
|
||||
)
|
||||
|
||||
|
||||
func _draw_edges(center: Vector2) -> void:
|
||||
|
||||
Reference in New Issue
Block a user