public IEnumerator GenerateLevel() { generating = true; game_started = false; if (this_level != null && this_level.level_object != null) { Destroy(this_level.level_object); } GameObject level_object = new GameObject(); level_object.name = "Level"; GenerateMaze maze_generator = GetComponent <GenerateMaze>(); List <Cell> cells = maze_generator.GetMaze(new Cell[maze_x, maze_y], max_depth, steps_back, max_rooms); this_level = new Level { room_grid = new Room[maze_x, maze_y], object_grid = new GameObject[maze_x * grid_x, maze_y *grid_y], level_object = level_object }; while (cells.Count > 0) { Cell current_cell = cells[0]; cells.Remove(current_cell); this_level.room_grid[current_cell.pos.x, current_cell.pos.y] = new Room { pos = current_cell.pos, parent_level = this_level, room_object = Instantiate(room_prefab, new Vector3(current_cell.pos.x * grid_x, 0, current_cell.pos.y * grid_y), Quaternion.identity), offset_x = grid_x * current_cell.pos.x, offset_y = grid_y * current_cell.pos.y, first = current_cell.first_room, last = current_cell.last_room, num_boxes = (int)Mathf.Ceil((size_x * size_y) / 3.0f), num_templates = size_x * size_y, size_x = size_x, size_y = size_y, grid_x = grid_x, grid_y = grid_y }; this_level.room_grid[current_cell.pos.x, current_cell.pos.y].room_object.transform.parent = this_level.level_object.transform; GenerateGrid generator = new GenerateGrid(); generator.Generate(current_cell, this_level.room_grid[current_cell.pos.x, current_cell.pos.y]); GetComponent <GenerateObjects>().Generate(this_level.room_grid[current_cell.pos.x, current_cell.pos.y], this_level, show_dead_squares, hide_rooms); if (!game_started) { game_started = true; UpdateMove(); } yield return(null); } yield return(new WaitForSeconds(1)); generating = false; }
public override void OnInspectorGUI() { DrawDefaultInspector(); GUIStyle customButton = new GUIStyle("button"); customButton.fontSize = 17; customButton.fontStyle = FontStyle.Bold; GenerateGrid myScript = (GenerateGrid)target; GUILayout.Space(40); if (GUILayout.Button("Generate Grid", customButton, GUILayout.Height(45))) { myScript.Generate(); } GUILayout.Space(15); }