Add minimap hover details

This commit is contained in:
2026-06-20 01:14:32 +09:00
parent 53dd9aa9b0
commit dee3d9813b
3 changed files with 141 additions and 1 deletions

View File

@@ -228,6 +228,11 @@ func _check_minimap_navigation_contract(failures: Array[String]) -> void:
"_handle_minimap_mouse_motion",
"_is_minimap_visible",
"_map_has_scrollable_area",
"_minimap_cell_for_screen_position",
"_minimap_hover_badge",
"_minimap_hover_badge_rect",
"_minimap_hover_badge_lines",
"_draw_minimap_hover_badge",
"_minimap_marker_rect",
"_minimap_objective_marker_fill_color",
"_minimap_event_marker_fill_color",
@@ -254,6 +259,22 @@ func _check_minimap_navigation_contract(failures: Array[String]) -> void:
var first_cell_rect: Rect2 = scene._minimap_cell_rect(Vector2i(0, 0))
if first_cell_rect.size.x <= 0.0 or first_cell_rect.size.y <= 0.0:
failures.append("minimap cells should have visible area: %s" % str(first_cell_rect))
var first_hover_position := first_cell_rect.get_center()
if scene._minimap_cell_for_screen_position(first_hover_position) != Vector2i(0, 0):
failures.append("minimap hover position should resolve to the matching map cell")
var first_hover_badge: Dictionary = scene._minimap_hover_badge(first_hover_position)
if first_hover_badge.is_empty():
failures.append("minimap hover should expose a compact battlefield badge")
else:
var first_hover_lines: Array = first_hover_badge.get("lines", [])
var first_hover_text := "\n".join(first_hover_lines)
if not first_hover_text.contains("클릭/드래그"):
failures.append("minimap hover should explain click-drag navigation: %s" % first_hover_text)
var first_hover_rect: Rect2 = first_hover_badge.get("rect", Rect2())
if first_hover_rect.size.x <= 0.0 or first_hover_rect.size.y <= 0.0 or not view_rect.encloses(first_hover_rect):
failures.append("minimap hover badge should stay inside the visible map view: %s within %s" % [str(first_hover_rect), str(view_rect)])
if not scene._minimap_hover_badge(map_rect.position - Vector2(4.0, 4.0)).is_empty():
failures.append("minimap hover should stay hidden outside the map body")
var objective_cells: Array[Vector2i] = scene.state.get_objective_cells()
if objective_cells.is_empty():
failures.append("opening map should expose minimap objective markers")
@@ -264,6 +285,10 @@ func _check_minimap_navigation_contract(failures: Array[String]) -> void:
failures.append("minimap objective marker should stay inside map body: %s within %s" % [str(objective_marker_rect), str(map_rect)])
if scene._minimap_objective_marker_fill_color().a < 0.85:
failures.append("minimap objective marker should be prominent")
var objective_hover: Dictionary = scene._minimap_hover_badge(scene._minimap_cell_rect(objective_cells[0]).get_center())
var objective_hover_text := "\n".join(Array(objective_hover.get("lines", [])))
if objective_hover.is_empty() or not objective_hover_text.contains("목표"):
failures.append("minimap objective hover should identify objective cells: %s" % objective_hover_text)
var has_event_marker := false
for marker in scene.state.get_event_markers():
var cells = marker.get("cells", [])