From 2c81c4c6dfa639bd2f30f35d2c34965d6ff2dcf3 Mon Sep 17 00:00:00 2001 From: Lierrmm Date: Thu, 16 Feb 2023 21:36:55 +0000 Subject: [PATCH] feat: add 'double-click to join server' to server browser --- .../doubleclick_join_server/__init__.lua | 113 ++++++++++++++++++ 1 file changed, 113 insertions(+) create mode 100644 data/ui_scripts/doubleclick_join_server/__init__.lua diff --git a/data/ui_scripts/doubleclick_join_server/__init__.lua b/data/ui_scripts/doubleclick_join_server/__init__.lua new file mode 100644 index 00000000..30f4ef08 --- /dev/null +++ b/data/ui_scripts/doubleclick_join_server/__init__.lua @@ -0,0 +1,113 @@ +require( "ui.uieditor.widgets.PC.ServerBrowser.ServerBrowserRowInternal" ) +require( "ui.uieditor.widgets.Lobby.Common.FE_FocusBarContainer" ) + +CoD.ServerBrowserRow = InheritFrom( LUI.UIElement ) +CoD.ServerBrowserRow.new = function ( menu, controller ) + local self = LUI.UIElement.new() + if PreLoadFunc then + PreLoadFunc( self, controller ) + end + self:setUseStencil( false ) + self:setClass( CoD.ServerBrowserRow ) + self.id = "ServerBrowserRow" + self.soundSet = "default" + self:setLeftRight( true, false, 0, 700 ) + self:setTopBottom( true, false, 0, 22 ) + self:makeFocusable() + self:setHandleMouse( true ) + + if CoD.isPC then + self:registerEventHandler( "leftmousedown", function () + if self:isInFocus() then + JoinServerBrowser( self, self, controller, menu ) + end + end ) + end + self.anyChildUsesUpdateState = true + + local background = LUI.UIImage.new() + background:setLeftRight( true, true, 0, 0 ) + background:setTopBottom( true, true, 0, 0 ) + background:setRGB( 0.2, 0.2, 0.2 ) + background:setAlpha( 0.8 ) + self:addElement( background ) + self.background = background + + local rowItems = CoD.ServerBrowserRowInternal.new( menu, controller ) + rowItems:setLeftRight( true, false, 0, 700 ) + rowItems:setTopBottom( true, false, 0, 22 ) + rowItems:linkToElementModel( self, nil, false, function ( model ) + rowItems:setModel( model, controller ) + end ) + self:addElement( rowItems ) + self.rowItems = rowItems + + local FocusBarB = CoD.FE_FocusBarContainer.new( menu, controller ) + FocusBarB:setLeftRight( true, true, -2, 2 ) + FocusBarB:setTopBottom( false, true, -1, 3 ) + FocusBarB:setAlpha( 0 ) + FocusBarB:setZoom( 1 ) + self:addElement( FocusBarB ) + self.FocusBarB = FocusBarB + + local FocusBarT = CoD.FE_FocusBarContainer.new( menu, controller ) + FocusBarT:setLeftRight( true, true, -2, 2 ) + FocusBarT:setTopBottom( true, false, -2, 2 ) + FocusBarT:setAlpha( 0 ) + FocusBarT:setZoom( 1 ) + self:addElement( FocusBarT ) + self.FocusBarT = FocusBarT + + self.clipsPerState = { + DefaultState = { + DefaultClip = function () + self:setupElementClipCounter( 3 ) + background:completeAnimation() + self.background:setRGB( 0.2, 0.2, 0.2 ) + self.clipFinished( background, {} ) + FocusBarB:completeAnimation() + self.FocusBarB:setAlpha( 0 ) + self.clipFinished( FocusBarB, {} ) + FocusBarT:completeAnimation() + self.FocusBarT:setAlpha( 0 ) + self.clipFinished( FocusBarT, {} ) + end, + Focus = function () + self:setupElementClipCounter( 3 ) + background:completeAnimation() + self.background:setRGB( 0.2, 0.2, 0.2 ) + self.clipFinished( background, {} ) + FocusBarB:completeAnimation() + self.FocusBarB:setAlpha( 1 ) + self.clipFinished( FocusBarB, {} ) + FocusBarT:completeAnimation() + self.FocusBarT:setAlpha( 1 ) + self.clipFinished( FocusBarT, {} ) + end, + Over = function () + self:setupElementClipCounter( 3 ) + background:completeAnimation() + self.background:setRGB( 0.39, 0.39, 0.39 ) + self.clipFinished( background, {} ) + FocusBarB:completeAnimation() + self.FocusBarB:setAlpha( 0 ) + self.clipFinished( FocusBarB, {} ) + FocusBarT:completeAnimation() + self.FocusBarT:setAlpha( 0 ) + self.clipFinished( FocusBarT, {} ) + end + } + } + LUI.OverrideFunction_CallOriginalSecond( self, "close", function ( element ) + element.rowItems:close() + element.FocusBarB:close() + element.FocusBarT:close() + element.m_leftMouseDown = nil + end ) + + if PostLoadFunc then + PostLoadFunc( self, controller, menu ) + end + + return self +end \ No newline at end of file