class_name CameraController extends Camera2D


func apply_drag(delta: Vector2) -> void:
	var half_view: Vector2 = get_viewport_rect().size * 0.5 / zoom
	var min_pos := Vector2(limit_left, limit_top) + half_view
	var max_pos := Vector2(limit_right, limit_bottom) - half_view
	# Guard against maps smaller than the viewport (min > max)
	max_pos.x = max(min_pos.x, max_pos.x)
	max_pos.y = max(min_pos.y, max_pos.y)
	position = (position + delta / zoom).clamp(min_pos, max_pos)


func set_map_bounds(rect: Rect2) -> void:
	limit_left = int(rect.position.x)
	limit_top = int(rect.position.y)
	limit_right = int(rect.position.x + rect.size.x)
	limit_bottom = int(rect.position.y + rect.size.y)
