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); }
/// <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); } } }
/// <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"); } }
/// <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); }