mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-17 13:53:45 +03:00
184 lines
3.8 KiB
Lua
184 lines
3.8 KiB
Lua
|
|
--[[
|
||
|
|
| 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")
|