Example #1
0
    private List <GameTile> ReturnFloorTouchingWallsAroundTile(GameTile tile)
    {
        //retruns walls around a given tile, will only add tiles that aren't marked and are valid neighbour's of floor tiles
        List <GameTile> allWallsList   = new List <GameTile>();
        List <GameTile> validWallsList = new List <GameTile>();

        tile.SetIsMarked(true);
        List <GameTile> tileNeighbours = board.GetTileNeighbours(tile);

        foreach (GameTile q in tileNeighbours)
        {
            if (q.IsWall() && !q.IsMarked())
            {
                q.SetIsMarked(true);
                allWallsList.Add(q);
            }
        }
        foreach (GameTile q in allWallsList)
        {
            List <GameTile> cardinalNeighbours = board.GetTileCardinalNeighbours(q);
            foreach (GameTile neighbour in cardinalNeighbours)
            {
                if (neighbour.OpenForPlacement())
                {
                    validWallsList.Add(q);
                    break;
                }
            }
        }
        return(validWallsList);
    }
Example #2
0
    private List <GameTile> GetTilesWithinRangeOfWater()
    {
        //return a list of floor tiles that are within 3 tiles of a waters edge, this means these tiles are valid for spawning live grass
        int validRangeFromWater = 3;         //TODO: public facing

        board.UnMarkAllTiles();
        List <GameTile> waterTiles      = new List <GameTile>();
        List <GameTile> edgeWaterTiles  = new List <GameTile>();
        List <GameTile> validFloorTiles = new List <GameTile>();

        for (int x = 0; x < board.GetCols(); x++)
        {
            for (int y = 0; y < board.GetRows(); y++)
            {
                if (board.GetGrid()[x][y].GetObject() != null && board.GetGrid()[x][y].GetObject().GetComponent <WaterTile>() != null)
                {
                    waterTiles.Add(board.GetGrid()[x][y]);
                }
            }
        }
        foreach (GameTile tile in waterTiles)
        {
            List <GameTile> possibleFloorTiles = board.GetTileCardinalNeighbours(tile);
            foreach (GameTile possibleFloortile in possibleFloorTiles)
            {
                if (possibleFloortile.OpenForPlacement())
                {
                    edgeWaterTiles.Add(possibleFloortile);
                }
            }
        }
        foreach (GameTile tile in edgeWaterTiles)
        {
            List <GameTile> possibleValidFloorTiles = board.GetAllTilesInRange(tile, validRangeFromWater);
            foreach (GameTile possibleValidFloorTile in possibleValidFloorTiles)
            {
                if (possibleValidFloorTile.OpenForPlacement())
                {
                    validFloorTiles.Add(possibleValidFloorTile);
                }
            }
        }
        board.UnMarkAllTiles();
        return(validFloorTiles);
    }