using System; using System.Collections.Generic; namespace AGVNavigationCore.PathFinding { /// /// 경로 계산 결과 /// public class PathResult { /// /// 경로 찾기 성공 여부 /// public bool Success { get; set; } /// /// 경로 노드 ID 목록 (시작 → 목적지 순서) /// public List Path { get; set; } /// /// 총 거리 /// public float TotalDistance { get; set; } /// /// 계산 소요 시간 (밀리초) /// public long CalculationTimeMs { get; set; } /// /// 탐색한 노드 수 /// public int ExploredNodeCount { get; set; } /// /// 오류 메시지 (실패시) /// public string ErrorMessage { get; set; } /// /// 기본 생성자 /// public PathResult() { Success = false; Path = new List(); TotalDistance = 0; CalculationTimeMs = 0; ExploredNodeCount = 0; ErrorMessage = string.Empty; } /// /// 성공 결과 생성 /// /// 경로 /// 총 거리 /// 계산 시간 /// 탐색 노드 수 /// 성공 결과 public static PathResult CreateSuccess(List path, float totalDistance, long calculationTimeMs, int exploredNodeCount) { return new PathResult { Success = true, Path = new List(path), TotalDistance = totalDistance, CalculationTimeMs = calculationTimeMs, ExploredNodeCount = exploredNodeCount }; } /// /// 실패 결과 생성 /// /// 오류 메시지 /// 계산 시간 /// 탐색 노드 수 /// 실패 결과 public static PathResult CreateFailure(string errorMessage, long calculationTimeMs, int exploredNodeCount) { return new PathResult { Success = false, ErrorMessage = errorMessage, CalculationTimeMs = calculationTimeMs, ExploredNodeCount = exploredNodeCount }; } /// /// 문자열 표현 /// public override string ToString() { if (Success) { return $"Success: {Path.Count} nodes, {TotalDistance:F1}px, {CalculationTimeMs}ms"; } else { return $"Failed: {ErrorMessage}, {CalculationTimeMs}ms"; } } } }