Show objectives on minimap

This commit is contained in:
2026-06-19 20:32:59 +09:00
parent 761b7f729e
commit ce2c1889bf
3 changed files with 89 additions and 2 deletions

View File

@@ -227,7 +227,12 @@ func _check_minimap_navigation_contract(failures: Array[String]) -> void:
"_handle_minimap_mouse_button",
"_handle_minimap_mouse_motion",
"_is_minimap_visible",
"_map_has_scrollable_area"
"_map_has_scrollable_area",
"_minimap_marker_rect",
"_minimap_objective_marker_fill_color",
"_minimap_event_marker_fill_color",
"_draw_minimap_objective_markers",
"_draw_minimap_event_markers"
]:
if not scene.has_method(method_name):
failures.append("missing minimap helper: %s" % method_name)
@@ -249,6 +254,30 @@ 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 objective_cells: Array[Vector2i] = scene.state.get_objective_cells()
if objective_cells.is_empty():
failures.append("opening map should expose minimap objective markers")
else:
for objective_cell in objective_cells:
var objective_marker_rect: Rect2 = scene._minimap_marker_rect(objective_cell, 1.36, 5.8, 9.0)
if not map_rect.encloses(objective_marker_rect):
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 has_event_marker := false
for marker in scene.state.get_event_markers():
var cells = marker.get("cells", [])
if typeof(cells) != TYPE_ARRAY or cells.is_empty():
continue
has_event_marker = true
for event_cell in cells:
var event_marker_rect: Rect2 = scene._minimap_marker_rect(event_cell, 1.05, 4.8, 7.0)
if not map_rect.encloses(event_marker_rect):
failures.append("minimap event marker should stay inside map body: %s within %s" % [str(event_marker_rect), str(map_rect)])
if scene._minimap_event_marker_fill_color(str(marker.get("kind", "event"))).a < 0.85:
failures.append("minimap event marker should be visible")
if not has_event_marker:
failures.append("opening map should expose minimap side-event markers")
var min_offset: Vector2 = scene._clamped_board_scroll_offset(Vector2(-9999.0, -9999.0))
var top_left_offset: Vector2 = scene._board_scroll_offset_for_minimap_position(map_rect.position)