addRoom method

SwampRoom? addRoom(
  1. Channel owner, {
  2. Channel? maxPlayers,
  3. RoomFlags roomFlags = const RoomFlags(),
})

Implementation

SwampRoom? addRoom(
  Channel owner, {
  Channel? maxPlayers,
  RoomFlags roomFlags = const RoomFlags(),
}) {
  var room = getChannelRoom(owner);
  if (room != null) {
    _sendCreationFailed(owner, CreationFailedReason.inRoom);
    return null;
  }
  var roomId = generateRandomRoomId();
  while (_rooms.contains(SwampRoom.mock(roomId))) {
    roomId = generateRandomRoomId();
  }
  if (roomFlags.isDarkRoom && config.noDarkRooms) {
    _sendCreationFailed(owner, CreationFailedReason.unknown);
    return null;
  }
  if (maxPlayers == null || maxPlayers > config.maxPlayers) {
    maxPlayers = config.maxPlayers;
  }
  room = SwampRoom._(
    roomId,
    roomFlags: roomFlags,
    application: _application[owner],
    maxPlayers: maxPlayers,
  );
  _rooms.add(room);
  _joined[owner] = room;
  room._playerChannels[owner] = kAuthorityChannel;
  sendRoomInfo(owner);
  return room;
}