Show auto attack origins on the map

This commit is contained in:
2026-06-19 20:55:53 +09:00
parent 46df282eab
commit 5582a344a9
3 changed files with 72 additions and 1 deletions

View File

@@ -613,6 +613,26 @@ func _check_scene_auto_attack_safe_origin_and_counter_preview(failures: Array[St
failures.append("safe auto attack marker should expose no counter risk: %s" % str(safe_marker))
if str(safe_marker.get("kind", "")) != "advance":
failures.append("safe auto attack marker should use advance color: %s" % str(safe_marker))
var origin_marker_rect: Rect2 = scene._auto_attack_origin_marker_rect(safe_marker.get("origin", Vector2i.ZERO))
if not scene._rect_for_cell(Vector2i(3, 3)).encloses(origin_marker_rect):
failures.append("auto attack origin marker should fit inside the chosen origin cell: %s" % str(origin_marker_rect))
var route_points: PackedVector2Array = scene._auto_attack_route_points(safe_marker.get("origin", Vector2i.ZERO), safe_marker.get("cell", Vector2i.ZERO))
if route_points.size() != 2:
failures.append("auto attack route should expose two drawable points: %s" % str(route_points))
elif not scene._rect_for_cell(Vector2i(3, 3)).has_point(route_points[0]) or not scene._rect_for_cell(Vector2i(5, 3)).has_point(route_points[1]):
failures.append("auto attack route should connect the origin and target cells: %s" % str(route_points))
var far_route_points: PackedVector2Array = scene._auto_attack_route_points(Vector2i(-1, -1), safe_marker.get("cell", Vector2i.ZERO))
if not far_route_points.is_empty():
failures.append("auto attack route should not draw from invalid off-board origins: %s" % str(far_route_points))
scene.basic_attack_targeting = true
scene.attack_cells.clear()
scene.attack_cells.append(Vector2i(5, 3))
for marker in scene._target_selection_marker_entries():
if bool(marker.get("requires_move", false)):
failures.append("formal attack targeting should not show move+attack origin routes: %s" % str(marker))
scene.basic_attack_targeting = false
scene._refresh_ranges()
scene.hover_cell = Vector2i(5, 3)
var safe_badge := scene._target_preview_badge()