示例#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);
    }
示例#2
0
    private List <GameTile> SpawnGrassAroundRootTiles(List <GameTile> roots, float checkForGrassSpawn)
    {
        //Changes the textures of tiles around the root node to create patches of grass
        List <GameTile> newGrassTiles = new List <GameTile>();

        foreach (GameTile root in roots)
        {
            List <GameTile> rootNeighbours = board.GetTileNeighbours(root);
            foreach (GameTile possibleGrassTiles in rootNeighbours)
            {
                float testForGrassSpawn = Random.Range(1, 101);
                if (testForGrassSpawn <= checkForGrassSpawn && possibleGrassTiles.OpenForPlacement() && !possibleGrassTiles.IsMarked())
                {
                    newGrassTiles.Add(possibleGrassTiles);
                    possibleGrassTiles.SetIsMarked(true);
                }
            }
        }
        ChangeToGrassSprite(newGrassTiles);
        return(newGrassTiles);
    }