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);
    }
Esempio n. 2
0
 public HighlightTilesCommand(int _range, Tile _startTile, Action <Tile> _ActionForTiles, EnumHolder.EntityType typeToFind)
 {
     range          = _range;
     startTile      = _startTile;
     actionForTiles = _ActionForTiles;
     _typeToFind    = typeToFind;
 }
Esempio n. 3
0
 public Tile GetTileWithType(EnumHolder.EntityType entityType)
 {
     foreach (Tile[] tileArray in TilesOnMap)
     {
         foreach (Tile t in tileArray)
         {
             if (t.EntityTypeOnTile == entityType)
             {
                 return(t);
             }
         }
     }
     return(null);
 }
Esempio n. 4
0
    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));
 }