Esempio n. 1
0
    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;
    }
Esempio n. 2
0
    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);
    }