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); }
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); }