public virtual bool FollowPath(FloorPlan plan) { int currentIndex = Path.FindIndex(p => p.X == X && p.Y == Y); if (currentIndex < Path.Count - 1) { Location nextPoint = Path[currentIndex + 1]; var tile = plan.GetFloorTile(nextPoint); if (tile.Cost > 1) { AttackTile(tile); return(true); } else { OldPoint = Point; Point = nextPoint; return(true); } } else { return(false); } }
public static string Print(this FloorPlan floorPlan, List <Location> path = null) { if (path == null) { path = new List <Location>(); } var sb = new StringBuilder(); var maxRow = floorPlan.FloorTiles.Max(x => x.Y); var maxCol = floorPlan.FloorTiles.Max(x => x.X); for (int row = 0; row <= maxRow; row++) { for (int col = 0; col <= maxCol; col++) { if (floorPlan.IsAgentOnTile(col, row)) { sb.Append("@"); } else if (path.Contains(new Location(col, row))) { sb.Append(path.IndexOf(new Location(col, row)).ToLetter()); //sb.Append("="); } else { var tile = floorPlan.GetFloorTile(col, row); sb.Append(tile.Print()); } } sb.AppendLine(); } string output = sb.ToString(); return(output); }