mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-17 21:53:46 +03:00
Upload
This commit is contained in:
183
gamemodes/helix/plugins/willardinterface/derma/cl_menubutton.lua
Normal file
183
gamemodes/helix/plugins/willardinterface/derma/cl_menubutton.lua
Normal file
@@ -0,0 +1,183 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
|
||||
local buttonPadding = ScreenScale(14) * 0.5
|
||||
|
||||
-- base menu button
|
||||
DEFINE_BASECLASS("DButton")
|
||||
local PANEL = {}
|
||||
|
||||
AccessorFunc(PANEL, "backgroundColor", "BackgroundColor")
|
||||
AccessorFunc(PANEL, "backgroundAlpha", "BackgroundAlpha")
|
||||
|
||||
function PANEL:Init()
|
||||
self:SetFont("MenuFontNoClamp")
|
||||
self:SetTextColor(color_white)
|
||||
self:SetPaintBackground(false)
|
||||
self:SetContentAlignment(5)
|
||||
self:SetTextInset(buttonPadding, 0)
|
||||
|
||||
self.backgroundColor = Color(0, 0, 0)
|
||||
self.backgroundAlpha = 128
|
||||
self.currentBackgroundAlpha = 0
|
||||
end
|
||||
|
||||
function PANEL:SetText(text, noTranslation)
|
||||
surface.SetFont("MenuFontNoClamp")
|
||||
BaseClass.SetText(self, noTranslation and text or L(text))
|
||||
|
||||
self:SetSize(ScreenScale(125 / 3), ScreenScale(50 / 3))
|
||||
end
|
||||
|
||||
function PANEL:PaintBackground(width, height)
|
||||
surface.SetDrawColor(ColorAlpha(self.backgroundColor, self.currentBackgroundAlpha))
|
||||
surface.DrawRect(0, 0, width, height)
|
||||
end
|
||||
|
||||
function PANEL:Paint(width, height)
|
||||
self:PaintBackground(width, height)
|
||||
BaseClass.Paint(self, width, height)
|
||||
end
|
||||
|
||||
function PANEL:SetTextColorInternal(color)
|
||||
BaseClass.SetTextColor(self, color)
|
||||
self:SetFGColor(color)
|
||||
end
|
||||
|
||||
function PANEL:SetTextColor(color)
|
||||
self:SetTextColorInternal(color)
|
||||
self.color = color
|
||||
end
|
||||
|
||||
function PANEL:SetDisabled(bValue)
|
||||
local color = self.color
|
||||
|
||||
if (bValue) then
|
||||
self:SetTextColorInternal(Color(math.max(color.r - 60, 0), math.max(color.g - 60, 0), math.max(color.b - 60, 0)))
|
||||
else
|
||||
self:SetTextColorInternal(color)
|
||||
end
|
||||
|
||||
BaseClass.SetDisabled(self, bValue)
|
||||
end
|
||||
|
||||
function PANEL:OnCursorEntered()
|
||||
if (self:GetDisabled()) then
|
||||
return
|
||||
end
|
||||
|
||||
local color = self:GetTextColor()
|
||||
|
||||
self:CreateAnimation(0.15, {
|
||||
target = {currentBackgroundAlpha = self.backgroundAlpha}
|
||||
})
|
||||
|
||||
LocalPlayer():EmitSound("Helix.Rollover")
|
||||
end
|
||||
|
||||
function PANEL:OnCursorExited()
|
||||
if (self:GetDisabled()) then
|
||||
return
|
||||
end
|
||||
|
||||
self:CreateAnimation(0.15, {
|
||||
target = {currentBackgroundAlpha = 0}
|
||||
})
|
||||
end
|
||||
|
||||
function PANEL:OnMousePressed(code)
|
||||
if (self:GetDisabled()) then
|
||||
return
|
||||
end
|
||||
|
||||
if (self.color) then
|
||||
self:SetTextColor(self.color)
|
||||
else
|
||||
self:SetTextColor(ix.config.Get("color"))
|
||||
end
|
||||
|
||||
LocalPlayer():EmitSound("Helix.Press")
|
||||
|
||||
if (code == MOUSE_LEFT and self.DoClick) then
|
||||
self:DoClick(self)
|
||||
elseif (code == MOUSE_RIGHT and self.DoRightClick) then
|
||||
self:DoRightClick(self)
|
||||
end
|
||||
end
|
||||
|
||||
function PANEL:OnMouseReleased(key)
|
||||
if (self:GetDisabled()) then
|
||||
return
|
||||
end
|
||||
|
||||
if (self.color) then
|
||||
self:SetTextColor(self.color)
|
||||
else
|
||||
self:SetTextColor(color_white)
|
||||
end
|
||||
end
|
||||
|
||||
vgui.Register("ixMenuButton", PANEL, "DButton")
|
||||
|
||||
-- selection menu button
|
||||
DEFINE_BASECLASS("ixMenuButton")
|
||||
PANEL = {}
|
||||
|
||||
AccessorFunc(PANEL, "backgroundColor", "BackgroundColor")
|
||||
AccessorFunc(PANEL, "selected", "Selected", FORCE_BOOL)
|
||||
AccessorFunc(PANEL, "buttonList", "ButtonList")
|
||||
|
||||
function PANEL:Init()
|
||||
self.backgroundColor = color_white
|
||||
self.selected = false
|
||||
self.buttonList = {}
|
||||
end
|
||||
|
||||
function PANEL:PaintBackground(width, height)
|
||||
local alpha = self.selected and 255 or self.currentBackgroundAlpha
|
||||
|
||||
color = ColorAlpha(self.backgroundColor, alpha)
|
||||
|
||||
surface.SetDrawColor(color)
|
||||
surface.DrawRect(0, 0, width, height, ColorAlpha(self.backgroundColor, alpha))
|
||||
end
|
||||
|
||||
function PANEL:SetSelected(bValue)
|
||||
self.selected = bValue
|
||||
|
||||
if (bValue) then
|
||||
self:OnSelected()
|
||||
end
|
||||
end
|
||||
|
||||
function PANEL:SetButtonList(list, bNoAdd)
|
||||
if (!bNoAdd) then
|
||||
list[#list + 1] = self
|
||||
end
|
||||
|
||||
self.buttonList = list
|
||||
end
|
||||
|
||||
function PANEL:OnMousePressed(key)
|
||||
for _, v in pairs(self.buttonList) do
|
||||
if (IsValid(v)) then
|
||||
v:SetSelected(false)
|
||||
end
|
||||
end
|
||||
|
||||
self:SetSelected(true)
|
||||
BaseClass.OnMousePressed(self, key)
|
||||
end
|
||||
|
||||
function PANEL:OnSelected()
|
||||
end
|
||||
|
||||
vgui.Register("ixMenuSelectionButton", PANEL, "ixMenuButton")
|
||||
Reference in New Issue
Block a user