90 lines
2.2 KiB
Lua
90 lines
2.2 KiB
Lua
--- Traitor radio controls
|
|
|
|
local GetTranslation = LANG.GetTranslation
|
|
local GetPTranslation = LANG.GetParamTranslation
|
|
local TryTranslation = LANG.TryTranslation
|
|
|
|
TRADIO.SoundOrder = {
|
|
"scream", "burning", "explosion", "footsteps",
|
|
"pistol", "shotgun", "mac10", "deagle",
|
|
"m16", "rifle", "huge", "glock",
|
|
"beeps", "sipistol", "teleport", "hstation"
|
|
};
|
|
|
|
local function PlayRadioSound(snd)
|
|
local r = LocalPlayer().radio
|
|
if IsValid(r) then
|
|
RunConsoleCommand("ttt_radio_play", tostring(r:EntIndex()), snd)
|
|
end
|
|
end
|
|
|
|
local function ButtonClickPlay(s) PlayRadioSound(s.snd) end
|
|
|
|
local columns = 4
|
|
local rows = 5
|
|
|
|
local bh, bw = 50, 120
|
|
local m = 5
|
|
|
|
local function CreateSoundBoard(parent)
|
|
local b = vgui.Create("DScrollPanel", parent)
|
|
|
|
local sorder = TRADIO.SoundOrder
|
|
local ver = math.min(math.ceil(#sorder / columns), rows)
|
|
local sbar = ver == rows and b:GetVBar():GetWide() or 0
|
|
|
|
b:SetSize(bw * columns + m * (columns - 1) + sbar, bh * ver + m * (ver - 1))
|
|
b:SetPos(m, 25)
|
|
b:CenterHorizontal()
|
|
|
|
local grid = vgui.Create("DIconLayout", b)
|
|
grid:Dock(FILL)
|
|
grid:SetSpaceX(m)
|
|
grid:SetSpaceY(m)
|
|
|
|
for ri, snd in ipairs(sorder) do
|
|
local but = grid:Add("DButton")
|
|
but:SetSize(bw, bh)
|
|
|
|
local name = TRADIO.Sounds[snd].name
|
|
local name_params = TRADIO.Sounds[snd].name_params
|
|
local translated = TryTranslation(name)
|
|
if name_params and name != translated then
|
|
translated = GetPTranslation(name, name_params)
|
|
end
|
|
but:SetText(translated)
|
|
|
|
but.snd = snd
|
|
but.DoClick = ButtonClickPlay
|
|
end
|
|
|
|
return b
|
|
end
|
|
|
|
function TRADIO.CreateMenu(parent)
|
|
local w, h = parent:GetSize()
|
|
|
|
local client = LocalPlayer()
|
|
|
|
local wrap = vgui.Create("DPanel", parent)
|
|
wrap:SetSize(w, h)
|
|
wrap:SetPaintBackground(false)
|
|
|
|
local dhelp = vgui.Create("DLabel", wrap)
|
|
dhelp:SetFont("TabLarge")
|
|
dhelp:SetText(GetTranslation("radio_help"))
|
|
dhelp:SetTextColor(COLOR_WHITE)
|
|
|
|
if IsValid(client.radio) then
|
|
CreateSoundBoard(wrap)
|
|
elseif client:HasWeapon("weapon_ttt_radio") then
|
|
dhelp:SetText(GetTranslation("radio_notplaced"))
|
|
end
|
|
|
|
dhelp:SizeToContents()
|
|
dhelp:SetPos(10, 5)
|
|
dhelp:CenterHorizontal()
|
|
|
|
return wrap
|
|
end
|