/** * <summary> * Generate grids * </summary> * * <param name="initialPoint"/> * <param name="finalPoint"/> * * <returns> * void * </returns> */ public void GenerateGrids(Vector3 initialPoint, Vector3 finalPoint) { for (float x = initialPoint.x; x < finalPoint.x; x++) { int roundedX = Mathf.RoundToInt(x); MapBehaviour.Tiles[roundedX] = new Dictionary <int, Tile>(); for (float z = finalPoint.z; z <= initialPoint.z; z++) { // Initializing key Tile tile = new Tile(); int roundedZ = Mathf.RoundToInt(z); tile.SetPosition(new Vector3(roundedX, 0, roundedZ)); MapBehaviour.Tiles[roundedX][roundedZ] = tile; } } }
/** * Set the tile instance * @return void */ public virtual void SetTile(Tile tile) { this.tile = tile; }
/** * Get the id based on its position * @return int id */ public virtual int GetID() { Vector3 position = this.tile.GetPosition(); int x = Mathf.RoundToInt(position.x); int z = Mathf.RoundToInt(position.z); Tile topLeftTile = MapGeneratorBehaviour.IsTileExists(x - 1, z + 1) ? MapGeneratorBehaviour.Tiles[x - 1][z + 1].GetComponent <TileBehaviour>().GetTile() : null; Tile topTile = MapGeneratorBehaviour.IsTileExists(x, z + 1) ? MapGeneratorBehaviour.Tiles[x][z + 1].GetComponent <TileBehaviour>().GetTile() : null; Tile topRightTile = MapGeneratorBehaviour.IsTileExists(x + 1, z + 1) ? MapGeneratorBehaviour.Tiles[x + 1][z + 1].GetComponent <TileBehaviour>().GetTile() : null; Tile leftTile = MapGeneratorBehaviour.IsTileExists(x - 1, z) ? MapGeneratorBehaviour.Tiles[x - 1][z].GetComponent <TileBehaviour>().GetTile() : null; Tile rightTile = MapGeneratorBehaviour.IsTileExists(x + 1, z) ? MapGeneratorBehaviour.Tiles[x + 1][z].GetComponent <TileBehaviour>().GetTile() : null; Tile bottomLeftTile = MapGeneratorBehaviour.IsTileExists(x - 1, z - 1) ? MapGeneratorBehaviour.Tiles[x - 1][z - 1].GetComponent <TileBehaviour>().GetTile() : null; Tile bottomTile = MapGeneratorBehaviour.IsTileExists(x, z - 1) ? MapGeneratorBehaviour.Tiles[x][z - 1].GetComponent <TileBehaviour>().GetTile() : null; Tile bottomRightTile = MapGeneratorBehaviour.IsTileExists(x + 1, z - 1) ? MapGeneratorBehaviour.Tiles[x + 1][z - 1].GetComponent <TileBehaviour>().GetTile() : null; // 8-bit binary Char[] binary = new char[8]; // check top left if (topLeftTile != null && topLeftTile.GetType() == TileType.Water) { binary[7] = '1'; } else { binary[7] = '0'; } // check top tile if (topTile != null && topTile.GetType() == TileType.Water) { binary[6] = '1'; } else { binary[6] = '0'; } // check top tile if (topRightTile != null && topRightTile.GetType() == TileType.Water) { binary[5] = '1'; } else { binary[5] = '0'; } // check left tile if (leftTile != null && leftTile.GetType() == TileType.Water) { binary[4] = '1'; } else { binary[4] = '0'; } // check right tile if (rightTile != null && rightTile.GetType() == TileType.Water) { binary[3] = '1'; } else { binary[3] = '0'; } // check bottom left tile if (bottomLeftTile != null && bottomLeftTile.GetType() == TileType.Water) { binary[2] = '1'; } else { binary[2] = '0'; } // check bottom left tile if (bottomTile != null && bottomTile.GetType() == TileType.Water) { binary[1] = '1'; } else { binary[1] = '0'; } // check bottom right tile if (bottomRightTile != null && bottomRightTile.GetType() == TileType.Water) { binary[0] = '1'; } else { binary[0] = '0'; } // Convert binary to int int value = (int)TileID.Center; int start = 0; for (int i = binary.Length - 1; i > -1; i--) { if (binary[i].Equals('1')) { value = value + (int)Math.Pow(2, start); } start = start + 1; } Debug.Log(value); return(value); }
/** * Sand out sharp edges * @return void */ public IEnumerator SandGrassEdges() { while (this.generated && !this.finished) { GameObject tiles = GameObject.Find("Tiles"); foreach (GameObject grassTile in this.grassTiles) { GrassTileBehaviour grassTileBehaviour = grassTile.GetComponent <GrassTileBehaviour>(); Tile tile = grassTileBehaviour.GetTile(); int positionX = Mathf.RoundToInt(tile.GetPosition().x); int positionZ = Mathf.RoundToInt(tile.GetPosition().z); GameObject topTileGameObject = IsTileExists(tile.GetPosition().x, tile.GetPosition().z + 1) ? Tiles[positionX][positionZ + 1] : null; Tile topTile = (topTileGameObject != null) ? topTileGameObject.GetComponent <TileBehaviour>().GetTile() : null; GameObject leftTileGameObject = IsTileExists(tile.GetPosition().x - 1, tile.GetPosition().z) ? Tiles[positionX - 1][positionZ] : null; Tile leftTile = (leftTileGameObject != null) ? leftTileGameObject.GetComponent <TileBehaviour>().GetTile() : null; GameObject bottomTileGameObject = IsTileExists(tile.GetPosition().x, tile.GetPosition().z - 1) ? Tiles[positionX][positionZ - 1] : null; Tile bottomTile = (bottomTileGameObject != null) ? bottomTileGameObject.GetComponent <TileBehaviour>().GetTile() : null; GameObject rightTileGameObject = IsTileExists(tile.GetPosition().x + 1, tile.GetPosition().z) ? Tiles[positionX + 1][positionZ] : null; Tile rightTile = (rightTileGameObject != null) ? rightTileGameObject.GetComponent <TileBehaviour>().GetTile() : null; GameObject edgeTileGameObject = null; Tile cornerTile; Vector3 tilePosition = tile.GetPosition(); // left and top if ( leftTile != null && topTile != null && rightTile != null && bottomTile != null && leftTile.GetType() == TileType.Water && topTile.GetType() == TileType.Water && rightTile.GetType() == TileType.Grass && bottomTile.GetType() == TileType.Grass ) { edgeTileGameObject = MonoBehaviour.Instantiate( Resources.Load("Prefabs/Development/Tiles/Grass/Top Left Grass Tile", typeof(GameObject)) ) as GameObject; } // right and top else if ( rightTile != null && topTile != null && leftTile != null && topTile != null && rightTile.GetType() == TileType.Water && topTile.GetType() == TileType.Water && leftTile.GetType() == TileType.Grass && topTile.GetType() == TileType.Grass ) { edgeTileGameObject = MonoBehaviour.Instantiate( Resources.Load("Prefabs/Development/Tiles/Grass/Top Right Grass Tile", typeof(GameObject)) ) as GameObject; } // left and bottom else if ( leftTile != null && bottomTile != null && rightTile != null && topTile != null && leftTile.GetType() == TileType.Water && bottomTile.GetType() == TileType.Water && rightTile.GetType() == TileType.Grass && topTile.GetType() == TileType.Grass ) { edgeTileGameObject = MonoBehaviour.Instantiate( Resources.Load("Prefabs/Development/Tiles/Grass/Bottom Left Grass Tile", typeof(GameObject)) ) as GameObject; } // right and bottom else if ( rightTile != null && bottomTile != null && leftTile != null && topTile != null && rightTile.GetType() == TileType.Water && bottomTile.GetType() == TileType.Water && leftTile.GetType() == TileType.Grass && topTile.GetType() == TileType.Grass ) { edgeTileGameObject = MonoBehaviour.Instantiate( Resources.Load("Prefabs/Development/Tiles/Grass/Bottom Right Grass Tile", typeof(GameObject)) ) as GameObject; } if (edgeTileGameObject != null) { cornerTile = tile; TileBehaviour cornerTileBehaviour = edgeTileGameObject.GetComponent <TileBehaviour>(); cornerTile.SetType(TileType.Grass); cornerTileBehaviour.SetTile(cornerTile); edgeTileGameObject.transform.position = tilePosition; edgeTileGameObject.transform.SetParent(tiles.transform); Tiles[Mathf.RoundToInt(tilePosition.x)][Mathf.RoundToInt(tilePosition.z)] = edgeTileGameObject; MonoBehaviour.Destroy(grassTile); } } // Clear out the grass tiles list this.grassTiles.Clear(); // Set finished flag to true this.finished = true; yield return(null); } yield return(null); }
/** * <summary> * Smooth out grass tiles * </summary> * * <returns> * void null * </returns> */ public void SmoothGrassTiles() { // Is generated but is not smoothed out if (this.generated && !this.finished) { Transform tiles = GameObject.Find("Tiles").transform; Debug.Log("ok..."); foreach (GameObject grassTile in this.grassTiles) { TileBehaviour grassTileBehaviour = grassTile.GetComponent <TileBehaviour>(); int id = grassTileBehaviour.GetID(); GameObject newTileGameObject = null; TileID tileID = TileID.Default; //Debug.Log(id); switch (id) { /** * Normal Tiles */ // Top Left case (int)TileID.SmoothTopLeft002: case (int)TileID.SmoothTopLeft003: case (int)TileID.SmoothTopLeft004: case (int)TileID.SmoothTopLeft005: case (int)TileID.SmoothTopLeft006: case (int)TileID.SmoothTopLeft: case (int)TileID.TopLeftEdgeCorner002: case (int)TileID.TopLeftEdgeCorner: newTileGameObject = MonoBehaviour.Instantiate( Resources.Load("Prefabs/Tiles/Grass/Top Left Grass Tile", typeof(GameObject)) ) as GameObject; tileID = TileID.TopLeft; break; case (int)TileID.TopLeft: newTileGameObject = MonoBehaviour.Instantiate( Resources.Load("Prefabs/Tiles/Grass/Center Grass Tile", typeof(GameObject)) ) as GameObject; tileID = TileID.Center; break; // Smooth Top Left Edge Corner //case (int)TileID.SmoothTopLeft002: //case (int)TileID.SmoothTopLeft003: //case (int)TileID.SmoothTopLeft004: //case (int)TileID.SmoothTopLeft005: //case (int)TileID.SmoothTopLeft006: //case (int)TileID.SmoothTopLeft: //newTileGameObject = MonoBehaviour.Instantiate( // Resources.Load("Prefabs/Development/Tiles/Grass/Top Left Edge Grass Tile", typeof(GameObject)) //) as GameObject; //tileID = TileID.SmoothTopLeft; //break; // Top Left Edge Corner //case (int)TileID.TopLeftEdgeCorner002: //case (int)TileID.TopLeftEdgeCorner: //newTileGameObject = MonoBehaviour.Instantiate( // Resources.Load("Prefabs/Development/Tiles/Grass/Top Left Edge Grass With Water Tile", typeof(GameObject)) //) as GameObject; //tileID = TileID.TopLeftEdgeCorner; //break; // Top Left Corners //case (int)TileID.TopLeftCorners: //newTileGameObject = MonoBehaviour.Instantiate( // Resources.Load("Prefabs/Development/Tiles/Grass/Top Left Corners Grass Tile", typeof(GameObject)) //) as GameObject; //tileID = TileID.TopLeftCorners; //break; // Top case (int)TileID.Top002: case (int)TileID.Top003: case (int)TileID.Top004: case (int)TileID.Top: newTileGameObject = MonoBehaviour.Instantiate( Resources.Load("Prefabs/Tiles/Grass/Top Grass Tile", typeof(GameObject)) ) as GameObject; tileID = TileID.Top; break; // Top With Right Corner //case (int)TileID.TopWithRightCorner002: //case (int)TileID.TopWithRightCorner003: //case (int)TileID.TopWithRightCorner004: //case (int)TileID.TopWithRightCorner: //newTileGameObject = MonoBehaviour.Instantiate( // Resources.Load("Prefabs/Development/Tiles/Grass/Top Grass Tile With Right Corner", typeof(GameObject)) //) as GameObject; //tileID = TileID.TopWithRightCorner; //break; // Top With Left Corner //case (int)TileID.TopWithLeftCorner002: //case (int)TileID.TopWithLeftCorner003: //case (int)TileID.TopWithLeftCorner004: //case (int)TileID.TopWithLeftCorner: //newTileGameObject = MonoBehaviour.Instantiate( // Resources.Load("Prefabs/Development/Tiles/Grass/Top Grass Tile With Left Corner", typeof(GameObject)) //) as GameObject; //tileID = TileID.TopWithLeftCorner; //break; // Top With Corners //case (int)TileID.TopWithCorners002: //case (int)TileID.TopWithCorners003: //case (int)TileID.TopWithCorners004: //case (int)TileID.TopWithCorners: //newTileGameObject = MonoBehaviour.Instantiate( // Resources.Load("Prefabs/Development/Tiles/Grass/Top Grass Tile With Corners", typeof(GameObject)) //) as GameObject; //tileID = TileID.TopWithCorners; //break; // Top Corners //case (int)TileID.TopCorners: //newTileGameObject = MonoBehaviour.Instantiate( // Resources.Load("Prefabs/Development/Tiles/Grass/Top Corners Grass Tile", typeof(GameObject)) //) as GameObject; //tileID = TileID.TopCorners; //break; // Top Right case (int)TileID.SmoothTopRight002: case (int)TileID.SmoothTopRight003: case (int)TileID.SmoothTopRight004: case (int)TileID.SmoothTopRight005: case (int)TileID.SmoothTopRight006: case (int)TileID.SmoothTopRight: case (int)TileID.TopRightEdgeCorner002: case (int)TileID.TopRightEdgeCorner: newTileGameObject = MonoBehaviour.Instantiate( Resources.Load("Prefabs/Tiles/Grass/Top Right Grass Tile", typeof(GameObject)) ) as GameObject; tileID = TileID.TopRight; break; case (int)TileID.TopRight: newTileGameObject = MonoBehaviour.Instantiate( Resources.Load("Prefabs/Tiles/Grass/Center Grass Tile", typeof(GameObject)) ) as GameObject; tileID = TileID.Center; break; // Smooth Top Right Edge Corner //case (int)TileID.SmoothTopRight002: //case (int)TileID.SmoothTopRight003: //case (int)TileID.SmoothTopRight004: //case (int)TileID.SmoothTopRight005: //case (int)TileID.SmoothTopRight006: //case (int)TileID.SmoothTopRight: //newTileGameObject = MonoBehaviour.Instantiate( // Resources.Load("Prefabs/Development/Tiles/Grass/Top Right Edge Grass Tile", typeof(GameObject)) //) as GameObject; //tileID = TileID.SmoothTopRight; //break; // Top Right Edge Corner //case (int)TileID.TopRightEdgeCorner002: //case (int)TileID.TopRightEdgeCorner: //newTileGameObject = MonoBehaviour.Instantiate( // Resources.Load("Prefabs/Development/Tiles/Grass/Top Right Edge Grass With Water Tile", typeof(GameObject)) //) as GameObject; //tileID = TileID.TopRightEdgeCorner; //break; // Top Right Corners //case (int)TileID.TopRightCorners: //newTileGameObject = MonoBehaviour.Instantiate( // Resources.Load("Prefabs/Development/Tiles/Grass/Top Right Corners Grass Tile", typeof(GameObject)) //) as GameObject; //tileID = TileID.TopRightCorners; //break; // Left case (int)TileID.Left002: case (int)TileID.Left003: case (int)TileID.Left004: case (int)TileID.Left: newTileGameObject = MonoBehaviour.Instantiate( Resources.Load("Prefabs/Tiles/Grass/Left Grass Tile", typeof(GameObject)) ) as GameObject; tileID = TileID.Left; break; // Left With Top Corner //case (int)TileID.LeftWithTopCorner002: //case (int)TileID.LeftWithTopCorner003: //case (int)TileID.LeftWithTopCorner004: //case (int)TileID.LeftWithTopCorner: //newTileGameObject = MonoBehaviour.Instantiate( // Resources.Load("Prefabs/Development/Tiles/Grass/Left Grass Tile With Top Corner", typeof(GameObject)) //) as GameObject; //tileID = TileID.LeftWithTopCorner; //break; // Left With Bottom Corner //case (int)TileID.LeftWithBottomCorner002: //case (int)TileID.LeftWithBottomCorner003: //case (int)TileID.LeftWithBottomCorner004: //case (int)TileID.LeftWithBottomCorner: //newTileGameObject = MonoBehaviour.Instantiate( // Resources.Load("Prefabs/Development/Tiles/Grass/Left Grass Tile With Bottom Corner", typeof(GameObject)) //) as GameObject; //tileID = TileID.LeftWithBottomCorner; //break; // Left With Corners //case (int)TileID.LeftWithCorners002: //case (int)TileID.LeftWithCorners003: //case (int)TileID.LeftWithCorners004: //case (int)TileID.LeftWithCorners: //newTileGameObject = MonoBehaviour.Instantiate( // Resources.Load("Prefabs/Development/Tiles/Grass/Left Grass Tile With Corners", typeof(GameObject)) //) as GameObject; //tileID = TileID.LeftWithCorners; //break; // Left Corners //case (int)TileID.LeftCorners: //newTileGameObject = MonoBehaviour.Instantiate( // Resources.Load("Prefabs/Development/Tiles/Grass/Left Corners Grass Tile", typeof(GameObject)) //) as GameObject; //tileID = TileID.LeftCorners; //break; // Center case (int)TileID.Center: newTileGameObject = MonoBehaviour.Instantiate( Resources.Load("Prefabs/Tiles/Grass/Center Grass Tile", typeof(GameObject)) ) as GameObject; tileID = TileID.Center; break; // Right case (int)TileID.Right002: case (int)TileID.Right003: case (int)TileID.Right004: case (int)TileID.Right: newTileGameObject = MonoBehaviour.Instantiate( Resources.Load("Prefabs/Tiles/Grass/Right Grass Tile", typeof(GameObject)) ) as GameObject; tileID = TileID.Right; break; // Right With Top Corner //case (int)TileID.RightWithTopCorner002: //case (int)TileID.RightWithTopCorner003: //case (int)TileID.RightWithTopCorner004: //case (int)TileID.RightWithTopCorner: //newTileGameObject = MonoBehaviour.Instantiate( // Resources.Load("Prefabs/Development/Tiles/Grass/Right Grass Tile With Top Corner", typeof(GameObject)) //) as GameObject; //tileID = TileID.RightWithTopCorner; //break; // Right With Bottom Corner //case (int)TileID.RightWithBottomCorner002: //case (int)TileID.RightWithBottomCorner003: //case (int)TileID.RightWithBottomCorner004: //case (int)TileID.RightWithBottomCorner: //newTileGameObject = MonoBehaviour.Instantiate( // Resources.Load("Prefabs/Development/Tiles/Grass/Right Grass Tile With Bottom Corner", typeof(GameObject)) //) as GameObject; //tileID = TileID.RightWithBottomCorner; //break; // Right With Corners //case (int)TileID.RightWithCorners002: //case (int)TileID.RightWithCorners003: //case (int)TileID.RightWithCorners004: //case (int)TileID.RightWithCorners: //newTileGameObject = MonoBehaviour.Instantiate( // Resources.Load("Prefabs/Development/Tiles/Grass/Right Grass Tile With Corners", typeof(GameObject)) //) as GameObject; //tileID = TileID.RightWithCorners; //break; // Right Corners //case (int)TileID.RightCorners: //newTileGameObject = MonoBehaviour.Instantiate( // Resources.Load("Prefabs/Development/Tiles/Grass/Right Corners Grass Tile", typeof(GameObject)) //) as GameObject; //tileID = TileID.RightCorners; //break; // Bottom Left case (int)TileID.SmoothBottomLeft002: case (int)TileID.SmoothBottomLeft003: case (int)TileID.SmoothBottomLeft004: case (int)TileID.SmoothBottomLeft005: case (int)TileID.SmoothBottomLeft006: case (int)TileID.SmoothBottomLeft: case (int)TileID.BottomLeftEdgeCorner002: case (int)TileID.BottomLeftEdgeCorner: newTileGameObject = MonoBehaviour.Instantiate( Resources.Load("Prefabs/Tiles/Grass/Bottom Left Grass Tile", typeof(GameObject)) ) as GameObject; tileID = TileID.BottomLeft; break; case (int)TileID.BottomLeft: newTileGameObject = MonoBehaviour.Instantiate( Resources.Load("Prefabs/Tiles/Grass/Center Grass Tile", typeof(GameObject)) ) as GameObject; tileID = TileID.Center; break; // Smooth Bottom Left //case (int)TileID.SmoothBottomLeft002: //case (int)TileID.SmoothBottomLeft003: //case (int)TileID.SmoothBottomLeft004: //case (int)TileID.SmoothBottomLeft005: //case (int)TileID.SmoothBottomLeft006: //case (int)TileID.SmoothBottomLeft: //newTileGameObject = MonoBehaviour.Instantiate( // Resources.Load("Prefabs/Development/Tiles/Grass/Bottom Left Edge Grass Tile", typeof(GameObject)) //) as GameObject; //tileID = TileID.SmoothBottomLeft; //break; // Bottom Left Edge Corner //case (int)TileID.BottomLeftEdgeCorner002: //case (int)TileID.BottomLeftEdgeCorner: //newTileGameObject = MonoBehaviour.Instantiate( // Resources.Load("Prefabs/Development/Tiles/Grass/Bottom Left Edge Grass With Water Tile", typeof(GameObject)) //) as GameObject; //tileID = TileID.BottomLeftEdgeCorner; //break; // Bottom Left Corners //case (int)TileID.BottomLeftCorners: //newTileGameObject = MonoBehaviour.Instantiate( // Resources.Load("Prefabs/Development/Tiles/Grass/Bottom Left Corners Grass Tile", typeof(GameObject)) //) as GameObject; //tileID = TileID.BottomLeftCorners; //break; // Bottom case (int)TileID.Bottom002: case (int)TileID.Bottom003: case (int)TileID.Bottom004: case (int)TileID.Bottom: newTileGameObject = MonoBehaviour.Instantiate( Resources.Load("Prefabs/Tiles/Grass/Bottom Grass Tile", typeof(GameObject)) ) as GameObject; tileID = TileID.Bottom; break; // Bottom With Left Corner //case (int)TileID.BottomWithLeftCorner002: //case (int)TileID.BottomWithLeftCorner003: //case (int)TileID.BottomWithLeftCorner004: //case (int)TileID.BottomWithLeftCorner: //newTileGameObject = MonoBehaviour.Instantiate( // Resources.Load("Prefabs/Development/Tiles/Grass/Bottom Grass Tile With Left Corner", typeof(GameObject)) //) as GameObject; //tileID = TileID.BottomWithLeftCorner; //break; // Bottom With Right Corner //case (int)TileID.BottomWithRightCorner002: //case (int)TileID.BottomWithRightCorner003: //case (int)TileID.BottomWithRightCorner004: //case (int)TileID.BottomWithRightCorner: //newTileGameObject = MonoBehaviour.Instantiate( // Resources.Load("Prefabs/Development/Tiles/Grass/Bottom Grass Tile With Right Corner", typeof(GameObject)) //) as GameObject; //tileID = TileID.BottomWithRightCorner; //break; // Bottom With Corners //case (int)TileID.BottomWithCorners002: //case (int)TileID.BottomWithCorners003: //case (int)TileID.BottomWithCorners004: //case (int)TileID.BottomWithCorners: //newTileGameObject = MonoBehaviour.Instantiate( // Resources.Load("Prefabs/Development/Tiles/Grass/Bottom Grass Tile With Corners", typeof(GameObject)) //) as GameObject; //tileID = TileID.BottomWithCorners; //break; // Bottom Corners //case (int)TileID.BottomCorners: //newTileGameObject = MonoBehaviour.Instantiate( // Resources.Load("Prefabs/Development/Tiles/Grass/Bottom Corners Grass Tile", typeof(GameObject)) //) as GameObject; //tileID = TileID.BottomCorners; //break; // Bottom Right case (int)TileID.SmoothBottomRight002: case (int)TileID.SmoothBottomRight003: case (int)TileID.SmoothBottomRight004: case (int)TileID.SmoothBottomRight005: case (int)TileID.SmoothBottomRight006: case (int)TileID.SmoothBottomRight: case (int)TileID.BottomRightEdgeCorner002: case (int)TileID.BottomRightEdgeCorner: newTileGameObject = MonoBehaviour.Instantiate( Resources.Load("Prefabs/Tiles/Grass/Bottom Right Grass Tile", typeof(GameObject)) ) as GameObject; tileID = TileID.BottomRight; break; case (int)TileID.BottomRight: newTileGameObject = MonoBehaviour.Instantiate( Resources.Load("Prefabs/Tiles/Grass/Center Grass Tile", typeof(GameObject)) ) as GameObject; tileID = TileID.Center; break; // All Corners //case (int)TileID.AllCorners: //newTileGameObject = MonoBehaviour.Instantiate( // Resources.Load("Prefabs/Development/Tiles/Grass/All Corners Grass Tile", typeof(GameObject)) //) as GameObject; //tileID = TileID.AllCorners; //break; // Smooth Bottom Right //case (int)TileID.SmoothBottomRight002: //case (int)TileID.SmoothBottomRight003: //case (int)TileID.SmoothBottomRight004: //case (int)TileID.SmoothBottomRight005: //case (int)TileID.SmoothBottomRight006: //case (int)TileID.SmoothBottomRight: //newTileGameObject = MonoBehaviour.Instantiate( // Resources.Load("Prefabs/Development/Tiles/Grass/Bottom Right Edge Grass Tile", typeof(GameObject)) //) as GameObject; //tileID = TileID.SmoothBottomRight; //break; // Bottom Right Edge Corner //case (int)TileID.BottomRightEdgeCorner002: //case (int)TileID.BottomRightEdgeCorner: //newTileGameObject = MonoBehaviour.Instantiate( // Resources.Load("Prefabs/Development/Tiles/Grass/Bottom Right Edge Grass With Water Tile", typeof(GameObject)) //) as GameObject; //tileID = TileID.BottomRightEdgeCorner; //break; // Bottom Right Corners //case (int)TileID.BottomRightCorners: //newTileGameObject = MonoBehaviour.Instantiate( // Resources.Load("Prefabs/Development/Tiles/Grass/Bottom Right Corners Grass Tile", typeof(GameObject)) //) as GameObject; //tileID = TileID.BottomRightCorners; //break; /** * Offset Tiles */ case (int)TileID.TopOffset002: case (int)TileID.TopOffset003: case (int)TileID.TopOffset004: case (int)TileID.TopOffset005: case (int)TileID.TopOffset006: case (int)TileID.TopOffset007: case (int)TileID.TopOffset008: case (int)TileID.TopOffset009: case (int)TileID.TopOffset010: case (int)TileID.TopOffset011: case (int)TileID.TopOffset012: case (int)TileID.TopOffset013: case (int)TileID.TopOffset014: case (int)TileID.TopOffset: newTileGameObject = MonoBehaviour.Instantiate( Resources.Load("Prefabs/Tiles/Grass/Offset/Top Offset Grass Tile", typeof(GameObject)) ) as GameObject; tileID = TileID.TopOffset; break; // Left Offset case (int)TileID.LeftOffset002: case (int)TileID.LeftOffset003: case (int)TileID.LeftOffset004: case (int)TileID.LeftOffset005: case (int)TileID.LeftOffset006: case (int)TileID.LeftOffset007: case (int)TileID.LeftOffset008: case (int)TileID.LeftOffset009: case (int)TileID.LeftOffset010: case (int)TileID.LeftOffset011: case (int)TileID.LeftOffset012: case (int)TileID.LeftOffset013: case (int)TileID.LeftOffset014: case (int)TileID.LeftOffset: newTileGameObject = MonoBehaviour.Instantiate( Resources.Load("Prefabs/Tiles/Grass/Offset/Left Offset Grass Tile", typeof(GameObject)) ) as GameObject; tileID = TileID.LeftOffset; break; // Right Offset case (int)TileID.RightOffset002: case (int)TileID.RightOffset003: case (int)TileID.RightOffset004: case (int)TileID.RightOffset005: case (int)TileID.RightOffset006: case (int)TileID.RightOffset007: case (int)TileID.RightOffset008: case (int)TileID.RightOffset009: case (int)TileID.RightOffset010: case (int)TileID.RightOffset011: case (int)TileID.RightOffset012: case (int)TileID.RightOffset013: case (int)TileID.RightOffset014: case (int)TileID.RightOffset: newTileGameObject = MonoBehaviour.Instantiate( Resources.Load("Prefabs/Tiles/Grass/Offset/Right Offset Grass Tile", typeof(GameObject)) ) as GameObject; tileID = TileID.RightOffset; break; // Bottom Offset case (int)TileID.BottomOffset002: case (int)TileID.BottomOffset003: case (int)TileID.BottomOffset004: case (int)TileID.BottomOffset005: case (int)TileID.BottomOffset006: case (int)TileID.BottomOffset007: case (int)TileID.BottomOffset008: case (int)TileID.BottomOffset009: case (int)TileID.BottomOffset010: case (int)TileID.BottomOffset011: case (int)TileID.BottomOffset012: case (int)TileID.BottomOffset013: case (int)TileID.BottomOffset014: case (int)TileID.BottomOffset: newTileGameObject = MonoBehaviour.Instantiate( Resources.Load("Prefabs/Tiles/Grass/Offset/Bottom Offset Grass Tile", typeof(GameObject)) ) as GameObject; tileID = TileID.BottomOffset; break; // Horizontal Diagonal Corners //case (int)TileID.HorizontalDiagonalCorners: //newTileGameObject = MonoBehaviour.Instantiate( // Resources.Load("Prefabs/Development/Tiles/Grass/Horizontal Diagonal Corners Grass Tile", typeof(GameObject)) //) as GameObject; //tileID = TileID.HorizontalDiagonalCorners; //break; // Vertical Diagonal Corners //case (int)TileID.VerticalDiagonalCorners: //newTileGameObject = MonoBehaviour.Instantiate( // Resources.Load("Prefabs/Development/Tiles/Grass/Vertical Diagonal Corners Grass Tile", typeof(GameObject)) //) as GameObject; //tileID = TileID.VerticalDiagonalCorners; //break; // Vertical Direction Offset case (int)TileID.VerticalDirection002: case (int)TileID.VerticalDirection003: case (int)TileID.VerticalDirection004: case (int)TileID.VerticalDirection005: case (int)TileID.VerticalDirection006: case (int)TileID.VerticalDirection007: case (int)TileID.VerticalDirection008: case (int)TileID.VerticalDirection009: case (int)TileID.VerticalDirection010: case (int)TileID.VerticalDirection011: case (int)TileID.VerticalDirection012: case (int)TileID.VerticalDirection013: case (int)TileID.VerticalDirection014: case (int)TileID.VerticalDirection015: case (int)TileID.VerticalDirection016: case (int)TileID.VerticalDirection: newTileGameObject = MonoBehaviour.Instantiate( Resources.Load("Prefabs/Tiles/Grass/Vertical Grass Tile", typeof(GameObject)) ) as GameObject; tileID = TileID.VerticalDirection; break; // Vertical Direction Offset case (int)TileID.HorizontalDirection002: case (int)TileID.HorizontalDirection003: case (int)TileID.HorizontalDirection004: case (int)TileID.HorizontalDirection005: case (int)TileID.HorizontalDirection006: case (int)TileID.HorizontalDirection007: case (int)TileID.HorizontalDirection008: case (int)TileID.HorizontalDirection009: case (int)TileID.HorizontalDirection010: case (int)TileID.HorizontalDirection011: case (int)TileID.HorizontalDirection012: case (int)TileID.HorizontalDirection013: case (int)TileID.HorizontalDirection014: case (int)TileID.HorizontalDirection015: case (int)TileID.HorizontalDirection016: case (int)TileID.HorizontalDirection: newTileGameObject = MonoBehaviour.Instantiate( Resources.Load("Prefabs/Tiles/Grass/Horizontal Grass Tile", typeof(GameObject)) ) as GameObject; tileID = TileID.HorizontalDirection; break; // Alone Offset //case (int)TileID.AloneOffset: //newTileGameObject = MonoBehaviour.Instantiate( // Resources.Load("Prefabs/Development/Tiles/Grass/Offset/Alone Offset Grass Tile", typeof(GameObject)) //) as GameObject; //tileID = TileID.AloneOffset; //break; // Default default: newTileGameObject = MonoBehaviour.Instantiate( Resources.Load("Prefabs/Tiles/Grass/Alone Grass Tile", typeof(GameObject)) ) as GameObject; tileID = TileID.Alone; break; } if (newTileGameObject != null) { TileBehaviour newTileBehaviour = newTileGameObject.GetComponent <TileBehaviour>(); newTileBehaviour.id = tileID; Tile newTile = grassTileBehaviour.GetTile(); newTile.SetID(tileID); newTileBehaviour.SetTile(newTile); newTileGameObject.transform.position = newTile.GetPosition(); newTileGameObject.transform.SetParent(tiles); int x = Mathf.RoundToInt(newTile.GetPosition().x); int z = Mathf.RoundToInt(newTile.GetPosition().z); Tiles[x][z] = newTileGameObject; MonoBehaviour.Destroy(grassTile); } } // Clear out the grass tiles list this.grassTiles.Clear(); // Set finished flag to true this.finished = true; } }
/** * <summary> * Generate Map * </summary> * * <returns> * IEnumerator null * </returns> */ public IEnumerator GenerateMap() { Time.timeScale = 2f; GameObject tiles = GameObject.Find("Tiles"); // Clean before generate a new map this.Clear(); //TileType[,] mapTiles = new TileType[,] { { TileType.Water, TileType.Water, TileType.Water, TileType.Water, TileType.Water, }, { TileType.Water, TileType.Water, TileType.Grass, TileType.Grass, TileType.Water, }, { TileType.Water, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Water, }, { TileType.Water, TileType.Grass, TileType.Grass, TileType.Water, TileType.Water, }, { TileType.Water, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Water, }, { TileType.Water, TileType.Water, TileType.Water, TileType.Water, TileType.Water, }, }; TileType[,] mapTiles = new TileType[, ] { { TileType.Water, TileType.Water, TileType.Water, TileType.Water, TileType.Water, TileType.Water, TileType.Water, TileType.Water, TileType.Water, TileType.Water, TileType.Water, TileType.Water, TileType.Water, TileType.Water, TileType.Water, }, { TileType.Water, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Water }, { TileType.Water, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Water }, { TileType.Water, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Water }, { TileType.Water, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Water }, { TileType.Water, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Water }, { TileType.Water, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Water }, { TileType.Water, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Water }, { TileType.Water, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Water }, { TileType.Water, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Water }, { TileType.Water, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Water }, { TileType.Water, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Water }, { TileType.Water, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Water }, { TileType.Water, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Water }, { TileType.Water, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Water }, { TileType.Water, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Water }, { TileType.Water, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Water }, { TileType.Water, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass, TileType.Water }, { TileType.Water, TileType.Water, TileType.Water, TileType.Water, TileType.Water, TileType.Water, TileType.Water, TileType.Water, TileType.Water, TileType.Water, TileType.Water, TileType.Water, TileType.Water, TileType.Water, TileType.Water, }, }; //Debug.Log(mapTiles[5, 0]); for (int x = 0; x < mapTiles.GetLength(0); x++) { Tiles[x] = new Dictionary <int, GameObject>(); for (int z = 0; z < mapTiles.GetLength(1); z++) { //Tile tile = MapBehaviour.Tiles[x][z]; Tile tile = new Tile(); tile.SetPosition(new Vector3(x, 0, z)); TileType type = mapTiles[x, z]; GameObject tileGameObject = null; if (type == TileType.Water) { tileGameObject = MonoBehaviour.Instantiate( Resources.Load("Prefabs/Tiles/Water/Center Water Tile", typeof(GameObject)) ) as GameObject; tile.SetType(TileType.Water); } else { tileGameObject = MonoBehaviour.Instantiate( Resources.Load("Prefabs/Tiles/Grass/Center Grass Tile", typeof(GameObject)) ) as GameObject; tile.SetType(TileType.Grass); this.grassTiles.Add(tileGameObject); } if (tileGameObject != null) { TileBehaviour newTileBehaviour = tileGameObject.GetComponent <TileBehaviour>(); newTileBehaviour.SetTile(tile); tileGameObject.transform.position = tile.GetPosition(); tileGameObject.transform.SetParent(tiles.transform); Tiles[x][z] = tileGameObject; } yield return(null); } yield return(null); } // Set generated flag to true this.generated = true; this.SmoothGrassTiles(); yield return(null); }