예제 #1
0
 public void Assimilate(MazeRoom room)
 {
     for (int i = 0; i < room.cells.Count; i++)
     {
         Add(room.cells[i]);
     }
 }
예제 #2
0
        private MazeRoom CreateRoom(int indexToExclude)
        {
            MazeRoom newRoom = ScriptableObject.CreateInstance <MazeRoom>();

            newRoom.settingsIndex = Random.Range(0, roomSettings.Length);
            if (newRoom.settingsIndex == indexToExclude)
            {
                newRoom.settingsIndex = (newRoom.settingsIndex + 1) % roomSettings.Length;
            }
            newRoom.settings = roomSettings[newRoom.settingsIndex];
            rooms.Add(newRoom);
            return(newRoom);
        }
예제 #3
0
        private void CreatePassageInSameRoom(MazeCell cell, MazeCell otherCell, MazeDirection direction)
        {
            MazePassage passage = Instantiate <MazePassage>(passagePrefab);

            passage.Initialize(cell, otherCell, direction);
            passage = Instantiate <MazePassage>(passagePrefab);
            passage.Initialize(otherCell, cell, direction.GetOpposite());
            if (cell.room != otherCell.room)
            {
                MazeRoom roomToAssimilate = otherCell.room;
                cell.room.Assimilate(roomToAssimilate);
                rooms.Remove(roomToAssimilate);
                Destroy(roomToAssimilate);
            }
        }
예제 #4
0
 public void Initialize(MazeRoom room)
 {
     room.Add(this);
     transform.GetChild(0).GetComponent <Renderer>().material = room.settings.floorMaterial;
 }