public void ProcessData(Controllers.HomeController.GData d) { TargetNode = Nodes[d.target.x, d.target.y]; foreach (var p in d.blob) { Blob.Add(Nodes[p.x, p.y]); } foreach (var p in d.blocked) { ToggleBlocked(p.x, p.y); } StringBuilder sb = new StringBuilder("Grid Setup Is: \n" + "Target: " + TargetNode.CoordX + ", " + TargetNode.CoordY + " \n"); sb.Append("Blob: "); foreach (var p in Blob) { sb.Append(p.CoordX + ", " + p.CoordY + " - "); } sb.Append("\nBlocked: "); foreach (var p in d.blocked) { sb.Append(p.x + ", " + p.y + " - "); } Debug.WriteLine(sb.ToString()); Debug.WriteLine("Begining PathFind"); }
public List <GridSquare> FindPath(Controllers.HomeController.GData d) { ProcessData(d); GridSquare next; List <GridSquare> path = new List <GridSquare>(); List <GridSquare> neighbors; Debug.WriteLine("Target is: " + TargetNode.CoordX + ", " + TargetNode.CoordY); GridSquare current = Nodes[TargetNode.CoordX, TargetNode.CoordY]; while (!IsInBlob(current)) { neighbors = current.VisitNeighbors(Width, Height, this); ProcessNeighbors(neighbors, current); next = Open.Dequeue(); Closed.Add(Nodes[current.CoordX, current.CoordY]); current = Nodes[next.CoordX, next.CoordY]; } path = BacktrackFrom(current); return(path); }