public Tile FindClosestTileOfType(Tile startTile, EnumHolder.EntityType entityTypeToFind) { List <Tile> openSet = new List <Tile>(maxSize); HashSet <Tile> closeSet = new HashSet <Tile>(); openSet.Add(startTile); while (openSet.Count > 0) { Tile currentTile = openSet[0]; closeSet.Add(currentTile); if (currentTile.EntityTypeOnTile == entityTypeToFind) { return(currentTile); } foreach (Tile neighbor in currentTile.neighbors) { if (!closeSet.Contains(neighbor)) { if (!openSet.Contains(neighbor)) { openSet.Add(neighbor); } } } openSet.Remove(currentTile); } return(null); }
public HighlightTilesCommand(int _range, Tile _startTile, Action <Tile> _ActionForTiles, EnumHolder.EntityType typeToFind) { range = _range; startTile = _startTile; actionForTiles = _ActionForTiles; _typeToFind = typeToFind; }
public Tile GetTileWithType(EnumHolder.EntityType entityType) { foreach (Tile[] tileArray in TilesOnMap) { foreach (Tile t in tileArray) { if (t.EntityTypeOnTile == entityType) { return(t); } } } return(null); }
public void ColorAllAdjacent(int numToHilight, Action <Tile> actionForTile, EnumHolder.EntityType entityToFind) { if (numToHilight >= 0) { numToHilight--; if (entityToFind.HasFlag(EntityTypeOnTile)) { backgroundTile.color = ActiveColor; onClick = actionForTile; } for (int i = 0; i < neighbors.Count; i++) { if (entityToFind.HasFlag(neighbors[i].EntityTypeOnTile)) { neighbors[i].ColorAllAdjacent(numToHilight, actionForTile, entityToFind); } } } }
public static Tile FindClosestEntityOfType(Tile StartTile, EnumHolder.EntityType entityToFind) { return(instance.pathfinding.FindClosestTileOfType(StartTile, entityToFind)); }