void CheckForOpenTile(GameObject Tile) // check if the Tile called is a viable Tile to move to { OpenTiles.Add(Tile); //add Tile to list if (ClosedTiles.Count > 0) { foreach (GameObject item in ClosedTiles) { if (item == Tile) { if (OpenTiles.Contains(Tile)) { OpenTiles.Remove(Tile); } } } } if (Tile.transform.childCount > 0) //does Tile have children? { foreach (Transform item in Tile.transform) { if (item.name == "Tower") //foreach child is child tower? ie Tile is built upon { if (OpenTiles.Contains(Tile)) { OpenTiles.Remove(Tile);//Tile is invalid to move to } if (!ClosedTiles.Contains(Tile)) { ClosedTiles.Add(Tile); } } } } }