Files
wnsrc/gamemodes/helix/plugins/willardinterface/cl_overrides.lua
lifestorm 73479cff9e Upload
2024-08-04 22:55:00 +03:00

326 lines
9.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/
--]]
ix.hud.appendixColors = {
["yellow"] = Color(255, 204, 0, 255),
["red"] = Color(255, 78, 69, 255),
["green"] = Color(128, 200, 97, 255),
["blue"] = Color(85, 194, 240, 255)
}
local function DrawAppendixTable(tooltip, data)
for color, text in pairs(data) do
text = tostring(text)
if (text != "" and text != " ") then
text = L(text)
end
local appendix = tooltip:Add("DLabel")
appendix:SetText(text or "NOAPPENDIXTEXT")
appendix:SetTextColor(ix.hud.appendixColors[color] or color_white)
appendix:SetTextInset(15, 0)
appendix:Dock(BOTTOM)
appendix:DockMargin(0, 0, 0, 5)
appendix:SetFont("ixSmallFont")
appendix:SizeToContents()
appendix:SetTall(appendix:GetTall() + 15)
end
end
function DFrameFixer(parent, bShouldNotPopup, bNoBackgroundBlur, bOverridePaint)
if !bShouldNotPopup then
parent:MakePopup()
end
if !bNoBackgroundBlur then
parent:SetBackgroundBlur(true)
end
parent:SetDeleteOnClose(true)
parent.PerformLayoutWindow = function(this)
local titlePush = 0
if (IsValid(this.imgIcon)) then
this.imgIcon:SetPos(SScaleMin(5 / 3), SScaleMin(5 / 3))
this.imgIcon:SetSize(SScaleMin(16 / 3), SScaleMin(16 / 3))
titlePush = SScaleMin(16 / 3)
end
this.btnClose:SetPos(this:GetWide() - SScaleMin(31 / 3) - (0 - SScaleMin(4 / 3)), 0)
this.btnClose:SetSize(SScaleMin(31 / 3), SScaleMin(24 / 3))
this.btnMaxim:SetPos(this:GetWide() - SScaleMin(31 / 3) * 2 - (0 - SScaleMin(4 / 3)), 0)
this.btnMaxim:SetSize(SScaleMin(31 / 3), SScaleMin(24 / 3))
this.btnMinim:SetPos(this:GetWide() - SScaleMin(31 / 3) * 3 - (0 - SScaleMin(4 / 3)), 0)
this.btnMinim:SetSize(SScaleMin(31 / 3), SScaleMin(24 / 3))
this.lblTitle:SetPos(SScaleMin(8 / 3) + titlePush, SScaleMin(2 / 3))
this.lblTitle:SetSize(this:GetWide() - SScaleMin(25 / 3) - titlePush, SScaleMin(20 / 3))
end
if (!bOverridePaint) then
parent.Paint = function(this, w, h)
if (this.m_bBackgroundBlur) then
Derma_DrawBackgroundBlur(this, this.m_fCreateTime)
end
surface.SetDrawColor(Color(40, 40, 40, 100))
surface.DrawRect(0, 0, w, h)
surface.SetDrawColor(Color(111, 111, 136, 255 / 100 * 30))
surface.DrawOutlinedRect(0, 0, w, h)
surface.DrawRect(0, 0, w, this.lblTitle:GetTall() + SScaleMin(5 / 3))
return true
end
end
parent.lblTitle:SetFont("MenuFontNoClamp")
parent.lblTitle:SizeToContents()
end
function ix.hud.PopulateItemTooltip(tooltip, item, bShowcase)
local labelName = item:GetData("labelName")
local labelDesc = item:GetData("labelDescription")
local name = tooltip:AddRow("name")
name:SetImportant()
name:SetText((labelName and ("\"" .. labelName .. "\"")) or (item.GetName and item:GetName()) or L(item.name))
name:SetMaxWidth(math.max(name:GetMaxWidth(), ScrW() * 0.5))
name:SizeToContents()
local description = tooltip:AddRow("description")
description:SetText(labelDesc and ("The label reads: \"" .. labelDesc .. "\"") or item:GetDescription() or "")
description:SizeToContents()
if item.invID or bShowcase then
if (item.GetColorAppendix) then
if (isfunction(item.GetColorAppendix) and istable(item:GetColorAppendix()) and item:GetColorAppendix() != false) then
DrawAppendixTable(tooltip, item:GetColorAppendix())
end
end
if (item.colorAppendix and istable(item.colorAppendix)) then
DrawAppendixTable(tooltip, item.colorAppendix)
end
end
if (item.PopulateTooltip) then
item:PopulateTooltip(tooltip)
end
hook.Run("PopulateItemTooltip", tooltip, item)
end
function Derma_Query( strText, strTitle, ... )
local Window = vgui.Create( "DFrame" )
Window:SetTitle( strTitle or "Message Title (First Parameter)" )
Window:SetDraggable( false )
Window:ShowCloseButton( false )
Window:SetDrawOnTop( true )
DFrameFixer(Window)
local InnerPanel = vgui.Create( "DPanel", Window )
InnerPanel:SetPaintBackground( false )
local Text = vgui.Create( "DLabel", InnerPanel )
Text:SetText( strText or "Message Text (Second Parameter)" )
Text:SetFont("MenuFontNoClamp")
Text:SizeToContents()
Text:SetContentAlignment( 5 )
Text:SetTextColor( color_white )
local ButtonPanel = vgui.Create( "DPanel", Window )
ButtonPanel:SetTall( SScaleMin(30 / 3) )
ButtonPanel:SetPaintBackground( false )
-- Loop through all the options and create buttons for them.
local NumOptions = 0
local x = 5
for k=1, 8, 2 do
local Text = select( k, ... )
if Text == nil then break end
local Func = select( k+1, ... ) or function() end
local Button = vgui.Create( "DButton", ButtonPanel )
Button:SetText( Text )
Button:SetFont("MenuFontNoClamp")
Button:SizeToContents()
Button:SetTall( SScaleMin(25 / 3) )
Button:SetWide( Button:GetWide() + SScaleMin(20 / 3) )
Button.DoClick = function() Window:Close() Func() end
Button:SetPos( x, SScaleMin(5 / 3) )
x = x + Button:GetWide() + SScaleMin(5 / 3)
ButtonPanel:SetWide( x )
NumOptions = NumOptions + 1
end
local w, h = Text:GetSize()
w = math.max( w, ButtonPanel:GetWide() )
Window:SetSize( w + SScaleMin(50 / 3), h + SScaleMin(25 / 3) + SScaleMin(45 / 3) + SScaleMin(10 / 3) )
Window:Center()
InnerPanel:StretchToParent( SScaleMin(5 / 3), SScaleMin(25 / 3), SScaleMin(5 / 3), SScaleMin(45 / 3) )
Text:StretchToParent( SScaleMin(5 / 3), SScaleMin(5 / 3), SScaleMin(5 / 3), SScaleMin(5 / 3) )
ButtonPanel:CenterHorizontal()
ButtonPanel:AlignBottom( 8 )
Window:DoModal()
if ( NumOptions == 0 ) then
Window:Close()
Error( "Derma_Query: Created Query with no Options!?" )
return nil
end
return Window
end
function Derma_StringRequest( strTitle, strText, strDefaultText, fnEnter, fnCancel, strButtonText, strButtonCancelText, fuckYouModal )
local Window = vgui.Create( "DFrame" )
Window:SetTitle( strTitle or "Message Title (First Parameter)" )
Window:SetDraggable( false )
Window:ShowCloseButton( false )
Window:SetDrawOnTop( true )
DFrameFixer(Window)
local InnerPanel = vgui.Create( "DPanel", Window )
InnerPanel:SetPaintBackground( false )
local Text = vgui.Create( "DLabel", InnerPanel )
Text:SetText( strText or "Message Text (Second Parameter)" )
Text:SetFont("MenuFontNoClamp")
Text:SizeToContents()
Text:SetContentAlignment( 5 )
Text:SetTextColor( color_white )
local TextEntry = vgui.Create( "DTextEntry", InnerPanel )
TextEntry:SetText( strDefaultText or "" )
TextEntry:SetFont("MenuFontNoClamp")
TextEntry.OnEnter = function() Window:Close() fnEnter( TextEntry:GetValue() ) end
TextEntry:SetTall(Text:GetTall())
local ButtonPanel = vgui.Create( "DPanel", Window )
ButtonPanel:SetTall( SScaleMin(30 / 3) )
ButtonPanel:SetPaintBackground( false )
local Button = vgui.Create( "DButton", ButtonPanel )
Button:SetText( strButtonText or "OK" )
Button:SetFont("MenuFontNoClamp")
Button:SizeToContents()
Button:SetTall( SScaleMin(25 / 3) )
Button:SetWide( Button:GetWide() + SScaleMin(20 / 3) )
Button:SetPos( SScaleMin(5 / 3), SScaleMin(5 / 3) )
Button.DoClick = function() Window:Close() fnEnter( TextEntry:GetValue() ) end
local ButtonCancel = vgui.Create( "DButton", ButtonPanel )
ButtonCancel:SetText( strButtonCancelText or "Cancel" )
ButtonCancel:SetFont("MenuFontNoClamp")
ButtonCancel:SizeToContents()
ButtonCancel:SetTall( SScaleMin(25 / 3) )
ButtonCancel:SetWide( Button:GetWide() + SScaleMin(20 / 3) )
ButtonCancel:SetPos( SScaleMin(5 / 3), SScaleMin(5 / 3) )
ButtonCancel.DoClick = function() Window:Close() if ( fnCancel ) then fnCancel( TextEntry:GetValue() ) end end
ButtonCancel:MoveRightOf( Button, SScaleMin(5 / 3) )
ButtonPanel:SetWide( Button:GetWide() + SScaleMin(5 / 3) + ButtonCancel:GetWide() + SScaleMin(10 / 3) )
local w, h = Text:GetSize()
w = math.max( w, SScaleMin(400 / 3) )
Window:SetSize( w + SScaleMin(50 / 3), h + SScaleMin(25 / 3) + SScaleMin(75 / 3) + SScaleMin(10 / 3) )
Window:Center()
InnerPanel:StretchToParent( SScaleMin(5 / 3), SScaleMin(25 / 3), SScaleMin(5 / 3), SScaleMin(45 / 3) )
Text:StretchToParent( SScaleMin(5 / 3), SScaleMin(5 / 3), SScaleMin(5 / 3), SScaleMin(35 / 3) )
TextEntry:StretchToParent( SScaleMin(5 / 3), nil, SScaleMin(5 / 3), nil )
TextEntry:AlignBottom( 5 )
TextEntry:RequestFocus()
TextEntry:SelectAllText( true )
ButtonPanel:CenterHorizontal()
ButtonPanel:AlignBottom( 8 )
if !fuckYouModal then
Window:DoModal()
end
return Window
end
function PLUGIN:StartChat()
if IsValid(ix.gui.chat) then
if (IsValid(self.disableAutoScroll)) then
self.disableAutoScroll:Remove()
end
self.disableAutoScroll = vgui.Create("DButton")
self.disableAutoScroll:SetText(ix.option.Get("disableAutoScrollChat", false) and "Activé Auto Scroll" or "Désactivé Auto Scroll")
self.disableAutoScroll:SetFont("DebugFixedRadio")
self.disableAutoScroll:SizeToContents()
self.disableAutoScroll.Paint = nil
self.disableAutoScroll.Think = function(this)
if IsValid(ix.gui.chat) then
if !ix.gui.chat.GetPos or !ix.gui.chat.GetWide then return end
if !IsValid(self.disableAutoScroll) or (IsValid(self.disableAutoScroll) and !self.disableAutoScroll.GetWide) then return end
local x, y = ix.gui.chat:GetPos()
y = y - SScaleMin(20 / 3)
x = x + ix.gui.chat:GetWide() - self.disableAutoScroll:GetWide()
self.disableAutoScroll:SetPos(x, y)
end
end
self.disableAutoScroll.DoClick = function()
surface.PlaySound("helix/ui/press.wav")
if ix.option.Get("disableAutoScrollChat", false) then
ix.option.Set("disableAutoScrollChat", false)
else
ix.option.Set("disableAutoScrollChat", true)
end
self.disableAutoScroll:SetText(ix.option.Get("disableAutoScrollChat", false) and "Activé Auto Scroll" or "Désactivé Auto Scroll")
self.disableAutoScroll:SizeToContents()
end
end
end
function PLUGIN:FinishChat()
if self.disableAutoScroll and IsValid(self.disableAutoScroll) then
self.disableAutoScroll:Remove()
end
end