338 lines
9.5 KiB
Lua
338 lines
9.5 KiB
Lua
local ScrW, ScrH = ScrW, ScrH
|
|
local Ln = MSD.GetPhrase
|
|
local logo = Material("msd/macnco.png", "smooth")
|
|
CreateClientConVar("mmd_lastscr", 0, true, false)
|
|
|
|
function MSD.AdminAccess(ply)
|
|
if MQS then
|
|
return MQS.IsEditor(ply)
|
|
end
|
|
if MRS then
|
|
return MRS.IsAdministrator(ply)
|
|
end
|
|
return ply:IsSuperAdmin()
|
|
end
|
|
|
|
function MSD.OpenMenuManager(parrent, mod_open)
|
|
if not MSD.AdminAccess(LocalPlayer()) then return end
|
|
|
|
if IsValid(MSD.SetupMenu) then
|
|
if not MSD.SetupMenu:IsVisible() then
|
|
MSD.SetupMenu:AlphaTo(255, 0.4)
|
|
MSD.SetupMenu:Show()
|
|
MSD.SetupMenu:Center()
|
|
return
|
|
end
|
|
if parrent then
|
|
MSD.SetupMenu:Center()
|
|
return
|
|
else
|
|
MSD.SetupMenu:Close()
|
|
end
|
|
end
|
|
|
|
local pnl_w, pnl_h = ScrW(), ScrH()
|
|
pnl_w, pnl_h = pnl_w - pnl_w / 4, pnl_h - pnl_h / 6
|
|
local panel, setbut
|
|
|
|
if parrent then
|
|
panel = parrent:Add("MSDSimpleFrame")
|
|
else
|
|
panel = vgui.Create("MSDSimpleFrame")
|
|
panel:MakePopup()
|
|
end
|
|
|
|
panel:SetSize(pnl_w, pnl_h)
|
|
panel:Center()
|
|
panel:SetAlpha(0)
|
|
panel:AlphaTo(255, 0.3)
|
|
|
|
panel.Paint = function(self, w, h)
|
|
MSD.DrawBG(self, w, h)
|
|
|
|
draw.RoundedBox(MSD.Config.Rounded, 0, 0, w, 50, MSD.Theme["d"])
|
|
draw.RoundedBox(MSD.Config.Rounded, 0, 52, w, h - 52, MSD.Theme["l"])
|
|
end
|
|
|
|
panel.clsBut = MSD.IconButton(panel, MSD.Icons48.cross, panel:GetWide() - 34, 10, 25, nil, MSD.Config.MainColor.p, function()
|
|
if panel.OnPress then
|
|
panel.OnPress()
|
|
|
|
return
|
|
end
|
|
|
|
panel:AlphaTo(0, 0.4, 0, function()
|
|
panel:Close()
|
|
end)
|
|
end)
|
|
|
|
function panel:OnClose()
|
|
if panel.ModuleSwitch then panel.ModuleSwitch() panel.ModuleSwitch = nil end
|
|
MSD.SetupMenu = nil
|
|
end
|
|
|
|
if not parrent then
|
|
panel.clsHide = MSD.IconButton(panel, MSD.Icons48.dot, panel:GetWide() - 64, 10, 25, nil, MSD.Config.MainColor.p, function()
|
|
if panel.OnPress then
|
|
panel.OnPress()
|
|
|
|
return
|
|
end
|
|
|
|
panel:AlphaTo(0, .4, 0, function()
|
|
MSD.SetupMenu:Hide()
|
|
end)
|
|
end)
|
|
end
|
|
|
|
panel.Menu = vgui.Create("MSDPanelList", panel)
|
|
panel.Menu:SetSize(panel:GetWide() / 2, 50)
|
|
panel.Menu:SetPos(0, 0)
|
|
--panel.Menu:EnableVerticalScrollbar()
|
|
panel.Menu:EnableHorizontal(true)
|
|
panel.Menu:SetSpacing(2)
|
|
panel.Menu.IgnoreVbar = true
|
|
panel.Menu.Paint = function() end
|
|
panel.Menu.Deselect = function(but)
|
|
if not but then return end
|
|
but.hovered = true
|
|
|
|
for k, v in pairs(panel.Menu:GetItems()) do
|
|
if v and v:IsValid() and v ~= but then
|
|
v.hovered = false
|
|
end
|
|
end
|
|
end
|
|
|
|
function panel.ReOpenCanvas()
|
|
if IsValid(panel.Canvas) then panel.Canvas:Remove() end
|
|
panel.Canvas = vgui.Create("DPanel", panel)
|
|
panel.Canvas:SetSize(panel:GetWide(), panel:GetTall() - 52)
|
|
panel.Canvas:SetPos(0, 52)
|
|
panel.Canvas.Paint = function() end
|
|
end
|
|
|
|
local cnv = GetConVar("mmd_lastscr")
|
|
|
|
function panel.OpenSettings()
|
|
cnv:SetInt(-1)
|
|
panel.ReOpenCanvas()
|
|
panel.Menu.Deselect(setbut)
|
|
MSD.OpenSettingsMenu(panel.Canvas, panel)
|
|
end
|
|
|
|
for id, mod in ipairs(MSD.Modules) do
|
|
local button = MSD.MenuButtonTop(panel.Menu, mod.icon, nil, nil, "auto", 50, mod.name, function(self)
|
|
if panel.ModuleSwitch then panel.ModuleSwitch() panel.ModuleSwitch = nil end
|
|
cnv:SetInt(id)
|
|
panel.ReOpenCanvas()
|
|
panel.Menu.Deselect(self)
|
|
mod.menu(panel.Canvas, panel)
|
|
end)
|
|
|
|
if (mod_open and id == mod_open) or (cnv:GetInt() == 0 and id == 1) or cnv:GetInt() == id then
|
|
panel.ReOpenCanvas()
|
|
panel.Menu.Deselect(button)
|
|
mod.menu(panel.Canvas, panel)
|
|
end
|
|
end
|
|
|
|
setbut = MSD.MenuButtonTop(panel.Menu, MSD.Icons48.cog, nil, nil, "auto", 50, "", function(self)
|
|
panel.OpenSettings()
|
|
end)
|
|
|
|
if cnv:GetInt() == -1 and not mod_open then
|
|
panel.OpenSettings()
|
|
end
|
|
|
|
MSD.SetupMenu = panel
|
|
|
|
return panel
|
|
end
|
|
|
|
function MSD.OpenSettingsMenu(panel)
|
|
|
|
oldcfg = MSD.Config
|
|
|
|
panel.Canvas = vgui.Create("MSDPanelList", panel)
|
|
panel.Canvas:SetSize(panel:GetWide() / 2 - 5, panel:GetTall())
|
|
panel.Canvas:SetPos(panel:GetWide() / 2 + 5, 0)
|
|
panel.Canvas:EnableVerticalScrollbar()
|
|
panel.Canvas:EnableHorizontal(true)
|
|
panel.Canvas:SetSpacing(2)
|
|
panel.Canvas.IgnoreVbar = true
|
|
panel.Canvas.Paint = function() end
|
|
|
|
panel.Settings = vgui.Create("MSDPanelList", panel)
|
|
panel.Settings:SetSize(panel:GetWide() / 2, panel:GetTall() - 80)
|
|
panel.Settings:SetPos(0, 0)
|
|
panel.Settings:EnableVerticalScrollbar()
|
|
panel.Settings:EnableHorizontal(true)
|
|
panel.Settings:SetSpacing(2)
|
|
panel.Settings.IgnoreVbar = true
|
|
panel.Settings.Paint = function() end
|
|
|
|
panel.Settings.Update = function()
|
|
panel.Settings:Clear()
|
|
|
|
MSD.Header(panel.Settings, Ln("set_ui"))
|
|
local combo = MSD.ComboBox(panel.Settings, "static", nil, 1, 50, "Language:", Ln("none"))
|
|
|
|
combo.OnSelect = function(self, index, text, data)
|
|
MSD.Config.Language = data
|
|
panel.Settings.Update()
|
|
end
|
|
|
|
for k, v in pairs(MSD.Language) do
|
|
combo:AddChoice(v.lang_name, k)
|
|
end
|
|
|
|
combo:SetValue(Ln("lang_name"))
|
|
local sld1
|
|
|
|
local function sliderCL(cl)
|
|
local c = math.Clamp(math.Round(cl * 255), 30, 250)
|
|
MSD.Config.BgrColor = Color(c, c, c)
|
|
end
|
|
|
|
MSD.DTextSlider(panel.Settings, "static", nil, 1, 50, Ln("set_ui_blur"), Ln("set_ui_mono"), MSD.Config.Blur, function(self, value)
|
|
MSD.Config.Blur = value
|
|
if value then
|
|
sld1.value = 1
|
|
sliderCL(sld1.value)
|
|
else
|
|
sld1.value = 0.18
|
|
sliderCL(sld1.value)
|
|
end
|
|
end)
|
|
|
|
sld1 = MSD.VolumeSlider(panel.Settings, "static", nil, 1, 50, Ln("set_ui_brightness"), MSD.Config.BgrColor.r / 255, function(self, var)
|
|
sliderCL(var)
|
|
end)
|
|
|
|
MSD.ColorSelector(panel.Settings, "static", nil, 1, 50, Ln("set_ui_color"), MSD.Config.MainColor.p, function(self, color)
|
|
MSD.Config.MainColor.p = color
|
|
end)
|
|
|
|
MSD.DTextSlider(panel.Settings, "static", nil, 1, 50, Ln("border_rounded"), Ln("border_square"), MSD.Config.Rounded == 8, function(self, value)
|
|
if value then
|
|
MSD.Config.Rounded = 8
|
|
else
|
|
MSD.Config.Rounded = 0
|
|
end
|
|
end)
|
|
|
|
if not MSD.HUD then return end
|
|
|
|
MSD.Header(panel.Settings, Ln("set_hud"))
|
|
|
|
MSD.BoolSlider(panel.Settings, "static", nil, 1, 50, Ln("custom_icon"), MSD.Config.HUD.ShowIcon, function(self, value)
|
|
MSD.Config.HUD.ShowIcon = value
|
|
end)
|
|
|
|
MSD.TextEntry(panel.Settings, "static", nil, 1, 50, Ln("q_icon68"), Ln("e_url") .. ":", MSD.Config.HUD.Icon, function(self, value)
|
|
MSD.Config.HUD.Icon = value
|
|
end)
|
|
|
|
MSD.TextEntry(panel.Settings, "static", nil, 1, 50, Ln("e_text"), Ln("e_text") .. ":", MSD.Config.HUD.Text, function(self, value)
|
|
MSD.Config.HUD.Text = value
|
|
end)
|
|
|
|
local acombo = MSD.ComboBox(panel.Settings, "static", nil, 1, 50, "", "")
|
|
|
|
local algm = {
|
|
Ln("set_ui_align_left"),
|
|
Ln("set_ui_align_center"),
|
|
Ln("set_ui_align_right")
|
|
}
|
|
for i,t in pairs(algm) do
|
|
acombo:AddChoice(t, i - 1)
|
|
acombo:SetValue(t)
|
|
end
|
|
|
|
acombo.OnSelect = function(self, index, text, data)
|
|
MSD.Config.HUD.AlignX = data
|
|
end
|
|
|
|
local sld0, txt1, sld2, txt2
|
|
sld0 = MSD.VolumeSlider(panel.Settings, "static", nil, 1.2, 50, Ln("set_ui_offset_h"), MSD.Config.HUD.X, function(self, var)
|
|
var = math.Round(var, 3)
|
|
MSD.Config.HUD.X = var
|
|
txt1:SetText(var * 100)
|
|
end)
|
|
|
|
txt1 = MSD.TextEntry(panel.Settings, "static", nil, 6, 50, "", "", MSD.Config.HUD.X * 100, function(self, value)
|
|
value = math.Clamp((tonumber(value) or 0) / 100,0,1)
|
|
sld0.value = value
|
|
MSD.Config.HUD.X = value
|
|
end, true, nil, nil, true)
|
|
|
|
sld2 = MSD.VolumeSlider(panel.Settings, "static", nil, 1.2, 50, Ln("set_ui_offset_v"), MSD.Config.HUD.Y, function(self, var)
|
|
var = math.Round(var, 3)
|
|
MSD.Config.HUD.Y = var
|
|
txt2:SetText(var * 100)
|
|
end)
|
|
|
|
txt2 = MSD.TextEntry(panel.Settings, "static", nil, 6, 50, "", "", MSD.Config.HUD.Y * 100, function(self, value)
|
|
value = math.Clamp((tonumber(value) or 0) / 100,0,1)
|
|
sld2.value = value
|
|
MSD.Config.HUD.Y = value
|
|
end, true, nil, nil, true)
|
|
|
|
MSD.BoolSlider(panel.Settings, "static", nil, 1, 50, Ln("show_team"), MSD.Config.HUD.ShowGroup, function(self, value)
|
|
MSD.Config.HUD.ShowGroup = value
|
|
end)
|
|
|
|
MSD.BoolSlider(panel.Settings, "static", nil, 1, 50, Ln("mrs_hud_follow"), MSD.Config.HUD.Follow, function(self, value)
|
|
MSD.Config.HUD.Follow = value
|
|
end)
|
|
|
|
MSD.BoolSlider(panel.Settings, "static", nil, 1, 50, Ln("use_team_colors"), MSD.Config.HUD.TeamColor, function(self, value)
|
|
MSD.Config.TeamColor = value
|
|
end)
|
|
|
|
MSD.BoolSlider(panel.Settings, "static", nil, 1, 50, Ln("icon_right"), MSD.Config.HUD.IconRight, function(self, value)
|
|
MSD.Config.HUD.IconRight = value
|
|
end)
|
|
|
|
MSD.VolumeSlider(panel.Settings, "static", nil, 1, 50, Ln("icon_size"), (MSD.Config.HUD.IconSize - 24) / 40, function(self, var)
|
|
var = math.Round(var, 3)
|
|
MSD.Config.HUD.IconSize = math.Clamp(24 + math.Round(var * 40), 24, 64)
|
|
end)
|
|
|
|
MSD.VolumeSlider(panel.Settings, "static", nil, 1, 50, Ln("font_size"), (MSD.Config.HUD.FontSize - 16) / 30, function(self, var)
|
|
var = math.Round(var, 3)
|
|
MSD.Config.HUD.FontSize = math.Clamp(16 + math.Round(var * 30), 16, 46)
|
|
end)
|
|
end
|
|
|
|
panel.Settings.Update()
|
|
|
|
if LocalPlayer():IsSuperAdmin() then
|
|
MSD.BigButton(panel, 0, panel:GetTall() - 80, panel:GetWide() / 4, 80, Ln("upl_changes"), MSD.Icons48.save, function()
|
|
MSD.SaveConfig()
|
|
panel.Settings.Update()
|
|
end)
|
|
|
|
MSD.BigButton(panel, panel:GetWide() / 4, panel:GetTall() - 80, panel:GetWide() / 4, 80, Ln("res_changes"), MSD.Icons48.cross, function()
|
|
MSD.Config = oldcfg
|
|
panel.Settings.Update()
|
|
end)
|
|
end
|
|
|
|
local pnl = vgui.Create("DPanel")
|
|
|
|
pnl.StaticScale = {
|
|
w = 1,
|
|
h = 1,
|
|
minw = 150,
|
|
minh = 150
|
|
}
|
|
|
|
pnl.Paint = function(self, w, h)
|
|
MSD.DrawTexturedRect(w / 2 - 128, h / 2 - 128, 256, 236, logo, MSD.Text["l"])
|
|
draw.DrawText("MSD UI version - " .. MSD.Version, "MSDFont.25", w / 2, h / 2 + 130, MSD.Text["l"], TEXT_ALIGN_CENTER)
|
|
end
|
|
|
|
panel.Canvas:AddItem(pnl)
|
|
end |