/// <summary> /// Given a RoomObject, this returns a list of existing Rooms that have /// an open interaction point for that RoomObject type /// </summary> /// <typeparam name="T">The RoomObject object type</typeparam> /// <returns>A list of Rooms with the available RoomObject type</returns> public List <Room> GetRoomsWithAvailableObjectType <T>(RoomObjectType objType) where T : RoomObject { List <Room.Type> roomTypes = RoomObject.GetAllowedRoomTypes(objType); List <Room> roomList = new List <Room>(); List <Room> returnList = new List <Room>(); foreach (Room.Type type in roomTypes) { roomList = GetRoomsOfType(type); foreach (Room room in roomList) { if (room.HasAvailableObjectType <T>()) { returnList.Add(room); } } } return(returnList); }