//get list of possible move directions private List <Vector3> getValidMoves(bool diag) { List <Vector3> possible = new List <Vector3> { new Vector3(1, 0), new Vector3(-1, 0), new Vector3(0, 1), new Vector3(0, -1) }; if (diag) { possible.Add(new Vector3(1, 1)); possible.Add(new Vector3(-1, 1)); possible.Add(new Vector3(-1, 1)); possible.Add(new Vector3(-1, -1)); } List <Vector3> result = new List <Vector3>(); Vector3 pos = transform.position; //filter based on bounds and legal tiles foreach (Vector3 v3 in possible) { worldTile tile = world.getTileInfo((int)(v3.x + pos.x), (int)(v3.y + pos.z)); if (tile != null && legalTiles.Contains(tile.tileName)) { result.Add(v3); } } return(result); }
private void Update() { //testing, set tileHeight to 1 if (Input.GetMouseButton(0)) { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hit; Physics.Raycast(ray, out hit); if (hit.collider != null && hit.collider.tag.Equals("Tile")) { worldTile hitTile = hit.collider.GetComponent <worldTile>(); Vector3 pos = new Vector3(hitTile.x, hitTile.y); switch (mode) { case Mode.Single: editTile((int)pos.x, (int)pos.y, drawHeight); break; case Mode.Circle: multEdit((int)pos.x, (int)pos.y, drawHeight, size); break; default: editTile((int)pos.x, (int)pos.y, drawHeight); break; } } } }
private void LayRoads(Chunk tempChunk) { worldTile roadTile = new worldTile(); roadTile.graphics = new Tile(); roadTile.graphics.tAtlas = wData.tAtlas; roadTile.graphics.TexID = (int)WorldTexID.sand4; roadTile.isCollideable = false; roadTile.isContainer = false; roadTile.type = "sand"; roadTile.isRoad = true; for (int i = 0; i < wData.Villages.Count; i++) { Debug.Text("Village @ [" + wData.Villages[i].Loc.X + "," + wData.Villages[i].Loc.Y + "] [" + wData.Villages[i].ConnectedVillageLoc.X + "," + wData.Villages[i].ConnectedVillageLoc.Y + "]"); if (wData.Villages[i].roadChunks.Contains(tempChunk.key)) { List <Point> roadPoints = Ray.pointsIntersectingRect(wData.Villages[i].VillageToVillage, tempChunk.chunkRect); for (int j = 0; j < roadPoints.Count; j++) { Point realPoint = worldPosToChunkPos(roadPoints[j]); tempChunk.backgroundTiles[realPoint.X, realPoint.Y] = roadTile; } } } }
//set all tiles in a radius of x,y to a new height public void multEdit(int x, int y, float newHeight, int radius) { Vector3 pos = new Vector3(x, 0, y); Collider[] toEdit = Physics.OverlapSphere(pos, radius, LayerMask.GetMask("Tile")); foreach (Collider col in toEdit) { worldTile tile = col.gameObject.GetComponent <worldTile>(); worldGen.setValue(tile.x, tile.y, newHeight); worldGen.tiles[tile.x, tile.y].GetComponent <worldTile>().replaceTile(newHeight); } }
//replaces this tile with the appropriate tile for a new height public void replaceTile(float newHeight) { worldTile tileForHeight = worldGen.getTileForHeight(worldGen.getValue(x, y)); GameObject replacement = Instantiate(tileForHeight, transform.position, transform.rotation, worldGen.transform).gameObject; worldTile tile = replacement.GetComponent <worldTile>(); tile.worldGen = worldGen; tile.x = x; tile.y = y; Debug.Log(tile.x + "," + tile.y); worldGen.tiles[x, y] = replacement; Destroy(gameObject); }
private void Update() { //test for building placement if (Input.GetMouseButtonDown(0)) { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hit; Physics.Raycast(ray, out hit); if (hit.collider != null && hit.collider.tag.Equals("Tile")) { worldTile hitTile = hit.collider.GetComponent <worldTile>(); placeUnit(testObject, hitTile.x, hitTile.y, true); } } }
public static Tile worldTileToTile(worldTile tile) { return(tile.graphics); }
private Chunk GenerateDungeon(DungeonData dData) { Random rng = new Random(dData.seed); Point chunk = new Point(dData.DoorChunkLoc.X / 100, dData.DoorChunkLoc.Y / 100); int randomFillPercent = 50; int iterations = 5; int xSize = rng.Next(20, 80); Chunk tempChunk = new Chunk(xSize, chunk.X, chunk.Y); worldTile wall = new worldTile(); wall.graphics = new Tile(); wall.graphics.tAtlas = wData.tAtlas; wall.graphics.TexID = (int)WorldTexID.wall; wall.isCollideable = true; wall.isContainer = false; wall.isRoad = false; wall.type = "wall"; worldTile air = new worldTile(); air.graphics = new Tile(); air.graphics.tAtlas = wData.tAtlas; air.graphics.TexID = (int)WorldTexID.air; air.isCollideable = false; air.isContainer = false; air.isRoad = false; air.type = "air"; for (int x = 0; x < xSize; x++) { for (int y = 0; y < xSize; y++) { if (rng.Next(100) > randomFillPercent - 1) { tempChunk.backgroundTiles[x, y] = wall; } else { tempChunk.backgroundTiles[x, y] = air; } } } for (int i = 0; i < iterations; i++) { for (int x = 0; x < xSize; x++) { for (int y = 0; y < xSize; y++) { int neighbors = getNumberNeighbors(tempChunk, x, y, "wall", xSize); if (tempChunk.backgroundTiles[x, y].type == "wall") { if (neighbors >= 4) { tempChunk.backgroundTiles[x, y] = wall; } } else { if (neighbors >= 5) { tempChunk.backgroundTiles[x, y] = wall; } } } } } return(tempChunk); }
private List <nineSplice> createNineSpliceTemplates() { List <nineSplice> temp = new List <nineSplice>(); worldTile waterTile = new worldTile(); waterTile.graphics.tAtlas = wData.tAtlas; waterTile.graphics.TexID = (int)WorldTexID.water0; waterTile.type = "water"; waterTile.isCollideable = true; waterTile.isContainer = false; worldTile grassTile = new worldTile(); grassTile.graphics.tAtlas = wData.tAtlas; grassTile.graphics.TexID = (int)WorldTexID.grass0; grassTile.type = "grass"; grassTile.isCollideable = false; grassTile.isContainer = false; worldTile sandTile = new worldTile(); sandTile.graphics.tAtlas = wData.tAtlas; sandTile.graphics.TexID = (int)WorldTexID.sand0; sandTile.type = "sand"; sandTile.isCollideable = false; sandTile.isContainer = false; nineSplice n0 = new nineSplice(); n0.Active_1 = true; n0.tile_1 = waterTile; n0.Active_4 = true; n0.tile_4 = grassTile; n0.CenterTile = grassTile; n0.CenterTile.graphics.TexID = (int)WorldTexID.oceanToGrassTopMid; temp.Add(n0); nineSplice n1 = new nineSplice(); n1.Active_1 = true; n1.tile_1 = waterTile; n1.Active_4 = true; n1.tile_4 = sandTile; n1.CenterTile = sandTile; n1.CenterTile.graphics.TexID = (int)WorldTexID.beachTopMid; temp.Add(n1); nineSplice n5 = new nineSplice(); n5.Active_3 = true; n5.tile_3 = waterTile; n5.Active_4 = true; n5.tile_4 = sandTile; n5.CenterTile = sandTile; n5.CenterTile.graphics.TexID = (int)WorldTexID.beachMidLeft; temp.Add(n5); nineSplice n7 = new nineSplice(); n7.Active_5 = true; n7.tile_5 = waterTile; n7.Active_4 = true; n7.tile_4 = sandTile; n7.CenterTile = sandTile; n7.CenterTile.graphics.TexID = (int)WorldTexID.beachMidRight; temp.Add(n7); nineSplice n8 = new nineSplice(); n8.Active_4 = true; n8.tile_4 = sandTile; n8.Active_7 = true; n8.tile_7 = waterTile; n8.CenterTile = sandTile; n8.CenterTile.graphics.TexID = (int)WorldTexID.beachBottomMid; temp.Add(n8); nineSplice n2 = new nineSplice(); n2.Active_1 = true; n2.tile_1 = waterTile; n2.Active_3 = true; n2.tile_3 = waterTile; n2.Active_4 = true; n2.tile_4 = sandTile; n2.CenterTile = sandTile; n2.CenterTile.graphics.TexID = (int)WorldTexID.beachTopLeft; temp.Add(n2); nineSplice n3 = new nineSplice(); n3.Active_1 = true; n3.tile_1 = waterTile; n3.Active_4 = true; n3.tile_4 = sandTile; n3.Active_5 = true; n3.tile_5 = waterTile; n3.CenterTile = sandTile; n3.CenterTile.graphics.TexID = (int)WorldTexID.beachTopRight; temp.Add(n3); nineSplice n9 = new nineSplice(); n9.Active_3 = true; n9.tile_3 = waterTile; n9.Active_4 = true; n9.tile_4 = sandTile; n9.Active_7 = true; n9.tile_7 = waterTile; n9.CenterTile = sandTile; n9.CenterTile.graphics.TexID = (int)WorldTexID.beachBottomLeft; temp.Add(n9); nineSplice n10 = new nineSplice(); n10.Active_5 = true; n10.tile_5 = waterTile; n10.Active_4 = true; n10.tile_4 = sandTile; n10.Active_7 = true; n10.tile_7 = waterTile; n10.CenterTile = sandTile; n10.CenterTile.graphics.TexID = (int)WorldTexID.beachBottomRight; temp.Add(n10); nineSplice n4 = new nineSplice(); n4.Active_0 = true; n4.tile_0 = waterTile; n4.Active_1 = true; n4.tile_1 = sandTile; n4.Active_3 = true; n4.tile_3 = sandTile; n4.Active_4 = true; n4.tile_4 = sandTile; n4.CenterTile = sandTile; n4.CenterTile.graphics.TexID = (int)WorldTexID.beachInteriorBottomRight; temp.Add(n4); nineSplice n6 = new nineSplice(); n6.Active_1 = true; n6.tile_1 = sandTile; n6.Active_5 = true; n6.tile_5 = sandTile; n6.Active_4 = true; n6.tile_4 = sandTile; n6.Active_2 = true; n6.tile_2 = waterTile; n6.CenterTile = sandTile; n6.CenterTile.graphics.TexID = (int)WorldTexID.beachInteriorBottomLeft; temp.Add(n6); nineSplice n11 = new nineSplice(); n11.Active_5 = true; n11.tile_5 = sandTile; n11.Active_7 = true; n11.tile_7 = sandTile; n11.Active_4 = true; n11.tile_4 = sandTile; n11.Active_8 = true; n11.tile_8 = waterTile; n11.CenterTile = sandTile; n11.CenterTile.graphics.TexID = (int)WorldTexID.beachInteriorTopLeft; temp.Add(n11); nineSplice n12 = new nineSplice(); n12.Active_3 = true; n12.tile_3 = sandTile; n12.Active_7 = true; n12.tile_7 = sandTile; n12.Active_4 = true; n12.tile_4 = sandTile; n12.Active_6 = true; n12.tile_6 = waterTile; n12.CenterTile = sandTile; n12.CenterTile.graphics.TexID = (int)WorldTexID.beachInteriorTopRight; temp.Add(n12); nineSplice n13 = new nineSplice(); n13.Active_4 = true; n13.tile_4 = grassTile; n13.Active_7 = true; n13.tile_7 = sandTile; n13.CenterTile = grassTile; n13.CenterTile.graphics.TexID = (int)WorldTexID.grassToSandTopMid; temp.Add(n13); nineSplice n14 = new nineSplice(); n14.Active_4 = true; n14.tile_4 = grassTile; n14.Active_5 = true; n14.tile_5 = sandTile; n14.CenterTile = grassTile; n14.CenterTile.graphics.TexID = (int)WorldTexID.grassToSandMidLeft; temp.Add(n14); nineSplice n15 = new nineSplice(); n15.Active_4 = true; n15.tile_4 = grassTile; n15.Active_3 = true; n15.tile_3 = sandTile; n15.CenterTile = grassTile; n15.CenterTile.graphics.TexID = (int)WorldTexID.grassToSandMidRight; temp.Add(n15); nineSplice n16 = new nineSplice(); n16.Active_4 = true; n16.tile_4 = grassTile; n16.Active_1 = true; n16.tile_1 = sandTile; n16.CenterTile = grassTile; n16.CenterTile.graphics.TexID = (int)WorldTexID.grassToSandBottomMid; temp.Add(n16); nineSplice n17 = new nineSplice(); n17.Active_4 = true; n17.tile_4 = grassTile; n17.Active_5 = true; n17.tile_5 = grassTile; n17.Active_7 = true; n17.tile_7 = grassTile; n17.Active_8 = true; n17.tile_8 = sandTile; n17.CenterTile = grassTile; n17.CenterTile.graphics.TexID = (int)WorldTexID.grassToSandTopLeft; temp.Add(n17); nineSplice n18 = new nineSplice(); n18.Active_4 = true; n18.tile_4 = grassTile; n18.Active_3 = true; n18.tile_3 = grassTile; n18.Active_7 = true; n18.tile_7 = grassTile; n18.Active_6 = true; n18.tile_6 = sandTile; n18.CenterTile = grassTile; n18.CenterTile.graphics.TexID = (int)WorldTexID.grassToSandTopRight; temp.Add(n18); nineSplice n19 = new nineSplice(); n19.Active_4 = true; n19.tile_4 = grassTile; n19.Active_1 = true; n19.tile_1 = grassTile; n19.Active_5 = true; n19.tile_5 = grassTile; n19.Active_2 = true; n19.tile_2 = sandTile; n19.CenterTile = grassTile; n19.CenterTile.graphics.TexID = (int)WorldTexID.grassToSandBottomLeft; temp.Add(n19); nineSplice n20 = new nineSplice(); n20.Active_4 = true; n20.tile_4 = grassTile; n20.Active_1 = true; n20.tile_1 = grassTile; n20.Active_3 = true; n20.tile_3 = grassTile; n20.Active_0 = true; n20.tile_0 = sandTile; n20.CenterTile = grassTile; n20.CenterTile.graphics.TexID = (int)WorldTexID.grassToSandBottomRight; temp.Add(n20); nineSplice n21 = new nineSplice(); n21.Active_4 = true; n21.tile_4 = grassTile; n21.Active_5 = true; n21.tile_5 = grassTile; n21.Active_7 = true; n21.tile_7 = grassTile; n21.Active_1 = true; n21.tile_1 = sandTile; n21.Active_3 = true; n21.tile_3 = sandTile; n21.CenterTile = grassTile; n21.CenterTile.graphics.TexID = (int)WorldTexID.beachToGrassTopLeft; temp.Add(n21); nineSplice n22 = new nineSplice(); n22.Active_4 = true; n22.tile_4 = grassTile; n22.Active_3 = true; n22.tile_3 = grassTile; n22.Active_7 = true; n22.tile_7 = grassTile; n22.Active_1 = true; n22.tile_1 = sandTile; n22.Active_5 = true; n22.tile_5 = sandTile; n22.CenterTile = grassTile; n22.CenterTile.graphics.TexID = (int)WorldTexID.beachToGrassTopRight; temp.Add(n22); nineSplice n23 = new nineSplice(); n23.Active_4 = true; n23.tile_4 = grassTile; n23.Active_1 = true; n23.tile_1 = grassTile; n23.Active_5 = true; n23.tile_5 = grassTile; n23.Active_3 = true; n23.tile_3 = sandTile; n23.Active_7 = true; n23.tile_7 = sandTile; n23.CenterTile = grassTile; n23.CenterTile.graphics.TexID = (int)WorldTexID.beachToGrassBottomLeft; temp.Add(n23); nineSplice n24 = new nineSplice(); n24.Active_4 = true; n24.tile_4 = grassTile; n24.Active_1 = true; n24.tile_1 = grassTile; n24.Active_3 = true; n24.tile_3 = grassTile; n24.Active_5 = true; n24.tile_5 = sandTile; n24.Active_7 = true; n24.tile_7 = sandTile; n24.CenterTile = grassTile; n24.CenterTile.graphics.TexID = (int)WorldTexID.beachToGrassBottomRight; temp.Add(n24); return(temp); }