--[[ | 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")