local SetBlurHeight = function ( element, height ) assert( height ) local height_limited = math.min( height, 16 ) element.ListBlur:SetAnchorsAndPosition( 0, 0, 0, 1, 0, 0, 0, _1080p * 40 + height_limited * _1080p * 35 + height_limited * _1080p * 5, 0 ) end local PostLoadFunc = function ( element, controllerIndex, controller ) element.SetBlurHeight = SetBlurHeight end function ServerBrowser( menu, controller ) local self = LUI.UIElement.new() self:SetAnchorsAndPosition( 0, 1, 0, 1, 0, 1790 * _1080p, 0, 675 * _1080p ) self.id = "ServerBrowser" local controllerIndex = controller and controller.controllerIndex if not controllerIndex and not Engine.InFrontend() then controllerIndex = self:getRootController() end assert( controllerIndex ) local ListBlur = nil ListBlur = LUI.UIBlur.new() ListBlur.id = "ListBlur" ListBlur:SetBlurStrength( 2.75, 0 ) ListBlur:SetAnchorsAndPosition( 0, 0, 0, 1, 0, 0, 0, _1080p * 40 ) self:addElement( ListBlur ) self.ListBlur = ListBlur local ServerList = nil ServerList = LUI.UIDataSourceGrid.new( nil, { maxVisibleColumns = 1, maxVisibleRows = 16, controllerIndex = controllerIndex, buildChild = function () return MenuBuilder.BuildRegisteredType( "SystemLinkJoinMenuRow", { controllerIndex = controllerIndex } ) end, wrapX = true, wrapY = true, spacingX = _1080p * 5, spacingY = _1080p * 5, columnWidth = _1080p * 1790, rowHeight = _1080p * 35, scrollingThresholdX = 1, scrollingThresholdY = 1, adjustSizeToContent = false, horizontalAlignment = LUI.Alignment.Left, verticalAlignment = LUI.Alignment.Top, springCoefficient = 400, maxVelocity = 5000 } ) ServerList.id = "ServerList" ServerList:setUseStencil( true ) ServerList:SetAnchorsAndPosition( 0, 0, 0, 1, 0, 0, _1080p * 40, _1080p * 675 ) self:addElement( ServerList ) self.ServerList = ServerList local VerticalMinimalScrollbar = nil VerticalMinimalScrollbar = MenuBuilder.BuildRegisteredType( "VerticalMinimalScrollbar", { controllerIndex = controllerIndex } ) VerticalMinimalScrollbar.id = "VerticalMinimalScrollbar" VerticalMinimalScrollbar:SetAnchorsAndPosition( 0, 1, 0, 1, _1080p * -16, 0, _1080p * 40, _1080p * 675 ) self:addElement( VerticalMinimalScrollbar ) self.VerticalMinimalScrollbar = VerticalMinimalScrollbar local ArrowUp = nil ArrowUp = MenuBuilder.BuildRegisteredType( "ArrowUp", { controllerIndex = controllerIndex } ) ArrowUp.id = "ArrowUp" ArrowUp:SetAnchorsAndPosition( 0, 1, 0, 1, _1080p * 878, _1080p * 898, _1080p * 676, _1080p * 716 ) self:addElement( ArrowUp ) self.ArrowUp = ArrowUp local ArrowDown = nil ArrowDown = MenuBuilder.BuildRegisteredType( "ArrowDown", { controllerIndex = controllerIndex } ) ArrowDown.id = "ArrowDown" ArrowDown:SetAnchorsAndPosition( 0, 1, 0, 1, _1080p * 713, _1080p * 733, _1080p * 675, _1080p * 715 ) self:addElement( ArrowDown ) self.ArrowDown = ArrowDown local ListCount = nil ListCount = LUI.UIText.new() ListCount.id = "ListCount" ListCount:setText( "1/15", 0 ) ListCount:SetFontSize( 24 * _1080p ) ListCount:SetFont( FONTS.GetFont( FONTS.MainMedium.File ) ) ListCount:SetAlignment( LUI.Alignment.Center ) ListCount:SetAnchorsAndPosition( 0, 1, 0, 1, _1080p * 733, _1080p * 878, _1080p * 683, _1080p * 707 ) self:addElement( ListCount ) self.ListCount = ListCount local TitleRow = nil TitleRow = MenuBuilder.BuildRegisteredType( "SystemLinkJoinMenuTitleRow", { controllerIndex = controllerIndex } ) TitleRow.id = "TitleRow" TitleRow:SetAnchorsAndPosition( 0, 0, 0, 1, 0, 0, 0, _1080p * 40 ) self:addElement( TitleRow ) self.TitleRow = TitleRow local scrollbar = LUI.UIScrollbar.new local scrollbardata = { direction = LUI.DIRECTION.vertical, eventListener = VerticalMinimalScrollbar, startCap = VerticalMinimalScrollbar.startCap, endCap = VerticalMinimalScrollbar.endCap } local slider = VerticalMinimalScrollbar.sliderArea if slider then slider = VerticalMinimalScrollbar.sliderArea.slider end scrollbardata.slider = slider slider = VerticalMinimalScrollbar.sliderArea if slider then slider = VerticalMinimalScrollbar.sliderArea.fixedSizeSlider end scrollbardata.fixedSizeSlider = slider ServerList:AddScrollbar( scrollbar( scrollbardata ) ) ServerList:AddArrow( ArrowUp ) ServerList:AddArrow( ArrowDown ) ServerList:AddItemNumbers( ListCount ) PostLoadFunc( self, controllerIndex, controller ) return self end MenuBuilder.m_types["ServerBrowser"] = ServerBrowser