Example #1
0
    void setRoomData(SimpleRoomInfo roomInfo, int index)
    {
        Transform child    = content.GetChild(index);
        RoomData  roomData = child.GetComponent <RoomData>();

        roomData.SetData(roomInfo.roomOwner, roomInfo.roomName, roomInfo.maxManCount, roomInfo.currentManCount, roomInfo.roomOwnerFd);
    }
Example #2
0
 /// <summary> Bulk fills the 2D map array with SimpleRoomInfoObjects </summary>
 public void FillMapWithRooms()
 {
     for (int x = 0; x < map.GetLength(0); x++)
     {
         for (int y = 0; y < map.GetLength(1); y++)
         {
             if (map[x, y] == null || !map[x, y].placed)
             {
                 map[x, y]        = new SimpleRoomInfo(x, y, "10X10Room");
                 map[x, y].placed = true;
             }
             CurrentMapPosition = new Vector3(x, y, 0);
         }
     }
 }
Example #3
0
 /// <summary> Removes room exits that would lead out of bounds of the array  </summary>
 public void RemoveInvalidExits(SimpleRoomInfo room)
 {
     // If room is on the edge of map, remove doors that would lead off the map
     if (room.MapPositionY == 0)
     {
         room.availbleDoors.Remove("DOWN");
     }
     if (room.MapPositionY == (map.GetLength(1) - 1))
     {
         room.availbleDoors.Remove("UP");
     }
     if (room.MapPositionX == 0)
     {
         room.availbleDoors.Remove("LEFT");
     }
     if (room.MapPositionX == (map.GetLength(0) - 1))
     {
         room.availbleDoors.Remove("RIGHT");
     }
 }
Example #4
0
    /// <summary> Opens a random valid door and the doorway of the adjacent room to link both rooms. Returns the adjacent room </summary>
    public SimpleRoomInfo OpenRandomValidDoor(SimpleRoomInfo room)
    {
        RemoveInvalidExits(room);

        // Return a random valid door
start:
        string door = room.availbleDoors[UnityEngine.Random.Range(0, room.availbleDoors.Count)];

        switch (door)
        {
        default: Debug.Log("No rooms remaining"); break;

        case "UP":
            if (map[(room.MapPositionX), (room.MapPositionY + 1)].AlreadyPassedThrough)
            {
                room.availbleDoors.Remove("UP");
                goto start;
            }
            break;

        case "DOWN":
            if (map[(room.MapPositionX), (room.MapPositionY - 1)].AlreadyPassedThrough)
            {
                room.availbleDoors.Remove("DOWN");
                goto start;
            }
            break;

        case "LEFT":
            if (map[(room.MapPositionX - 1), (room.MapPositionY)].AlreadyPassedThrough)
            {
                room.availbleDoors.Remove("LEFT");
                goto start;
            }
            break;

        case "RIGHT":
            if (map[(room.MapPositionX + 1), (room.MapPositionY)].AlreadyPassedThrough)
            {
                room.availbleDoors.Remove("RIGHT");
                goto start;
            }
            break;
        }

        room.OpenDoor(door);
        // Open the adjacent rooms door
        SimpleRoomInfo connectingRoom = map[0, 0];
        string         oppositeDoor   = "";

        switch (door)
        {
        case "UP":
            connectingRoom = map[room.MapPositionX, (room.MapPositionY + 1)];
            oppositeDoor   = "DOWN";
            break;

        case "DOWN":
            connectingRoom = map[room.MapPositionX, (room.MapPositionY - 1)];
            oppositeDoor   = "UP";
            break;

        case "LEFT":
            connectingRoom = map[(room.MapPositionX - 1), room.MapPositionY];
            oppositeDoor   = "RIGHT";
            break;

        case "RIGHT":
            connectingRoom = map[(room.MapPositionX + 1), room.MapPositionY];
            oppositeDoor   = "LEFT";
            break;
        }
        connectingRoom.OpenDoor(oppositeDoor);

        return(connectingRoom);
    }