--[[
| 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/
--]]

--- Traitor radio controls

TRADIO = {}

local sound_names = {
   scream   ="radio_button_scream",
   explosion="radio_button_expl",
   pistol   ="radio_button_pistol",
   m16      ="radio_button_m16",
   deagle   ="radio_button_deagle",
   mac10    ="radio_button_mac10",
   shotgun  ="radio_button_shotgun",
   rifle    ="radio_button_rifle",
   huge     ="radio_button_huge",
   beeps    ="radio_button_c4",
   burning  ="radio_button_burn",
   footsteps="radio_button_steps"
};

local smatrix = {
   {"scream", "burning", "explosion", "footsteps"},
   {"pistol", "shotgun", "mac10", "deagle"},
   {"m16", "rifle", "huge", "beeps"}
};

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 function CreateSoundBoard(parent)
   local b = vgui.Create("DPanel", parent)

   --b:SetPaintBackground(false)

   local bh, bw = 50, 100
   local m = 5
   local ver = #smatrix
   local hor = #smatrix[1]

   local x, y = 0, 0
   for ri, row in ipairs(smatrix) do
      local rj = ri - 1 -- easier for computing x,y
      for rk, snd in ipairs(row) do
         local rl = rk - 1
         y = (rj * m) + (rj * bh)
         x = (rl * m) + (rl * bw)

         local but = vgui.Create("DButton", b)
         but:SetPos(x, y)
         but:SetSize(bw, bh)
         but:SetText(LANG.GetTranslation(sound_names[snd]))
         but.snd = snd
         but.DoClick = ButtonClickPlay
      end
   end

   b:SetSize(bw * hor + m * (hor - 1), bh * ver + m * (ver - 1))
   b:SetPos(m, 25)
   b:CenterHorizontal()

   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(LANG.GetTranslation("radio_help"))
   dhelp:SetTextColor(COLOR_WHITE)

   if IsValid(client.radio) then

      local board = CreateSoundBoard(wrap)

   elseif client:HasWeapon("weapon_ttt_radio") then
      dhelp:SetText(LANG.GetTranslation("radio_notplaced"))
   end

   dhelp:SizeToContents()
   dhelp:SetPos(10, 5)
   dhelp:CenterHorizontal()

   return wrap
end

