mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-17 21:53:46 +03:00
231 lines
6.3 KiB
Lua
231 lines
6.3 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/
|
||
|
|
--]]
|
||
|
|
|
||
|
|
|
||
|
|
local PANEL = {}
|
||
|
|
|
||
|
|
function PANEL:Init()
|
||
|
|
ix.gui.mainMenuManager = self
|
||
|
|
|
||
|
|
self:SetSize(SScaleMin(600 / 3), SScaleMin(500 / 3))
|
||
|
|
self:Center()
|
||
|
|
self:SetTitle("Main Menu Manager")
|
||
|
|
DFrameFixer(self)
|
||
|
|
|
||
|
|
self:CreateMain()
|
||
|
|
end
|
||
|
|
|
||
|
|
function PANEL:CreateMain()
|
||
|
|
if !self.mainPanel or self.mainPanel and !IsValid(self.mainPanel) then
|
||
|
|
self.mainPanel = self:Add("Panel")
|
||
|
|
self.mainPanel:Dock(FILL)
|
||
|
|
end
|
||
|
|
|
||
|
|
for _, v in pairs(self.mainPanel:GetChildren()) do
|
||
|
|
if IsValid(v) then
|
||
|
|
v:Remove()
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
self.backgrounds = self.mainPanel:Add("DButton")
|
||
|
|
self:CreateButton(self.backgrounds, "Backgrounds")
|
||
|
|
self.backgrounds.DoClick = function()
|
||
|
|
surface.PlaySound("helix/ui/press.wav")
|
||
|
|
self.buttonOptions:Remove()
|
||
|
|
self.logoOptions:Remove()
|
||
|
|
self.backgrounds:Remove()
|
||
|
|
|
||
|
|
self:CreateBackgroundsPanel()
|
||
|
|
end
|
||
|
|
|
||
|
|
local infoText1 = "Relative to materials/willardnetworks/, must be png, only write the name of the file "
|
||
|
|
local infoText2 = "without .png extension. e.g. 'wn_logo_base'."
|
||
|
|
local infoText = infoText1..infoText2
|
||
|
|
|
||
|
|
self.logoOptions = self.mainPanel:Add("DButton")
|
||
|
|
self:CreateButton(self.logoOptions, "Logo Options")
|
||
|
|
self.logoOptions.DoClick = function()
|
||
|
|
surface.PlaySound("helix/ui/press.wav")
|
||
|
|
|
||
|
|
Derma_Query("Set Logo Options", "Width/Height/Path",
|
||
|
|
"Use Standard WN Logo", function()
|
||
|
|
net.Start("SetMainMenuLogo")
|
||
|
|
net.SendToServer()
|
||
|
|
end,
|
||
|
|
|
||
|
|
"Set Custom Logo", function ()
|
||
|
|
Derma_StringRequest("Set Custom Logo Path", infoText, "", function(path)
|
||
|
|
Derma_StringRequest("Set Custom Logo Width", "In pixels.", "", function(width)
|
||
|
|
Derma_StringRequest("Set Custom Logo Height", "In pixels.", "", function(height)
|
||
|
|
local logoTable = { path, width, height }
|
||
|
|
net.Start("SetMainMenuLogo")
|
||
|
|
net.WriteTable(logoTable)
|
||
|
|
net.SendToServer()
|
||
|
|
end)
|
||
|
|
end)
|
||
|
|
end)
|
||
|
|
end,
|
||
|
|
"Cancel"
|
||
|
|
)
|
||
|
|
end
|
||
|
|
|
||
|
|
local options = {
|
||
|
|
"Font Color",
|
||
|
|
"Font Hover Color",
|
||
|
|
"Font Locked Button Color"
|
||
|
|
}
|
||
|
|
|
||
|
|
self.buttonOptions = self.mainPanel:Add("DButton")
|
||
|
|
self:CreateButton(self.buttonOptions, "Button Options")
|
||
|
|
self.buttonOptionList = {}
|
||
|
|
self.buttonOptions.DoClick = function()
|
||
|
|
surface.PlaySound("helix/ui/press.wav")
|
||
|
|
self.buttonOptions:Remove()
|
||
|
|
self.logoOptions:Remove()
|
||
|
|
self.backgrounds:Remove()
|
||
|
|
self:CreateBackButton()
|
||
|
|
|
||
|
|
for _, v in pairs(options) do
|
||
|
|
local buttonOption = self.mainPanel:Add("DButton")
|
||
|
|
self:CreateButton(buttonOption, v)
|
||
|
|
|
||
|
|
buttonOption.colorPicker = buttonOption:Add("ixSettingsRowColor")
|
||
|
|
buttonOption.colorPicker:Dock(RIGHT)
|
||
|
|
buttonOption.colorPicker:DockMargin(0, 0, SScaleMin(10 / 3), 0)
|
||
|
|
buttonOption.colorPicker:SetText("")
|
||
|
|
|
||
|
|
buttonOption.colorPicker.OnValueChanged = function(panel, color)
|
||
|
|
self:UpdateButtonColorsToServer()
|
||
|
|
end
|
||
|
|
|
||
|
|
net.Start("RequestMainMenuInfo")
|
||
|
|
net.SendToServer()
|
||
|
|
|
||
|
|
buttonOption.DoClick = function()
|
||
|
|
buttonOption.colorPicker:OpenPicker()
|
||
|
|
end
|
||
|
|
|
||
|
|
self.buttonOptionList[v] = buttonOption
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
function PANEL:UpdateButtonColorsToServer()
|
||
|
|
local colorTable = {
|
||
|
|
["Font Color"] = self.buttonOptionList["Font Color"].colorPicker:GetValue(),
|
||
|
|
["Font Hover Color"] = self.buttonOptionList["Font Hover Color"].colorPicker:GetValue(),
|
||
|
|
["Font Locked Button Color"] = self.buttonOptionList["Font Locked Button Color"].colorPicker:GetValue()
|
||
|
|
}
|
||
|
|
|
||
|
|
net.Start("SetMainMenuButtonColors")
|
||
|
|
net.WriteTable(colorTable)
|
||
|
|
net.SendToServer()
|
||
|
|
end
|
||
|
|
|
||
|
|
function PANEL:PopulateColors(colors)
|
||
|
|
for type, color in pairs(colors) do
|
||
|
|
if !self.buttonOptionList[type] then continue end
|
||
|
|
if !self.buttonOptionList[type].colorPicker then continue end
|
||
|
|
|
||
|
|
self.buttonOptionList[type].colorPicker:SetValue(color)
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
function PANEL:CreateBackgroundsPanel()
|
||
|
|
self:CreateBackButton()
|
||
|
|
|
||
|
|
local addBackground = self.mainPanel:Add("DButton")
|
||
|
|
self:CreateButton(addBackground, "Add Background")
|
||
|
|
|
||
|
|
local infoText1 = "Relative to materials/willardnetworks/backgrounds/, must be jpg, only write the name of the file without "
|
||
|
|
local infoText2 = ".jpg extension. e.g. 'city_bg'."
|
||
|
|
local infoText = infoText1..infoText2
|
||
|
|
|
||
|
|
addBackground.DoClick = function()
|
||
|
|
Derma_StringRequest("Add background", infoText, "", function(text)
|
||
|
|
net.Start("AddMainMenuBackground")
|
||
|
|
net.WriteString(text)
|
||
|
|
net.SendToServer()
|
||
|
|
end)
|
||
|
|
end
|
||
|
|
|
||
|
|
self:CreateNote("Path relative to materials/willardnetworks/backgrounds/")
|
||
|
|
|
||
|
|
self.backgroundList = self.mainPanel:Add("DListView")
|
||
|
|
self.backgroundList:Dock(FILL)
|
||
|
|
self.backgroundList:DockMargin(4, 4, 4, 4)
|
||
|
|
self.backgroundList:AddColumn("Path (right click on rows for options)")
|
||
|
|
self.backgroundList:SetHeaderHeight(SScaleMin(16 / 3))
|
||
|
|
self.backgroundList:SetDataHeight(SScaleMin(17 / 3))
|
||
|
|
|
||
|
|
net.Start("RequestMainMenuInfo")
|
||
|
|
net.SendToServer()
|
||
|
|
|
||
|
|
self.backgroundList.OnRowRightClick = function(list, lineId, line)
|
||
|
|
local dmenu = DermaMenu()
|
||
|
|
dmenu:MakePopup()
|
||
|
|
dmenu:SetPos(input.GetCursorPos())
|
||
|
|
|
||
|
|
dmenu:AddOption("Remove", function()
|
||
|
|
net.Start("RemoveMainMenuBackground")
|
||
|
|
net.WriteString(line:GetValue(1))
|
||
|
|
net.SendToServer()
|
||
|
|
end)
|
||
|
|
|
||
|
|
for _, v in pairs(dmenu:GetChildren()[1]:GetChildren()) do
|
||
|
|
v:SetFont("MenuFontNoClamp")
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
function PANEL:PopulateBackgroundList(table)
|
||
|
|
if !self.backgroundList then return end
|
||
|
|
if self.backgroundList and !IsValid(self.backgroundList) then return end
|
||
|
|
|
||
|
|
self.backgroundList:Clear()
|
||
|
|
|
||
|
|
for _, name in pairs(table) do
|
||
|
|
self.backgroundList:AddLine(name)
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
function PANEL:CreateNote(text)
|
||
|
|
local note = self.mainPanel:Add("DLabel")
|
||
|
|
|
||
|
|
note:SetFont("TitlesFontNoClamp")
|
||
|
|
note:Dock(TOP)
|
||
|
|
note:DockMargin(SScaleMin(10 / 3), SScaleMin(10 / 3), 0, SScaleMin(10 / 3))
|
||
|
|
note:SetText(text)
|
||
|
|
note:SetContentAlignment(4)
|
||
|
|
note:SizeToContents()
|
||
|
|
|
||
|
|
return note
|
||
|
|
end
|
||
|
|
|
||
|
|
function PANEL:CreateBackButton()
|
||
|
|
self.back = self.mainPanel:Add("DButton")
|
||
|
|
self:CreateButton(self.back, "Back")
|
||
|
|
self.back.DoClick = function()
|
||
|
|
surface.PlaySound("helix/ui/press.wav")
|
||
|
|
self:CreateMain()
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
function PANEL:CreateButton(name, text)
|
||
|
|
name:SetSize(SScaleMin(480 / 3), SScaleMin(46 / 3))
|
||
|
|
name:SetContentAlignment(4)
|
||
|
|
name:SetTextInset(SScaleMin(20 / 3), 0)
|
||
|
|
name:Dock(TOP)
|
||
|
|
name:SetFont("TitlesFontNoClamp")
|
||
|
|
name:DockMargin(0, 0, 0, SScaleMin(9 / 3))
|
||
|
|
name:SetText(text)
|
||
|
|
end
|
||
|
|
|
||
|
|
vgui.Register("MainMenuManager", PANEL, "DFrame")
|