Files
wnsrc/lua/arccw/client/cl_0_uc_wepsel.lua
lifestorm 9c918c46e5 Upload
2024-08-04 23:12:27 +03:00

246 lines
7.0 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/
--]]
surface.CreateFont("UCWepSel", {
font = "Bahnschrift",
size = 36,
weight = 0,
blursize = 0,
antialias = true,
})
surface.CreateFont("UCWepSel2", {
font = "Bahnschrift Light",
size = 17,
weight = 0,
blursize = 0,
antialias = true,
})
surface.CreateFont("UCWepSel3", {
font = "Bahnschrift Light",
size = 13,
weight = 0,
blursize = 0,
antialias = true,
})
local PANEL = {}
local matOverlay_AdminOnly = Material("icon16/shield.png")
local matOverlay_NPCWeapon = Material("icon16/monkey.png")
local matOverlay_NPCWeaponSelected = Material("icon16/monkey_tick.png")
AccessorFunc(PANEL, "m_Color", "Color")
AccessorFunc(PANEL, "m_Type", "ContentType")
AccessorFunc(PANEL, "m_SpawnName", "SpawnName")
AccessorFunc(PANEL, "m_NPCWeapon", "NPCWeapon")
AccessorFunc(PANEL, "m_bAdminOnly", "AdminOnly")
AccessorFunc(PANEL, "m_bIsNPCWeapon", "IsNPCWeapon")
function PANEL:Init()
self:SetPaintBackground(false)
-- local sw, sh = self:GetParent():GetParent():GetParent():GetSize()
self:SetSize(384*0.9, 128) -- TODO: get real long n har. nvm
self:SetText("")
self:SetDoubleClickingEnabled(false)
self.Image = self:Add("DImage")
self.Image:SetPos(3, 3)
self.Image:SetSize(128 - 6, 128 - 6)
self.Image:SetVisible(false)
self.Border = 0
end
function PANEL:SetName(name, spname, other)
self:SetTooltip(name .. "\n" .. spname)
self.WEP_NAME = name
self.WEP_MANU = other.manu
self.WEP_YEAR = other.year
self.WEP_CALI = other.cali
--self.Label:SetText( name )
--self.Label2:SetText( name )
self.m_NiceName = name
end
function PANEL:SetMaterial(name)
self.m_MaterialName = name
local mat = Material(name)
-- Look for the old style material
if not mat or mat:IsError() then
name = name:Replace("entities/", "VGUI/entities/")
name = name:Replace(".png", "")
mat = Material(name)
end
-- Couldn't find any material.. just return
if not mat or mat:IsError() then
mat = Material("entities/ucepicfail.png")
end
self.Image:SetMaterial(mat)
end
function PANEL:DoRightClick()
local pCanvas = self:GetSelectionCanvas()
if IsValid(pCanvas) and pCanvas:NumSelectedChildren() > 0 and self:IsSelected() then return hook.Run("SpawnlistOpenGenericMenu", pCanvas) end
self:OpenMenu()
end
function PANEL:DoClick()
end
function PANEL:OpenMenu()
end
function PANEL:OnDepressionChanged(b)
end
function PANEL:Paint(w, h)
if self.Depressed and not self.Dragging then
if self.Border ~= 8 then
self.Border = 8
self:OnDepressionChanged(true)
end
else
if self.Border ~= 0 then
self.Border = 0
self:OnDepressionChanged(false)
end
end
surface.SetDrawColor(255, 255, 255, 255)
if not dragndrop.IsDragging() and (self:IsHovered() or self.Depressed or self:IsChildHovered()) then
surface.SetMaterial(Material("entities/uchover.png"))
surface.DrawTexturedRect(self.Border, self.Border, w, h)
end
--surface.SetMaterial( matOverlay_Normal )
--self.Label:Show()
local c_w, c_s = Color(255, 255, 255, 200), Color(0, 0, 0, 127)
-- Name
if assert(self.WEP_NAME, "Holy balls no weapon name??") then
surface.SetFont("UCWepSel")
surface.SetTextPos((128 + 16) + 2, (50 - 24) + 2)
surface.SetTextColor(c_s)
surface.DrawText(self.WEP_NAME or "idk")
surface.SetTextPos(128 + 16, 50 - 24)
surface.SetTextColor(color_white)
surface.DrawText(self.WEP_NAME or "idk")
end
local ya = false
if self.WEP_MANU then
-- Manufacturer
surface.SetFont("UCWepSel2")
surface.SetTextPos((128 + 16) + 2, (50 - 24 + 32) + 2)
surface.SetTextColor(c_s)
surface.DrawText(self.WEP_MANU or "idk")
surface.SetTextPos(128 + 16, 50 - 24 + 32)
surface.SetTextColor(c_w)
surface.DrawText(self.WEP_MANU or "idk")
ya = true
end
if self.WEP_CALI then
-- Caliber
surface.SetFont("UCWepSel3")
surface.SetTextPos((128 + 16) + 2, (50 - 24 + 32 + (ya and 16 or 0)) + 2)
surface.SetTextColor(c_s)
surface.DrawText(self.WEP_CALI or "idk")
surface.SetTextPos(128 + 16, 50 - 24 + 32 + (ya and 16 or 0))
surface.SetTextColor(c_w)
surface.DrawText(self.WEP_CALI or "idk")
end
if self.WEP_YEAR then
-- Year
surface.SetFont("UCWepSel3")
surface.SetTextPos((128 + 16) + 2, (50 - 31) + 2)
surface.SetTextColor(c_s)
surface.DrawText(self.WEP_YEAR or "9999")
surface.SetTextPos(128 + 16, 50 - 31)
surface.SetTextColor(c_w)
surface.DrawText(self.WEP_YEAR or "9999")
end
render.PushFilterMag(TEXFILTER.ANISOTROPIC)
render.PushFilterMin(TEXFILTER.ANISOTROPIC)
self.Image:PaintAt(3 + self.Border, 3 + self.Border, 128 - 8 - self.Border * 2, 128 - 8 - self.Border * 2)
render.PopFilterMin()
render.PopFilterMag()
--surface.DrawTexturedRect( self.Border, self.Border, w-self.Border*2, h-self.Border*2 )
if self:GetAdminOnly() then
surface.SetMaterial(matOverlay_AdminOnly)
surface.DrawTexturedRect(self.Border + 8, self.Border + 8, 16, 16)
end
-- This whole thing could be more dynamic
if self:GetIsNPCWeapon() then
surface.SetMaterial(matOverlay_NPCWeapon)
if self:GetSpawnName() == GetConVar("gmod_npcweapon"):GetString() then
surface.SetMaterial(matOverlay_NPCWeaponSelected)
end
surface.DrawTexturedRect(w - self.Border - 24, self.Border + 8, 16, 16)
end
self:ScanForNPCWeapons()
end
function PANEL:ScanForNPCWeapons()
if self.HasScanned then return end
self.HasScanned = true
for _, v in pairs(list.Get("NPCUsableWeapons")) do
if v.class == self:GetSpawnName() then
self:SetIsNPCWeapon(true)
break
end
end
end
function PANEL:PaintOver(w, h)
self:DrawSelections()
end
function PANEL:ToTable(bigtable)
local tab = {}
tab.type = self:GetContentType()
tab.nicename = self.m_NiceName
tab.material = self.m_MaterialName
tab.admin = self:GetAdminOnly()
tab.spawnname = self:GetSpawnName()
tab.weapon = self:GetNPCWeapon()
table.insert(bigtable, tab)
end
function PANEL:Copy()
local copy = vgui.Create("UCWepSel", self:GetParent())
copy:SetContentType(self:GetContentType())
copy:SetSpawnName(self:GetSpawnName())
copy:SetName(self.m_NiceName, self:GetSpawnName())
copy:SetMaterial(self.m_MaterialName)
copy:SetNPCWeapon(self:GetNPCWeapon())
copy:SetAdminOnly(self:GetAdminOnly())
copy:CopyBase(self)
copy.DoClick = self.DoClick
copy.OpenMenu = self.OpenMenu
copy.OpenMenuExtra = self.OpenMenuExtra
return copy
end
vgui.Register("UCWepSel", PANEL, "DButton")