Exemple #1
0
    protected AbstractDungeonRoom GetCurrentRoom()
    {
        AbstractDungeonRoom closestRoom = null;

        foreach (var room in GameManager.dungeonGenerator.DungeonRooms)
        {
            if (closestRoom == null)
            {
                closestRoom = room;
                continue;
            }

            if (Vector2.Distance(closestRoom.transform.position, transform.position) > Vector2.Distance(room.transform.position, transform.position))
            {
                closestRoom = room;
            }
        }

        return(closestRoom);
    }
Exemple #2
0
    IEnumerable GenerateRooms()
    {
        float roomCount = 0;

        for (int col = 0; col < dungeonMaze.GetLength(0); col++)
        {
            for (int row = 0; row < dungeonMaze.GetLength(1); row++)
            {
                if (dungeonMaze[col, row] != 0)
                {
                    AbstractDungeonRoom room = CreateRoom(dungeonMaze[col, row]);
                    room.dungeon = this;
                    room.Generate(col, row);

                    // Add room to rooms list and expand bounds
                    dungeonRooms.Add(room);

                    if (dungeonBounds.size.x < 1)
                    {
                        dungeonBounds = new Bounds(room.Bounds.center, room.Bounds.size);
                    }
                    else
                    {
                        dungeonBounds.Encapsulate(room.Bounds);
                    }

                    roomCount++;
                    roomGenProgress = roomCount / dungeonSize;
                    yield return(new WaitForSeconds(0.1f));
                }
            }
        }

        // Expand bounds after rooms are all generated to provide padding
        dungeonBounds.Expand(5);

        roomGenProgress = 1;
        loadedRooms     = true;
    }
Exemple #3
0
 public override void init()
 {
     base.init();
     currentRoom = GetCurrentRoom();
     Executing   = true;
 }