fix(ui): star map info panel spacing — split separator padding

Separators now have explicit above (6px) and below (12px) spacing
relative to text baselines. Previously a single 8px block didn't
account for baseline positioning, causing text to merge with
separator lines. Line height bumped to 18px.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-05 10:35:05 +02:00
co-authored by Claude Opus 4.6
parent 73ed0be22c
commit 8d02b110ae
+27 -23
View File
@@ -403,7 +403,9 @@ func _draw_info_panel(sz: Vector2) -> void:
var font := get_theme_default_font()
var panel_w: float = POPUP_WIDTH
var pad: float = POPUP_PADDING
var sep_h: float = 8.0 # separator line + spacing
var line_h: float = 18.0 # line height for single-line text (baseline to baseline)
var sep_above: float = 6.0 # space from last text baseline to separator line
var sep_below: float = 12.0 # space from separator line to next text baseline
var inner_w: float = panel_w - pad * 2.0
var sep_color := Color(COLOR_TEXT.r, COLOR_TEXT.g, COLOR_TEXT.b, 0.12)
@@ -462,23 +464,24 @@ func _draw_info_panel(sz: Vector2) -> void:
adj_line, HORIZONTAL_ALIGNMENT_LEFT, inner_w, 10, 3).y
# ── Calculate total panel height ─────────────────────────────────────────
var sep_total: float = sep_above + sep_below # full separator block height
var panel_h: float = pad # top padding
panel_h += POPUP_LINE_H # system name (15px font)
panel_h += POPUP_LINE_H # system id (10px font)
panel_h += sep_h # separator
panel_h += POPUP_LINE_H # star type + hop
panel_h += POPUP_LINE_H # corridor
panel_h += POPUP_LINE_H # bodies + pop
panel_h += line_h # system name (15px font)
panel_h += line_h # system id (10px font)
panel_h += sep_total # separator
panel_h += line_h # star type + hop
panel_h += line_h # corridor
panel_h += line_h # bodies + pop
if not gttr.is_empty():
panel_h += sep_h + gttr_h
panel_h += sep_h + adj_h # adjacent systems
panel_h += sep_total + gttr_h
panel_h += sep_total + adj_h # adjacent systems
panel_h += pad # bottom padding
# ── Draw background ──────────────────────────────────────────────────────
var panel_pos := Vector2(sz.x - panel_w - POPUP_MARGIN, POPUP_MARGIN)
var x: float = panel_pos.x + pad
var x_right: float = panel_pos.x + panel_w - pad
var y: float = panel_pos.y + pad + POPUP_LINE_H # baseline offset
var y: float = panel_pos.y + pad + line_h # first baseline
draw_rect(Rect2(panel_pos, Vector2(panel_w, panel_h)), COLOR_INFO_BG)
draw_rect(Rect2(panel_pos, Vector2(panel_w, panel_h)), sep_color, false, 1.0)
@@ -488,45 +491,46 @@ func _draw_info_panel(sz: Vector2) -> void:
# System name
draw_string(font, Vector2(x, y), sys_name,
HORIZONTAL_ALIGNMENT_LEFT, inner_w, 15, COLOR_TEXT)
y += POPUP_LINE_H
y += line_h
# System ID
draw_string(font, Vector2(x, y), node.get("system_id", ""),
HORIZONTAL_ALIGNMENT_LEFT, inner_w, 10, COLOR_TEXT_DIM)
y += POPUP_LINE_H
# Separator
draw_line(Vector2(x, y + 2.0), Vector2(x_right, y + 2.0), sep_color, 1.0)
y += sep_h
# Separator — space above from baseline, line, space below to next baseline
y += sep_above
draw_line(Vector2(x, y), Vector2(x_right, y), sep_color, 1.0)
y += sep_below
# Star type + hop
draw_string(font, Vector2(x, y), stat_line_1,
HORIZONTAL_ALIGNMENT_LEFT, inner_w, 11, COLOR_TEXT_DIM)
y += POPUP_LINE_H
y += line_h
# Corridor
draw_string(font, Vector2(x, y), sector_str + " corridor",
HORIZONTAL_ALIGNMENT_LEFT, inner_w, 11, sector_color)
y += POPUP_LINE_H
y += line_h
# Bodies + population
draw_string(font, Vector2(x, y), stat_line_3,
HORIZONTAL_ALIGNMENT_LEFT, inner_w, 11, COLOR_TEXT_DIM)
y += POPUP_LINE_H
# GTTR excerpt
if not gttr.is_empty():
draw_line(Vector2(x, y + 2.0), Vector2(x_right, y + 2.0), sep_color, 1.0)
y += sep_h
y += sep_above
draw_line(Vector2(x, y), Vector2(x_right, y), sep_color, 1.0)
y += sep_below
draw_multiline_string(font, Vector2(x, y), gttr,
HORIZONTAL_ALIGNMENT_LEFT, inner_w, POPUP_GTTR_FONT_SIZE,
POPUP_GTTR_MAX_LINES,
Color(COLOR_TEXT.r, COLOR_TEXT.g, COLOR_TEXT.b, 0.75))
y += gttr_h
y += gttr_h - line_h # multiline size includes first baseline
# Adjacent systems
draw_line(Vector2(x, y + 2.0), Vector2(x_right, y + 2.0), sep_color, 1.0)
y += sep_h
y += sep_above
draw_line(Vector2(x, y), Vector2(x_right, y), sep_color, 1.0)
y += sep_below
if adj_line.is_empty():
draw_string(font, Vector2(x, y), "No gate connections",
HORIZONTAL_ALIGNMENT_LEFT, inner_w, 10, COLOR_TEXT_DIM)