zombiesurvival-evolved/gamemodes/zombiesurvival/gamemode/vgui/premantle.lua

745 lines
22 KiB
Lua
Raw Normal View History

local function ScrapLabelThink(self)
local scrap = MySelf:GetAmmoCount("scrap")
if self.m_LastScrap ~= scrap then
self.m_LastScrap = scrap
self:SetText("Scrap for usage: "..scrap)
self:SizeToContents()
end
end
local function SelectedInv()
return GAMEMODE.InventoryMenu and GAMEMODE.InventoryMenu.SelInv
end
local function DismantleClick()
Derma_Query("Dismantle weapon? This cannot be reversed.", "Confirm Dissassembling Weapon",
"Dismantle", function()
RunConsoleCommand("zs_dismantle", SelectedInv())
GAMEMODE.RemantlerInterface:Close()
GAMEMODE.RemantlerInterface = nil
end,
"Cancel", function()
end)
end
hook.Add("Think", "RemantlerMenuThink", function()
local pan = GAMEMODE.RemantlerInterface
if pan and pan:IsValid() and pan:IsVisible() then
local mx, my = gui.MousePos()
local x, y = pan:GetPos()
if mx < x - 16 or my < y - 16 or mx > x + pan:GetWide() + 16 or my > y + pan:GetTall() + 16 then
pan:SetVisible(false)
end
end
end)
local function RemantlerCenterMouse(self)
local x, y = self:GetPos()
local w, h = self:GetSize()
gui.SetMousePos(x + w / 2, y + h / 2)
end
-- Miniature version of the skill tree code
local PANEL = {}
local hovquality
local hovbranch
AccessorFunc( PANEL, "vCamPos", "CamPos" )
AccessorFunc( PANEL, "fFOV", "FOV" )
AccessorFunc( PANEL, "vLookatPos", "LookAt" )
AccessorFunc( PANEL, "aLookAngle", "LookAng" )
AccessorFunc( PANEL, "colAmbientLight", "AmbientLight" )
PANEL.CreationTime = 0
function PANEL:Init()
local node
local screenscale = BetterScreenScale()
self.DirectionalLight = {}
self.FarZ = 32000
self.MainMenu = GAMEMODE.RemantlerInterface
self.RemantleNodes = {}
self.RemantleNodes[0] = {}
if not SelectedInv() and self.MainMenu.m_WepClass then
self.GunTab = weapons.Get(self.MainMenu.m_WepClass)
local gtbl = self.GunTab
local curqua = gtbl.QualityTier
if gtbl.AllowQualityWeapons then
local branches = gtbl.Branches
if branches then
for no, _ in pairs(branches) do
self.RemantleNodes[no] = {}
end
end
self.OrigTab = gtbl.BaseQuality and weapons.Get(gtbl.BaseQuality) or gtbl
for i = 0, #GAMEMODE.WeaponQualities do
node = ClientsideModel("models/props/cs_italy/orange.mdl", RENDER_GROUP_OPAQUE_ENTITY)
if IsValid(node) then
node:SetNoDraw(true)
node:SetPos(Vector(0, -48 + i * 30, i > 0 and branches and 0 or -9))
node.Unlocked = i == 0 or (curqua and curqua >= i or nil)
if i ~= 0 and curqua and curqua >= 1 and gtbl.Branch then
node.Locked = true
end
self.RemantleNodes[0][i] = node
end
if i > 0 and branches then
for no, br in pairs(branches) do
node = ClientsideModel("models/props/cs_italy/orange.mdl", RENDER_GROUP_OPAQUE_ENTITY)
if IsValid(node) then
node:SetNoDraw(true)
node:SetPos(Vector(0, -48 + i * 30, 0 - (16/#branches)*no))
node.Unlocked = i == 0 or (curqua and curqua >= i or nil)
if curqua and curqua >= 1 and gtbl.Branch ~= no then
node.Locked = true
end
node.Name = br and br.NewNames and br.NewNames[i] or nil
self.RemantleNodes[no][i] = node
end
end
end
end
end
end
self:SetCamPos( Vector( 20000, 0, 0 ) )
self:SetLookAt( Vector( 0, 0, 0 ) )
self:SetFOV( 5 )
self:SetAmbientLight( Color( 50, 50, 50 ) )
self:SetDirectionalLight( BOX_TOP, color_white )
self:SetDirectionalLight( BOX_FRONT, color_white )
local top = vgui.Create("Panel", self)
top:SetSize(ScrW(), 256)
top:SetMouseInputEnabled(false)
local qualityname = vgui.Create("DLabel", top)
qualityname:SetFont("ZSHUDFont")
qualityname:SetTextColor(COLOR_WHITE)
qualityname:SetContentAlignment(8)
qualityname:Dock(TOP)
local desc = {}
for i=1, 5 do
local qualityd = vgui.Create("DLabel", top)
qualityd:SetFont("ZSHUDFontSmallest")
qualityd:SetTextColor(COLOR_GRAY)
qualityd:SetContentAlignment(8)
qualityd:Dock(TOP)
table.insert(desc, qualityd)
end
local bottom = vgui.Create("Panel", self)
bottom:SetSize(ScrW(), 36 * screenscale)
bottom:SetMouseInputEnabled(false)
local scrapcost = vgui.Create("DLabel", bottom)
scrapcost:SetFont("ZSHUDFontSmaller")
scrapcost:SetTextColor(COLOR_WHITE)
scrapcost:SetContentAlignment(2)
scrapcost:Dock(TOP)
self.Top = top
self.QualityName = qualityname
self.QualityDesc = desc
self.Bottom = bottom
self.ScrapCost = scrapcost
top:SetAlpha(0)
bottom:SetAlpha(0)
self:DockMargin(0, 0, 0, 0)
self:DockPadding(0, 0, 0, 0)
self:Dock(FILL)
self:InvalidateLayout()
end
function PANEL:PerformLayout()
local screenscale = BetterScreenScale()
self.Top:AlignTop(4)
self.Top:CenterHorizontal()
self.Bottom:AlignBottom(10 * screenscale)
self.Bottom:CenterHorizontal()
end
function PANEL:SetDirectionalLight(iDirection, color)
self.DirectionalLight[iDirection] = color
end
local matBeam = Material("trails/laser")
local matGlow = Material("sprites/glow04_noz")
local matWhite = Material("models/debug/debugwhite")
local colBeam = Color(0, 0, 0)
local colBeam2 = Color(255, 255, 255)
local colGlow = Color(0, 0, 0)
function PANEL:Paint(w, h)
local realtime = RealTime()
local nodepos, selected
local col, othernodepos
local add, pos_a, pos_b, sat
local size, ang
local campos = self.vCamPos
campos.x = 1600
campos.y = math.Clamp(campos.y, -262, 262)
campos.z = math.Clamp(campos.z, -262, 262)
self:SetCamPos(campos)
self.vLookatPos:Set(campos)
self.vLookatPos.x = 0
self:SetCamPos(campos)
surface.SetDrawColor(15, 20, 25, 230)
surface.DrawRect(0, 0, w, h)
ang = self.aLookAngle
if not ang then
ang = (self.vLookatPos - self.vCamPos):Angle()
end
local to_camera = ang:Forward() * -1
local x, y = self:LocalToScreen(0, 0)
local mx, my = gui.MousePos()
local aimvector = util.AimVector(ang, self.fFOV, mx - x, my - y, w, h)
local intersectpos = util.IntersectRayWithPlane(self.vCamPos, aimvector, self:GetLookAt(), Vector(-1, 0, 0))
cam.Start3D( self.vCamPos, ang, self.fFOV, x, y, w, h, 5, self.FarZ )
cam.IgnoreZ( true )
render.SuppressEngineLighting( true )
render.SetLightingOrigin( vector_origin )
render.ResetModelLighting( self.colAmbientLight.r / 255, self.colAmbientLight.g / 255, self.colAmbientLight.b / 255 )
for i=0, 6 do
col = self.DirectionalLight[ i ]
if col then
render.SetModelLighting( i, col.r / 255, col.g / 255, col.b / 255 )
end
end
render.SetMaterial(matBeam)
for branch, nodes in pairs(self.RemantleNodes) do
for id, node in pairs(nodes) do
if IsValid(node) then
nodepos = node:GetPos()
othernodes = {}
if id > 0 then
othernodes[#othernodes+1] = nodes[id + 1]
else
for i = 0, #self.RemantleNodes do
othernodes[#othernodes+1] = self.RemantleNodes[i][1]
end
end
for _, othernode in pairs(othernodes) do
if IsValid(othernode) then
othernodepos = othernode:GetPos()
local beamsize = 4
if othernode.Unlocked then
colBeam.r = 32
colBeam.g = 128
colBeam.b = 255
elseif node.Unlocked then
colBeam.r = 255
colBeam.g = 192
colBeam.b = 0
else
colBeam.r = 128
colBeam.g = 40
colBeam.b = 40
beamsize = 2
end
if hovquality and hovquality >= id - 1 and hovquality <= id + 1 and hovbranch == branch then
add = math.abs(math.sin(realtime * math.pi)) * 120
colBeam.r = math.min(colBeam.r + add, 255)
colBeam.g = math.min(colBeam.g + add, 255)
colBeam.b = math.min(colBeam.b + add, 255)
colBeam.a = 180
colBeam2.a = 190
else
colBeam.a = 110
colBeam2.a = 110
end
pos_a = nodepos + Vector(-16, 0, 0)
pos_b = othernodepos + Vector(-16, 0, 0)
render.DrawBeam(pos_a, pos_b, beamsize, 0, 1, colBeam2)
render.DrawBeam(pos_a, pos_b, 8, 0, 1, colBeam)
end
end
end
end
end
local oldquality = hovquality
local oldbranch = hovbranch
hovquality = nil
hovbranch = nil
local angle = (realtime * 180) % 360
for branch, nodes in pairs(self.RemantleNodes) do
for id, node in pairs(nodes) do
if IsValid(node) then
nodepos = node:GetPos()
selected = intersectpos and nodepos:DistToSqr(intersectpos) <= 36
cam.Start3D2D(node:GetPos() - to_camera * 8, Angle(0, 90, 90), 0.08)
surface.DisableClipping(true)
DisableClipping(true)
if selected then
hovquality = id
hovbranch = branch
sat = 1 - math.abs(math.sin(realtime * math.pi)) * 0.25
else
sat = 1
end
local prevnode = nodes[id - 1] or id == 1 and self.RemantleNodes[0][0]
if node.Locked then
render.SetColorModulation(sat / 4, sat / 4, sat / 4)
elseif node.Unlocked then
render.SetColorModulation(sat / 4, sat / 4, sat)
elseif prevnode.Unlocked and not node.Unlocked then
render.SetColorModulation(sat, sat / 2, 0)
else
render.SetColorModulation(sat / 2, 0, 0)
end
render.ModelMaterialOverride(matWhite)
node:DrawModel()
render.ModelMaterialOverride()
render.SetColorModulation(1, 1, 1)
local txt = "Standard"
local quals = GAMEMODE.WeaponQualities[id]
if quals then
txt = node.Name or branch == 0 and quals[1] or quals[3]
end
draw.SimpleText(txt, "ZS3D2DFont2", -x, -y, selected and color_white or COLOR_GRAY, TEXT_ALIGN_CENTER)
DisableClipping(false)
surface.DisableClipping(false)
cam.End3D2D()
if not node.Locked then
render.SetMaterial(matGlow)
colGlow.r = sat * 255 colGlow.g = sat * 255 colGlow.b = sat * 255
if node.Unlocked then
colGlow.r = colGlow.r / 4
colGlow.g = colGlow.g / 4
elseif not node.Unlocked then
if prevnode.Unlocked then
colGlow.g = colGlow.g / 1.5
colGlow.b = 0
else
colGlow.r = colGlow.r / 1.5
colGlow.g = 0
colGlow.b = 0
end
end
size = selected and 30 or 20
render.DrawQuadEasy(nodepos, to_camera, size, size, colGlow, angle)
angle = angle + 45
end
end
end
end
if intersectpos then
intersectpos = intersectpos + Vector(16, 0, 0)
render.SetMaterial(matGlow)
render.DrawQuadEasy(intersectpos, to_camera, 12, 12, color_white, realtime * 90)
end
render.SuppressEngineLighting(false)
cam.IgnoreZ(false)
cam.End3D()
if oldquality ~= hovquality or oldbranch ~= hovbranch then
self.Top:Stop()
self.Bottom:Stop()
if hovquality and hovbranch then
local txt, scost = "Standard", ""
local quals = GAMEMODE.WeaponQualities[hovquality]
if quals then
txt = self.RemantleNodes[hovbranch][hovquality].Name or hovbranch == 0 and quals[1] or quals[3]
scost = GAMEMODE:GetUpgradeScrap(self.GunTab, hovquality)
end
self.QualityName:SetText(txt)
self.QualityName:SizeToContents()
self.ScrapCost:SetText(scost ~= "" and "Scrap Cost: " .. scost or "")
self.ScrapCost:SetTextColor(scost ~= "" and MySelf:GetAmmoCount("scrap") >= scost and COLOR_WHITE or COLOR_RED)
self.ScrapCost:SizeToContents()
local dtxt
local altdesc = self.OrigTab.RemantleDescs
local altdescs = altdesc and altdesc[hovbranch][hovquality]
for i=1, 5 do
dtxt = " "
if txt ~= "Standard" and altdesc and altdescs and altdescs[i] then
dtxt = altdescs[i]
end
self.QualityDesc[i]:SetTextColor(i == 1 and hovbranch ~= 0 and COLOR_WHITE or COLOR_GREEN)
self.QualityDesc[i]:SetText(dtxt)
self.QualityDesc[i]:SizeToContents()
end
surface.PlaySound("zombiesurvival/ui/misc1.ogg")
self.Top:SetAlpha(0)
self.Top:AlphaTo(195, 0.1)
self.Bottom:SetAlpha(0)
self.Bottom:AlphaTo(140, 0.1)
else
self.Top:AlphaTo(0, 0.1)
self.Bottom:AlphaTo(0, 0.1)
end
end
return true
end
net.Receive("zs_remantleconf", function()
if not (GAMEMODE.RemantlerInterface and GAMEMODE.RemantlerInterface:IsValid() and hovquality and hovbranch) then return end
local ri = GAMEMODE.RemantlerInterface
local path = ri.RemantlePath
local wepclass = ri.m_WepClass
local contentsqua = GAMEMODE.GunTab.QualityTier
local desiredqua = contentsqua and contentsqua + 1 or 1
local upgclass = GAMEMODE:GetWeaponClassOfQuality(not contentsqua and wepclass or GAMEMODE.GunTab.BaseQuality, desiredqua)
GAMEMODE.GunTab = weapons.Get(upgclass)
local gtbl = GAMEMODE.GunTab
local scost = GAMEMODE:GetUpgradeScrap(gtbl, desiredqua)
path.RemantleNodes[hovbranch][hovquality].Unlocked = true
path.ScrapCost:SetTextColor((MySelf:GetAmmoCount("scrap") - scost) >= scost and COLOR_WHITE or COLOR_RED)
ri.m_ContentsLabel:SetText(gtbl.PrintName)
ri.m_ContentsLabel:SizeToContents()
ri.m_ContentsLabel:CenterHorizontal()
local retscrap = GAMEMODE:GetDismantleScrap(gtbl)
local disscraptxt = gtbl.NoDismantle and "Cannot Dismantle" or "Dismantle for " .. retscrap .. " Scrap"
ri.m_Dismantle:SetText(disscraptxt)
ri.m_Dismantle:SizeToContents()
ri.m_Dismantle:CenterHorizontal()
ri.m_DisaButton:SetDisabled(gtbl.NoDismantle)
ri.m_DisaButton:SetTextColor(gtbl.NoDismantle and COLOR_DARKGRAY or COLOR_WHITE)
end)
function PANEL:OnMousePressed(mc)
if mc == MOUSE_LEFT and hovquality and hovbranch and hovquality ~= 0 then
local gtbl = self.GunTab
local cqua = gtbl.QualityTier or 0
local current = self.RemantleNodes[hovbranch][hovquality]
local prev = self.RemantleNodes[hovbranch][hovquality - 1] or hovquality == 1 and self.RemantleNodes[0][0]
if cqua and hovquality > cqua and prev and prev.Unlocked and not current.Locked then
if self.GunTab.AmmoIfHas and MySelf:GetAmmoCount(self.GunTab.Primary.Ammo) == 0 then
GAMEMODE:CenterNotify(COLOR_RED, "You don't have the deployable ammo type for this!")
surface.PlaySound("buttons/button8.wav")
return
end
local scost = GAMEMODE:GetUpgradeScrap(self.GunTab, hovquality)
if MySelf:GetAmmoCount("scrap") >= scost then
RunConsoleCommand("zs_upgrade", hovbranch ~= 0 and hovbranch)
return
else
GAMEMODE:CenterNotify(COLOR_RED, "You need enough scrap to upgrade this weapon!")
surface.PlaySound("buttons/button8.wav")
return
end
else
GAMEMODE:CenterNotify(COLOR_RED, "You must upgrade your weapon to the correct quality first!")
surface.PlaySound("buttons/button8.wav")
return
end
end
end
vgui.Register("ZSRemantlePath", PANEL, "Panel")
function GM:OpenRemantlerMenu(remantler)
if not (remantler and remantler:IsValid()) or (self.RemantlerInterface and self.RemantlerInterface:IsVisible()) then return end
local mytarget = SelectedInv() or MySelf:GetActiveWeapon():GetClass()
if self.RemantlerInterface and self.RemantlerInterface:IsValid() and self.RemantlerInterface.m_WepClass == mytarget then
self.RemantlerInterface:SetVisible(true)
self.RemantlerInterface:CenterMouse()
return
end
local screenscale = BetterScreenScale()
local wid, hei = math.min(ScrW(), 900) * screenscale, math.min(ScrH(), 800) * screenscale
local tabhei = 24 * screenscale
local frame = vgui.Create("DFrame")
frame:SetSize(wid, hei)
frame:Center()
frame:SetDeleteOnClose(false)
frame:SetTitle(" ")
frame:SetDraggable(false)
if frame.btnClose and frame.btnClose:IsValid() then frame.btnClose:SetVisible(false) end
if frame.btnMinim and frame.btnMinim:IsValid() then frame.btnMinim:SetVisible(false) end
if frame.btnMaxim and frame.btnMaxim:IsValid() then frame.btnMaxim:SetVisible(false) end
frame.CenterMouse = RemantlerCenterMouse
self.RemantlerInterface = frame
frame.m_Remantler = remantler
frame.m_WepClass = mytarget
if not SelectedInv() then
self.GunTab = weapons.Get(frame.m_WepClass)
else
self.GunTab = GAMEMODE.ZSInventoryItemData[frame.m_WepClass]
end
local gtbl = self.GunTab
if not SelectedInv() and not (gtbl.AllowQualityWeapons or gtbl.PermitDismantle) then
frame.m_WepClass, gtbl = nil, nil
elseif SelectedInv() and ((gtbl.PermitDismantle ~= nil and not gtbl.PermitDismantle) or (self:GetInventoryItemType(mytarget) ~= INVCAT_TRINKETS)) then
frame.m_WepClass, gtbl = nil, nil
end
local topspace = vgui.Create("DPanel", frame)
topspace:SetWide(wid - 16)
local title = EasyLabel(topspace, "Weapon Remantler", "ZSHUDFontSmall", COLOR_WHITE)
title:CenterHorizontal()
local subtitle = EasyLabel(topspace, "Dismantle weapons into scrap and use scrap to upgrade weapons!", "ZSHUDFontTiny", COLOR_WHITE)
subtitle:CenterHorizontal()
subtitle:MoveBelow(title, 4)
local _, y = subtitle:GetPos()
topspace:SetTall(y + subtitle:GetTall() + 4)
topspace:AlignTop(8)
topspace:CenterHorizontal()
local bottomspace = vgui.Create("DPanel", frame)
bottomspace:SetWide(topspace:GetWide())
local pointslabel = EasyLabel(bottomspace, "Scrap for usage: 0", "ZSHUDFontTiny", COLOR_GREEN)
pointslabel:AlignTop(4)
pointslabel:AlignLeft(8)
pointslabel.Think = ScrapLabelThink
local lab = EasyLabel(bottomspace, "Disassembling your weapons cannot be reversed!", "ZSHUDFontTiny")
lab:AlignTop(4)
lab:AlignRight(4)
frame.m_AdviceLabel = lab
_, y = lab:GetPos()
bottomspace:SetTall(y + lab:GetTall() + 4)
bottomspace:AlignBottom(8)
bottomspace:CenterHorizontal()
local __, topy = topspace:GetPos()
local ___, boty = bottomspace:GetPos()
local remprop = vgui.Create("DPropertySheet", frame)
remprop:SetSize(wid - 8, boty - topy - 8 - topspace:GetTall())
remprop:MoveBelow(topspace, 4)
remprop:CenterHorizontal()
remprop.Paint = function() end
remprop:SetPadding(0)
local remantleframe = vgui.Create("DPanel", remprop)
local sheet = remprop:AddSheet("Remantling", remantleframe, "icon16/arrow_up.png", false, false)
sheet.Panel:SetPos(0, tabhei + 2)
remantleframe.Paint = function(me, w, h) surface.SetDrawColor(31, 33, 35, 255) surface.DrawRect(0, 0, w, h) end
remantleframe:SetSize(wid - 8, boty - topy - 8 - topspace:GetTall())
local trinketsframe = vgui.Create("DPanel")
sheet = remprop:AddSheet("Trinkets", trinketsframe, GAMEMODE.ItemCategoryIcons[ITEMCAT_TRINKETS], false, false)
sheet.Panel:SetPos(0, tabhei + 2)
trinketsframe:SetSize(wid - 8, boty - topy - 8 - topspace:GetTall())
trinketsframe:SetPaintBackground(false)
frame.TrinketsFrame = trinketsframe
local ammoframe = vgui.Create("DPanel")
sheet = remprop:AddSheet("Ammunition", ammoframe, GAMEMODE.ItemCategoryIcons[ITEMCAT_AMMO], false, false)
sheet.Panel:SetPos(0, tabhei + 2)
ammoframe:SetSize(wid - 8, boty - topy - 8 - topspace:GetTall())
ammoframe:SetPaintBackground(true)
frame.m_AmmoFrame = ammoframe
local subpropertysheet
for frameindex = 0, 1 do
local curframe = frameindex == 0 and trinketsframe or ammoframe
if frameindex == 0 then
local tabpane = vgui.Create("DPanel", curframe)
--tabpane.Paint = function() end
tabpane.Grids = {}
tabpane.Buttons = {}
tabpane:SetSize(curframe:GetWide(), curframe:GetTall())
local offset = 64 * screenscale
local itemframe = vgui.Create("DScrollPanel", tabpane)
itemframe:SetSize(curframe:GetWide(), curframe:GetTall() - offset - 32)
itemframe:SetPos(0, offset)
local mkgrid = function()
local list = vgui.Create("DGrid", itemframe)
list:SetPos(0, 0)
list:SetSize(curframe:GetWide() - 312, curframe:GetTall())
list:SetCols(2)
list:SetColWide(280 * screenscale)
list:SetRowHeight(64 * screenscale)
return list
end
local subcats = GAMEMODE.ItemSubCategories
local tbn
for j = 1, #subcats do
local ispacer = ((j-1) % 3)+1
tbn = EasyButton(tabpane, subcats[j], 8, 4)
tbn:SetFont("ZSHUDFontSmallest")
tbn:SetAlpha(j == 1 and 255 or 70)
tbn:AlignRight(800 * screenscale - (ispacer - 1) * 190 * screenscale)
tbn:AlignTop(j <= 3 and 0 or 28)
tbn:SizeToContents()
tbn.DoClick = function(me)
for k, v in pairs(tabpane.Grids) do
v:SetVisible(k == j)
tabpane.Buttons[k]:SetAlpha(k == j and 255 or 70)
end
end
tabpane.Grids[j] = mkgrid()
tabpane.Grids[j]:SetVisible(j == 1)
tabpane.Buttons[j] = tbn
end
for j, tab in ipairs(GAMEMODE.Items) do
if tab.PointShop and tab.Category == ITEMCAT_TRINKETS then
self:AddShopItem(tabpane.Grids[tab.SubCategory], j, tab, false, true)
end
end
else
local list = vgui.Create("DGrid", curframe)
list:SetPos(0, 0)
list:SetSize(curframe:GetWide() - 312, curframe:GetTall())
list:SetCols(3)
list:SetColWide(290 * screenscale)
list:SetRowHeight(100 * screenscale)
list:SetPos(8, 16)
list:SetWide(ammoframe:GetWide() - 16)
list:SetTall(ammoframe:GetTall() - 32)
for j, tab in ipairs(GAMEMODE.Items) do
if tab.PointShop and tab.Category == ITEMCAT_AMMO or tab.CanMakeFromScrap then
self:AddShopItem(list, j, tab, false, true)
end
end
end
end
frame.m_SubProp = subpropertysheet
self:CreateItemInfoViewer(trinketsframe, frame, topspace, bottomspace, MENU_REMANTLER)
local scroller = remprop:GetChildren()[1]
local dragbase = scroller:GetChildren()[1]
local tabs = dragbase:GetChildren()
self:ConfigureMenuTabs(tabs, tabhei)
local contents = EasyLabel(remantleframe, gtbl and gtbl.PrintName or "EMPTY", "ZSHUDFontSmall", COLOR_WHITE)
contents:AlignTop(16 * screenscale)
contents:CenterHorizontal()
frame.m_ContentsLabel = contents
local upgpathf = vgui.Create("DPanel", remantleframe)
upgpathf:SetSize(wid - 16, remantleframe:GetTall() / 1.75)
upgpathf:MoveBelow(contents, 24 * screenscale)
upgpathf:CenterHorizontal()
frame.RemantlePath = vgui.Create("ZSRemantlePath", upgpathf)
local disabtn = EasyButton(remantleframe, "Dismantle Weapon", 8, 4)
disabtn:SetFont("ZSHUDFont")
disabtn:SizeToContents()
disabtn:MoveBelow(upgpathf, 32 * screenscale)
disabtn:CenterHorizontal()
disabtn.DoClick = DismantleClick
if not gtbl then
disabtn:SetDisabled(true)
else
disabtn:SetDisabled(gtbl.NoDismantle)
end
disabtn:SetTextColor(gtbl and gtbl.NoDismantle and COLOR_DARKGRAY or gtbl and COLOR_WHITE or COLOR_DARKGRAY)
frame.m_DisaButton = disabtn
local disscraptxt = ""
if gtbl then
local retscrap = self:GetDismantleScrap(gtbl, SelectedInv())
disscraptxt = gtbl.NoDismantle and "Cannot Dismantle" or "Dismantle for " .. retscrap .. " Scrap"
end
local disscrap = EasyLabel(remantleframe, disscraptxt, "ZSHUDFontSmaller", COLOR_WHITE)
disscrap:MoveBelow(disabtn, 4 * screenscale)
disscrap:CenterHorizontal()
frame.m_Dismantle = disscrap
local breakdowns = self.Breakdowns[frame.m_WepClass]
local compdistxt = breakdowns and self.ZSInventoryItemData[breakdowns.Result].PrintName or ""
local compdisl = EasyLabel(remantleframe, compdistxt, "ZSHUDFontSmaller", COLOR_WHITE)
compdisl:MoveBelow(disscrap, 4 * screenscale)
compdisl:CenterHorizontal()
frame.m_ComponentDis = compdisl
frame:MakePopup()
frame:CenterMouse()
end