Files
wnsrc/gamemodes/helix/plugins/inventoryslots/derma/cl_charequipslots.lua

92 lines
3.5 KiB
Lua
Raw Normal View History

2024-08-04 22:55:00 +03:00
--[[
| 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 PLUGIN = PLUGIN
local PANEL = {}
local path = "willardnetworks/tabmenu/inventory/equipslots/icon-"
local partPaintsDefault = {
[1] = {icon = ix.util.GetMaterial(path.."head.png"), category = "Head"},
[2] = {icon = ix.util.GetMaterial(path.."glasses.png"), category = "Glasses"},
[3] = {icon = ix.util.GetMaterial(path.."face.png"), category = "Face"},
[4] = {icon = ix.util.GetMaterial(path.."torso.png"), category = "Torso"},
[5] = {icon = ix.util.GetMaterial(path.."hands.png"), category = "Hands"},
[6] = {icon = ix.util.GetMaterial(path.."legs.png"), category = "Legs"},
[7] = {icon = ix.util.GetMaterial(path.."shoes.png"), category = "Shoes"},
[8] = {icon = ix.util.GetMaterial(path.."bagsmall.png"), category = "Satchel"},
[9] = {icon = ix.util.GetMaterial(path.."baglarge.png"), category = "Bag"},
[10] = {icon = ix.util.GetMaterial(path.."outfit.png"), category = "model"},
}
function PANEL:PaintParts()
local parent = self:GetParent()
local openedStorage = (!ix.gui.openedStorage or ix.gui.openedStorage and !IsValid(ix.gui.openedStorage)) or false
for k, v in pairs(self:GetChildren()) do
local partPaints = hook.Run("GetEquipSlotsPartPaints", self, openedStorage) or partPaintsDefault
if !partPaints[k] then continue end
if !partPaints[k].icon then continue end
if !partPaints[k].category then continue end
v.Paint = function(this, w, h)
local char = LocalPlayer():GetCharacter()
local faction = char and char.GetFaction and char:GetFaction()
local noEquipFactions = PLUGIN.noEquipFactions
local isNoEquipFaction = !openedStorage and self.isNoEquipFaction or faction and noEquipFactions and noEquipFactions[faction]
local bNoEquip = hook.Run("CanEquipSlot", self, openedStorage, k) == false
local color = (isNoEquipFaction or bNoEquip) and Color(80, 80, 80, 150) or Color(35, 35, 35, 85)
surface.SetDrawColor(color)
surface.DrawRect(1, 1, w - SScaleMin(2 / 3), h - SScaleMin(2 / 3))
local iconSize2 = SScaleMin(45 / 3)
if (isNoEquipFaction or bNoEquip) then
surface.SetDrawColor(Color(150, 150, 150, 255))
surface.DrawLine( 1, 1, w - SScaleMin(2 / 3), h - SScaleMin(2 / 3) )
surface.DrawLine( 1, w - SScaleMin(2 / 3), h - SScaleMin(2 / 3), 1 )
end
surface.SetDrawColor(80, 80, 80, 255)
surface.DrawOutlinedRect(1, 1, w - SScaleMin(2 / 3), h - SScaleMin(2 / 3))
local squareSize = SScaleMin(90 / 3)
local halfSquare = squareSize * 0.5
local halfIcon = iconSize2 * 0.5
surface.SetDrawColor(color_white)
surface.SetMaterial(partPaints[k] and partPaints[k].icon or partPaintsDefault[k].icon)
surface.DrawTexturedRect(halfSquare - halfIcon, halfSquare - halfIcon, iconSize2, iconSize2)
end
v.clothingCategory = partPaints[k].category
if k > 5 then
local cX, cY = v:GetPos()
v:SetPos(cX + (SScaleMin(90 / 3) * 4), cY - (SScaleMin(90 / 3) * 5))
end
end
local invSize = (SScaleMin(90 / 3) * 5)
self:SetSize(invSize, invSize)
local imgBackground = parent:GetChildren()[1]
if imgBackground and IsValid(imgBackground) then
local imgBackgroundW, imgBackgroundH = parent:GetWide() * 0.65, parent:GetTall()
self:SetPos(imgBackgroundW * 0.5 - self:GetWide() * 0.5, imgBackgroundH * 0.5 - self:GetTall() * 0.5)
end
end
vgui.Register("ixEquipSlots", PANEL, "ixInventory")