private void AddTunnel(Vector2Int wall, Vector2Int offset, int length, int groundTile, ref int[,] mapAux) { Vector2Int start = wall + length * offset; Vector2Int end = wall; GeneratorUtils.DrawCorridor(start, end, groundTile, ref mapAux); }
public void ConnectRooms(BSPRect leftRoom, BSPRect rightRoom, ref int[,] mapAux) { int column1 = URandom.Range(leftRoom.Col, leftRoom.Col + leftRoom.Width); int row1 = URandom.Range(leftRoom.Row, leftRoom.Row + leftRoom.Height); int column2 = URandom.Range(rightRoom.Col, rightRoom.Col + rightRoom.Width); int row2 = URandom.Range(rightRoom.Row, rightRoom.Row + rightRoom.Height); int deltaRows = row2 - row1; int deltaCols = column2 - column1; if (deltaRows < 0) // down { if (deltaCols != 0) { bool isCornerUp = URandom.value < 0.5f; if (isCornerUp) { GeneratorUtils.DrawCorridor(new Vector2Int(row1, column1), new Vector2Int(row1, column2), _bspGenData.GroundTile, ref mapAux); GeneratorUtils.DrawCorridor(new Vector2Int(row1, column2), new Vector2Int(row2, column2), _bspGenData.GroundTile, ref mapAux); } else { GeneratorUtils.DrawCorridor(new Vector2Int(row1, column1), new Vector2Int(row2, column1), _bspGenData.GroundTile, ref mapAux); GeneratorUtils.DrawCorridor(new Vector2Int(row2, column1), new Vector2Int(row2, column2), _bspGenData.GroundTile, ref mapAux); } } else { GeneratorUtils.DrawCorridor(new Vector2Int(row1, column1), new Vector2Int(row2, column2), _bspGenData.GroundTile, ref mapAux); } } else if (deltaRows > 0) // up { if (deltaCols != 0) { bool isCornerUp = URandom.value < 0.5f; if (isCornerUp) { GeneratorUtils.DrawCorridor(new Vector2Int(row1, column1), new Vector2Int(row2, column1), _bspGenData.GroundTile, ref mapAux); GeneratorUtils.DrawCorridor(new Vector2Int(row2, column1), new Vector2Int(row2, column2), _bspGenData.GroundTile, ref mapAux); } else { GeneratorUtils.DrawCorridor(new Vector2Int(row1, column1), new Vector2Int(row1, column2), _bspGenData.GroundTile, ref mapAux); GeneratorUtils.DrawCorridor(new Vector2Int(row1, column2), new Vector2Int(row2, column2), _bspGenData.GroundTile, ref mapAux); } } else { GeneratorUtils.DrawCorridor(new Vector2Int(row1, column1), new Vector2Int(row2, column2), _bspGenData.GroundTile, ref mapAux); } } else { GeneratorUtils.DrawCorridor(new Vector2Int(row1, column1), new Vector2Int(row2, column2), _bspGenData.GroundTile, ref mapAux); } }