mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-17 13:53:45 +03:00
Upload
This commit is contained in:
265
addons/sam-master/lua/sam/menu/cl_init.lua
Normal file
265
addons/sam-master/lua/sam/menu/cl_init.lua
Normal file
@@ -0,0 +1,265 @@
|
||||
--[[
|
||||
| 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/
|
||||
--]]
|
||||
|
||||
if SAM_LOADED then return end
|
||||
|
||||
local vgui = vgui
|
||||
local draw = draw
|
||||
|
||||
local sam = sam
|
||||
local sui = sui
|
||||
local TDLib = sui.TDLib
|
||||
|
||||
local config = sam.config
|
||||
|
||||
do
|
||||
local funcs = {
|
||||
["SAM.ComboBox"] = {
|
||||
event = "OnSelect",
|
||||
function(s, _, value)
|
||||
config.set(s.config_key, value)
|
||||
end
|
||||
},
|
||||
["SAM.TextEntry"] = {
|
||||
event = "OnEnter",
|
||||
function(s)
|
||||
local v = s:GetText()
|
||||
if s:GetNumeric() then
|
||||
v = tonumber(v)
|
||||
end
|
||||
config.set(s.config_key, v)
|
||||
end
|
||||
},
|
||||
["SAM.ToggleButton"] = {
|
||||
event = "OnChange",
|
||||
function(s, v)
|
||||
config.set(s.config_key, v)
|
||||
end
|
||||
}
|
||||
}
|
||||
|
||||
sam.SUI = sam.SUI or sui.new("SAM", true, {
|
||||
SetConfig = function(s, key, default)
|
||||
s.config_key = key
|
||||
|
||||
local i = config.hook({key}, function(value, old)
|
||||
local v = config.get(key, default)
|
||||
s:SetValue(v)
|
||||
end)
|
||||
|
||||
local t = funcs[s:GetName()]
|
||||
s[t.event] = t[1]
|
||||
|
||||
s:On("OnRemove", function()
|
||||
config.remove_hook(i)
|
||||
end)
|
||||
end
|
||||
})
|
||||
end
|
||||
|
||||
local SUI = sam.SUI
|
||||
local GetColor = SUI.GetColor
|
||||
|
||||
sam.menu = {}
|
||||
|
||||
local tabs = {}
|
||||
function sam.menu.add_tab(icon, func, check, pos)
|
||||
local tab = {
|
||||
icon = icon,
|
||||
func = func,
|
||||
check = check,
|
||||
pos = pos
|
||||
}
|
||||
for k, v in ipairs(tabs) do
|
||||
if v.icon == icon then
|
||||
tabs[k] = tab
|
||||
return
|
||||
end
|
||||
end
|
||||
table.insert(tabs, tab)
|
||||
end
|
||||
|
||||
function sam.menu.remove_tab(name)
|
||||
for k, v in ipairs(tabs) do
|
||||
if v.name == name then
|
||||
table.remove(tabs, k)
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
SAM_TAB_TITLE_FONT = SUI.CreateFont("TabTitle", "Roboto Bold", 22)
|
||||
SAM_TAB_DESC_FONT = SUI.CreateFont("TabDesc", "Roboto Medium", 15)
|
||||
|
||||
local MENU_LOADING = SUI.CreateFont("MenuLoading", "Roboto", 30)
|
||||
|
||||
SUI.AddToTheme("Dark", {
|
||||
frame = "#181818",
|
||||
|
||||
scroll_panel = "#181818",
|
||||
|
||||
menu_tabs_title = "#ffffff",
|
||||
|
||||
--=--
|
||||
player_list_titles = "#f2f1ef",
|
||||
|
||||
player_list_names = "#eeeeee",
|
||||
player_list_names_2 = "#ff6347",
|
||||
player_list_data = "#e8e8e8",
|
||||
|
||||
player_list_rank = "#41b9ff",
|
||||
player_list_console = "#00c853",
|
||||
player_list_rank_text = "#2c3e50",
|
||||
|
||||
player_list_steamid = "#a4a4a4",
|
||||
--=--
|
||||
|
||||
--=--
|
||||
actions_button = Color(0, 0, 0, 0),
|
||||
actions_button_hover = Color(200, 200, 200, 60),
|
||||
|
||||
actions_button_icon = "#aaaaaa",
|
||||
actions_button_icon_hover = "#ffffff",
|
||||
--=--
|
||||
|
||||
--=--
|
||||
page_switch_bg = "#222222",
|
||||
--=--
|
||||
})
|
||||
|
||||
SUI.SetTheme("Dark")
|
||||
|
||||
function SUI.panels.Frame:Paint(w, h)
|
||||
if GetColor("frame_blur") then
|
||||
TDLib.BlurPanel(self)
|
||||
end
|
||||
|
||||
draw.RoundedBox(8, 0, 0, w, h, GetColor("frame"))
|
||||
end
|
||||
|
||||
function SUI.panels.Frame:HeaderPaint(w, h)
|
||||
draw.RoundedBoxEx(8, 0, 0, w, h, GetColor("header"), true, true, false, false)
|
||||
draw.RoundedBox(0, 0, h - 1, w, 1, GetColor("line"))
|
||||
end
|
||||
|
||||
do
|
||||
function sam.menu.add_loading_panel(parent)
|
||||
local is_loading = false
|
||||
|
||||
local loading_panel = parent:Add("Panel")
|
||||
loading_panel:SetVisible(false)
|
||||
loading_panel:SetZPos(999999)
|
||||
loading_panel:SetMouseInputEnabled(false)
|
||||
|
||||
function loading_panel:Paint(w, h)
|
||||
draw.RoundedBox(3, 0, 0, w, h, Color(50, 50, 50, 200))
|
||||
draw.SimpleText(string.rep(".", (CurTime() * 3) % 3), MENU_LOADING, w/2, h/2, Color(200, 200, 200, 200), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER)
|
||||
end
|
||||
|
||||
parent:SUI_TDLib()
|
||||
parent:On("PerformLayout", function(s, w, h)
|
||||
loading_panel:SetSize(w, h)
|
||||
end)
|
||||
|
||||
local first = true
|
||||
local toggle_loading = function(bool)
|
||||
if not IsValid(loading_panel) then return end
|
||||
|
||||
is_loading = bool or not is_loading
|
||||
if is_loading and not first then
|
||||
loading_panel:SetVisible(is_loading and true or false)
|
||||
loading_panel:SetMouseInputEnabled(is_loading)
|
||||
else
|
||||
timer.Simple(0.2, function()
|
||||
if not IsValid(loading_panel) then return end
|
||||
loading_panel:SetVisible(is_loading and true or false)
|
||||
loading_panel:SetMouseInputEnabled(is_loading)
|
||||
end)
|
||||
end
|
||||
|
||||
first = false
|
||||
end
|
||||
|
||||
return toggle_loading, function()
|
||||
return is_loading
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local sam_menu
|
||||
function sam.menu.open_menu()
|
||||
if IsValid(sam_menu) then
|
||||
return sam_menu:IsVisible() and sam_menu:Hide() or sam_menu:Show()
|
||||
-- sam_menu:Remove()
|
||||
end
|
||||
|
||||
sam_menu = vgui.Create("SAM.Frame")
|
||||
sam_menu:Center()
|
||||
sam_menu:MakePopup()
|
||||
sam_menu:SetTitle("SAM")
|
||||
|
||||
sam_menu:AddAnimations(800, 600)
|
||||
|
||||
sam_menu.close.DoClick = function()
|
||||
sam_menu:Hide()
|
||||
end
|
||||
|
||||
local sheet = sam_menu:Add("SAM.ColumnSheet")
|
||||
sheet:Dock(FILL)
|
||||
sheet:InvalidateParent(true)
|
||||
sheet:InvalidateLayout(true)
|
||||
sheet.Paint = nil
|
||||
|
||||
local tab_scroller = sheet.tab_scroller
|
||||
tab_scroller:DockMargin(0, 1, 0, 1)
|
||||
|
||||
function tab_scroller:Paint(w, h)
|
||||
draw.RoundedBoxEx(8, 0, 0, w, h, GetColor("column_sheet_bar"), false, false, true, false)
|
||||
end
|
||||
|
||||
local sheets = {}
|
||||
for _, v in SortedPairsByMemberValue(tabs, "pos") do
|
||||
sheets[v.icon] = sheet:AddSheet(v.icon, v.func)
|
||||
end
|
||||
|
||||
tab_scroller = tab_scroller:GetCanvas()
|
||||
sam_menu:On("Think", function()
|
||||
for _, v in ipairs(tabs) do
|
||||
local tab = sheets[v.icon]
|
||||
if v.check and not v.check() then
|
||||
if tab:IsVisible() then
|
||||
tab:SetVisible(false)
|
||||
if sheet:GetActiveTab() == tab then
|
||||
sheet:SetActiveTab(sheet.tabs[1])
|
||||
end
|
||||
tab_scroller:InvalidateLayout()
|
||||
end
|
||||
elseif not tab:IsVisible() then
|
||||
tab:SetVisible(true)
|
||||
tab_scroller:InvalidateLayout()
|
||||
end
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
function sam.menu.get()
|
||||
return sam_menu
|
||||
end
|
||||
|
||||
hook.Add("GUIMouseReleased", "SAM.CloseMenu", function(mouse_code)
|
||||
local panel = vgui.GetHoveredPanel()
|
||||
if mouse_code == MOUSE_LEFT and panel == vgui.GetWorldPanel() and IsValid(sam_menu) and sam_menu:HasHierarchicalFocus() then
|
||||
sam_menu:Hide()
|
||||
end
|
||||
end)
|
||||
|
||||
for _, f in ipairs(file.Find("sam/menu/tabs/*.lua", "LUA")) do
|
||||
sam.load_file("sam/menu/tabs/" .. f, "sh")
|
||||
end
|
||||
Reference in New Issue
Block a user