mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-17 13:53:45 +03:00
Upload
This commit is contained in:
263
gamemodes/helix/plugins/staffqol/derma/cl_plygetinfo.lua
Normal file
263
gamemodes/helix/plugins/staffqol/derma/cl_plygetinfo.lua
Normal file
@@ -0,0 +1,263 @@
|
||||
--[[
|
||||
| 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 PANEL = {}
|
||||
|
||||
local padding = SScaleMin(10 / 3)
|
||||
|
||||
function PANEL:Init()
|
||||
self:SetSize(ScrW(), ScrH())
|
||||
self.Paint = function(this, w, h)
|
||||
surface.SetDrawColor(Color(63, 58, 115, 220))
|
||||
surface.DrawRect(0, 0, w, h)
|
||||
|
||||
Derma_DrawBackgroundBlur( this, 1 )
|
||||
end
|
||||
|
||||
self.content = self:Add("EditablePanel")
|
||||
self.content:SetSize(SScaleMin(700 / 3), SScaleMin(600 / 3))
|
||||
self.content:Center()
|
||||
self.content:MakePopup()
|
||||
self.content.Paint = function(this, w, h)
|
||||
surface.SetDrawColor(0, 0, 0, 130)
|
||||
surface.DrawRect(0, 0, w, h)
|
||||
end
|
||||
|
||||
Schema:AllowMessage(self.content)
|
||||
|
||||
self:CreateTopBar()
|
||||
|
||||
self.innerSelf = self.content:Add("DScrollPanel")
|
||||
self.innerSelf:Dock(FILL)
|
||||
end
|
||||
|
||||
function PANEL:CreateTopBar()
|
||||
self.topbar = self.content:Add("Panel")
|
||||
self.topbar:SetSize(self:GetWide(), SScaleMin(50 / 3))
|
||||
self.topbar:Dock(TOP)
|
||||
self.topbar:DockMargin(0, 0, 0, padding)
|
||||
self.topbar.Paint = function( this, w, h )
|
||||
surface.SetDrawColor(0, 0, 0, 130)
|
||||
surface.DrawRect(0, 0, w, h)
|
||||
end
|
||||
|
||||
self.titleText = self.topbar:Add("DLabel")
|
||||
self.titleText:SetFont("CharCreationBoldTitleNoClamp")
|
||||
self.titleText:Dock(LEFT)
|
||||
self.titleText:SetText(L("qolPlyInfo"))
|
||||
self.titleText:DockMargin(SScaleMin(10 / 3), 0, 0, 0)
|
||||
self.titleText:SetContentAlignment(4)
|
||||
self.titleText:SizeToContents()
|
||||
|
||||
local exit = self.topbar:Add("DImageButton")
|
||||
exit:SetImage("willardnetworks/tabmenu/navicons/exit.png")
|
||||
exit:SetSize(SScaleMin(20 / 3), SScaleMin(20 / 3))
|
||||
exit:DockMargin(0, SScaleMin(15 / 3), SScaleMin(10 / 3), SScaleMin(15 / 3))
|
||||
exit:Dock(RIGHT)
|
||||
exit.DoClick = function()
|
||||
self:Remove()
|
||||
surface.PlaySound("helix/ui/press.wav")
|
||||
end
|
||||
|
||||
local divider = self.topbar:Add("Panel")
|
||||
self:CreateDivider(divider)
|
||||
end
|
||||
|
||||
function PANEL:CreateDivider(parent)
|
||||
parent:SetSize(1, self.topbar:GetTall())
|
||||
parent:Dock(RIGHT)
|
||||
parent:DockMargin(SScaleMin(5 / 3), padding, padding + SScaleMin(5 / 3), padding)
|
||||
parent.Paint = function(this, w, h)
|
||||
surface.SetDrawColor(Color(111, 111, 136, (255 / 100 * 30)))
|
||||
surface.DrawLine(0, 0, 0, h)
|
||||
end
|
||||
end
|
||||
|
||||
function PANEL:Populate(plyInfo)
|
||||
steamworks.RequestPlayerInfo( plyInfo.player.steamID64, function( steamName )
|
||||
local miscInfo = self.innerSelf:Add("Panel")
|
||||
miscInfo:Dock(TOP)
|
||||
|
||||
local characters = miscInfo:Add("DLabel")
|
||||
characters:SetFont("WNBleedingTextNoClamp")
|
||||
characters:Dock(LEFT)
|
||||
characters:SetText(steamName.."'s "..L("qolCharacters"))
|
||||
characters:DockMargin(padding, 0, 0, padding)
|
||||
characters:SetContentAlignment(4)
|
||||
characters:SizeToContents()
|
||||
|
||||
local divider = miscInfo:Add("Panel")
|
||||
self:CreateDivider(divider)
|
||||
divider:Dock(LEFT)
|
||||
divider:DockMargin(padding, 0, padding, padding)
|
||||
|
||||
local otherInfo = miscInfo:Add("DLabel")
|
||||
otherInfo:Dock(LEFT)
|
||||
otherInfo:SetFont("WNBleedingTextNoClamp")
|
||||
otherInfo:SetText(L("qolHP")..": "..plyInfo.player.curHp..", "..L("qolArmor")..": "..plyInfo.player.curArmor..", "..L("qolPlayerFlags")..": "..(plyInfo.player.playerFlags == "" and "N/A" or plyInfo.player.playerFlags))
|
||||
otherInfo:DockMargin(0, 0, 0, padding)
|
||||
otherInfo:SetContentAlignment(4)
|
||||
otherInfo:SizeToContents()
|
||||
|
||||
miscInfo:SetTall(characters:GetTall() + SScaleMin(10 / 3))
|
||||
|
||||
local count = 0
|
||||
for charID, charInfo in pairs(plyInfo) do
|
||||
if !isnumber(charID) then continue end
|
||||
count = count + 1
|
||||
|
||||
self:CreateCharRow(count, charID, charInfo)
|
||||
end
|
||||
|
||||
local bottompanel = self.content:Add("Panel")
|
||||
bottompanel:Dock(BOTTOM)
|
||||
bottompanel:SetSize(self.content:GetWide(), SScaleMin(50 / 3))
|
||||
|
||||
local copySteamID = bottompanel:Add("DButton")
|
||||
copySteamID:Dock(LEFT)
|
||||
copySteamID:SetFont("MenuFontNoClamp")
|
||||
copySteamID:SetText(L("qolCopySteamID"))
|
||||
copySteamID:SizeToContents()
|
||||
copySteamID:SetWide(bottompanel:GetWide() / 2)
|
||||
copySteamID.DoClick = function()
|
||||
SetClipboardText( plyInfo.player.steamID )
|
||||
LocalPlayer():NotifyLocalized(L("qolCopiedSteamID"))
|
||||
end
|
||||
|
||||
local seeWhitelists = bottompanel:Add("DButton")
|
||||
seeWhitelists:Dock(FILL)
|
||||
seeWhitelists:SetFont("MenuFontNoClamp")
|
||||
seeWhitelists:SetText(L("qolSeeWhitelists"))
|
||||
seeWhitelists.DoClick = function()
|
||||
if self.popup and IsValid(self.popup) then
|
||||
self.popup:Remove()
|
||||
end
|
||||
|
||||
self.popup = vgui.Create("DFrame")
|
||||
DFrameFixer(self.popup)
|
||||
self.popup:SetTitle(L("qolSeeWhitelists").." - "..steamName)
|
||||
self.popup:MakePopup()
|
||||
self.popup:SetSize(self.content:GetWide(), self.content:GetTall() - SScaleMin(100 / 3))
|
||||
local x, y = self.content:GetPos()
|
||||
self.popup:SetPos(x, y + SScaleMin(50 / 3))
|
||||
|
||||
local scrollWhitelists = self.popup:Add("DScrollPanel")
|
||||
scrollWhitelists:Dock(FILL)
|
||||
|
||||
if !plyInfo.player then return end
|
||||
if !plyInfo.player.whitelists then return end
|
||||
if !plyInfo.player.whitelists.ixhl2rp then return end
|
||||
|
||||
for whitelist, _ in pairs(plyInfo.player.whitelists.ixhl2rp) do
|
||||
local whitelistName = scrollWhitelists:Add("DLabel")
|
||||
whitelistName:Dock(TOP)
|
||||
whitelistName:SetContentAlignment(5)
|
||||
whitelistName:SetText(string.utf8upper(whitelist))
|
||||
whitelistName:SetFont("MenuFontBoldNoClamp")
|
||||
whitelistName:SizeToContents()
|
||||
whitelistName:DockMargin(0, SScaleMin(20 / 3), 0, 0)
|
||||
end
|
||||
end
|
||||
end )
|
||||
end
|
||||
|
||||
function PANEL:Think()
|
||||
if self.popup and IsValid(self.popup) then
|
||||
self.popup:MoveToFront()
|
||||
end
|
||||
end
|
||||
|
||||
function PANEL:CreateCharRow(count, charID, charInfo)
|
||||
local row = self.innerSelf:Add("Panel")
|
||||
row:DockMargin(padding, 0, padding, 0)
|
||||
row:DockPadding(padding, 0, padding, 0)
|
||||
row:SetTall(SScaleMin(90 / 3))
|
||||
row:Dock(TOP)
|
||||
|
||||
row.Paint = function(this, w, h)
|
||||
if (count % 2 == 0) then
|
||||
surface.SetDrawColor(0, 0, 0, 75)
|
||||
surface.DrawRect(0, 0, w, h)
|
||||
else
|
||||
surface.SetDrawColor(Color(111, 111, 136, (255 / 100 * 15)))
|
||||
surface.DrawRect(0, 0, w, h)
|
||||
end
|
||||
end
|
||||
|
||||
local rowScroll = row:Add("DHorizontalScroller")
|
||||
rowScroll:Dock(FILL)
|
||||
|
||||
for type, info in pairs(charInfo) do
|
||||
local part = self:CreatePart(type, info)
|
||||
rowScroll:AddPanel(part)
|
||||
end
|
||||
end
|
||||
|
||||
function PANEL:GetName(id)
|
||||
if id == 1 then return L("qolName") end
|
||||
if id == 2 then return L("qolLanguages") end
|
||||
if id == 3 then return L("qolFlags") end
|
||||
if id == 4 then return L("qolTempFlags") end
|
||||
if id == 5 then return L("qolGroupName") end
|
||||
end
|
||||
|
||||
function PANEL:CreatePart(name, info)
|
||||
local part = vgui.Create("Panel")
|
||||
part:Dock(LEFT)
|
||||
|
||||
local title = part:Add("DLabel")
|
||||
title:Dock(TOP)
|
||||
title:SetText(self:GetName(name))
|
||||
title:SetFont("MenuFontBoldNoClamp")
|
||||
title:SizeToContents()
|
||||
title:DockMargin(0, SScaleMin(20 / 3), 0, 0)
|
||||
|
||||
local horizontalDiv = part:Add("DShape")
|
||||
horizontalDiv:Dock(TOP)
|
||||
horizontalDiv:SetType("Rect")
|
||||
horizontalDiv:SetColor(Color(111, 111, 136, (255 / 100 * 30)))
|
||||
horizontalDiv:SetTall(1)
|
||||
horizontalDiv:DockMargin(0, SScaleMin(2), 0, SScaleMin(2))
|
||||
|
||||
local content = part:Add("DLabel")
|
||||
content:Dock(BOTTOM)
|
||||
content:DockMargin(0, 0, padding, SScaleMin(20 / 3))
|
||||
content:SetFont("MenuFontBoldNoClamp")
|
||||
local text = info
|
||||
if istable(info) then
|
||||
if name == 2 then
|
||||
text = ""
|
||||
for _, langID in pairs(info) do
|
||||
local lang = ix.languages:FindByID(langID)
|
||||
|
||||
if text == "" then
|
||||
text = lang.name
|
||||
else
|
||||
text = text..", "..lang.name
|
||||
end
|
||||
end
|
||||
elseif name == 4 then
|
||||
text = ""
|
||||
for flag, _ in pairs(info) do
|
||||
text = text..flag
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
content:SetText((text == "" and "N/A" or text))
|
||||
content:SizeToContents()
|
||||
|
||||
part:SetWide(math.max(content:GetWide(), title:GetWide()) + (padding * 2))
|
||||
|
||||
return part
|
||||
end
|
||||
|
||||
vgui.Register("ixPlyGetInfo", PANEL, "EditablePanel")
|
||||
Reference in New Issue
Block a user