Exemple #1
0
        private GameObject TryGenerateHouse(Main main)
        {
            int         width  = UnityEngine.Random.Range(minHouseWidth, maxHouseWidth);
            int         height = UnityEngine.Random.Range(minHouseHeight, maxHouseHeight) + 1;      //+1 for roof
            Point <int> point  = main.Tiles.GetFreeRandomPoint(width, height, maxInvisibleHorizontal, maxInvisibleVertical, emptyBorder);

            if (point == null)
            {
                Debug.Log("Cannot find place for house (" + width + ", " + height + ")");
                return(null);
            }

            GameObject house = new GameObject("House (" + width + ", " + height + ")");

            {
                int sortOrder = LocationSortOrders.GetLocationObjectSortOrder(point.y * main.TileSize);

                GameObject walls = TiledSprite.Create(wallTiles);
                walls.GetComponent <TiledSprite> ()
                .SetTiles(width, height - 1)
                .SetTileSize(main.TileSize, main.TileSize)
                .SetSortOrder(sortOrder);
                walls.transform.SetParent(house.transform, true);

                GameObject roof = TiledSprite.Create(roofTiles);
                roof.GetComponent <TiledSprite> ()
                .SetTiles(width, 1)
                .SetTileSize(main.TileSize, main.TileSize)
                .SetSortOrder(sortOrder);
                roof.transform.SetParent(house.transform, true);
                roof.transform.localPosition = new Vector3(0, (height - 1) * main.TileSize, 0);

                GameObject shadow = TiledSprite.Create(shadowTiles);
                shadow.GetComponent <TiledSprite> ()
                .SetTiles(width, 1)
                .SetTileSize(main.TileSize, main.TileSize)
                .SetSortOrder(sortOrder + 1);
                shadow.transform.SetParent(house.transform, true);
                shadow.transform.localPosition = new Vector3(0, (height - 2) * main.TileSize, 0);

                GameObject grass = TiledSprite.Create(groundToWallTiles);
                grass.GetComponent <TiledSprite> ()
                .SetTiles(width, 1)
                .SetTileSize(main.TileSize, main.TileSize)
                .SetSortOrder(sortOrder + 1);
                grass.transform.SetParent(house.transform, true);
            }

            main.Tiles.SetRect(point.x, point.y, width, height, TileType.House, true);
            house.transform.localPosition = new Vector3(point.x * main.TileSize, point.y * main.TileSize);
            return(house);
        }
        public GameObject CreateGrass(Main main)
        {
            GameObject grass = TiledSprite.Create(tiles);

            grass.name = "Grass";

            grass.GetComponent <TiledSprite> ()
            .SetTiles(main.Tiles.Width, main.Tiles.Height)
            .SetTileSize(main.TileSize, main.TileSize)
            .SetSortOrder(LocationSortOrders.Grass)
            .ForceUpdate();

            return(grass);
        }
Exemple #3
0
        private GameObject CreateRoad(int startX, int startY, int roadWidth, bool vertical, Main main)
        {
            GameObject result = TiledSprite.Create(tiles);

            result.name = "Road (" + (vertical ? "vertical" : "horizontal") + " width " + roadWidth + ")";

            result.GetComponent <TiledSprite> ()
            .SetTiles(vertical ? roadWidth : main.Tiles.Width, vertical ? main.Tiles.Height : roadWidth)
            .SetTileSize(main.TileSize, main.TileSize)
            .SetSortOrder(LocationSortOrders.Roads)
            .ForceUpdate();

            result.transform.localPosition = new Vector3(startX * main.TileSize, startY * main.TileSize, 0);
            return(result);
        }