local PLUGIN = PLUGIN

function PLUGIN:CreateRadioMenu()
	if (IsValid(self.radioMenu)) then
		self.radioMenu:Remove()
	end

	local scrW, scrH = ScrW(), ScrH()
	
	local frame = vgui.Create("DFrame")
	frame:SetSize(500, 200)
	frame:SetPos(scrW/2 - 250, scrH/2 - 100)
	frame:SetTitle("")
	frame:SetDraggable(false)
	frame:ShowCloseButton(false)
	frame:MakePopup()
	frame.Paint = function(panel, w, h)
		-- Фон
		surface.SetDrawColor(Color(13, 13, 13, 240))
		surface.DrawRect(0, 0, w, h)
		
		-- Обводка
		surface.SetDrawColor(Color(1, 67, 29))
		surface.DrawOutlinedRect(0, 0, w, h, 2)
		
		-- Верхняя панель
		surface.SetDrawColor(Color(1, 67, 29))
		surface.DrawRect(0, 0, w, 40)
		
		-- Заголовок
		draw.SimpleText("НАСТРОЙКИ РАЦИИ", "ixMenuButtonFont", w/2, 20, color_white, TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER)
	end

	self.radioMenu = frame

	local currentFreq = self:GetFrequency(LocalPlayer())

	local freqLabel = frame:Add("DLabel")
	freqLabel:SetPos(50, 60)
	freqLabel:SetSize(400, 25)
	freqLabel:SetText("Текущая частота: " .. currentFreq)
	freqLabel:SetFont("ixSmallFont")
	freqLabel:SetTextColor(color_white)

	local freqSlider = frame:Add("DNumSlider")
	freqSlider:SetPos(-231, 90)
	freqSlider:SetSize(680, 40)
	freqSlider:SetText("")
	freqSlider:SetMin(self.minFrequency)
	freqSlider:SetMax(self.maxFrequency)
	freqSlider:SetDecimals(self.frequencyPrecision)
	freqSlider:SetValue(currentFreq)
	
	-- Стилизация слайдера
	freqSlider.Slider.Paint = function(panel, w, h)
		surface.SetDrawColor(Color(23, 23, 23))
		surface.DrawRect(0, 0, w, h)
		surface.SetDrawColor(Color(1, 67, 29))
		surface.DrawOutlinedRect(0, 0, w, h, 1)
		
		local progress = (freqSlider:GetValue() - freqSlider:GetMin()) / (freqSlider:GetMax() - freqSlider:GetMin())
		local barWidth = w * progress
		
		surface.SetDrawColor(Color(1, 67, 29))
		surface.DrawRect(0, 0, barWidth, h)
	end
	
	freqSlider.Label:SetTextColor(color_white)
	freqSlider.Label:SetFont("ixSmallFont")
	freqSlider.TextArea:SetTextColor(color_white)
	freqSlider.TextArea:SetFont("ixSmallFont")
	freqSlider.TextArea.Paint = function(panel, w, h)
		surface.SetDrawColor(Color(23, 23, 23))
		surface.DrawRect(0, 0, w, h)
		surface.SetDrawColor(Color(1, 67, 29))
		surface.DrawOutlinedRect(0, 0, w, h, 1)
		panel:DrawTextEntryText(color_white, Color(30, 130, 255), color_white)
	end

	freqSlider.OnValueChanged = function(_, value)
		local format = "%0." .. PLUGIN.frequencyPrecision .. "f"
		freqLabel:SetText("Текущая частота: " .. string.format(format, value))
	end

	-- Кнопка закрытия
	local closeBtn = frame:Add("DButton")
	closeBtn:SetPos(50, 150)
	closeBtn:SetSize(150, 35)
	closeBtn:SetText("")
	closeBtn.Paint = function(panel, w, h)
		surface.SetDrawColor(Color(1, 67, 29))
		surface.DrawRect(0, 0, w, h)
		surface.SetDrawColor(Color(29, 29, 29))
		surface.DrawOutlinedRect(0, 0, w, h, 2)
		draw.SimpleText("ЗАКРЫТЬ", "ixSmallFont", w/2, h/2, color_white, TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER)
		
		if panel:IsHovered() then
			surface.SetDrawColor(Color(255, 255, 255, 30))
			surface.DrawRect(0, 0, w, h)
		end
	end
	closeBtn.DoClick = function()
		frame:Remove()
	end

	-- Кнопка применения
	local applyBtn = frame:Add("DButton")
	applyBtn:SetPos(300, 150)
	applyBtn:SetSize(150, 35)
	applyBtn:SetText("")
	applyBtn.Paint = function(panel, w, h)
		surface.SetDrawColor(Color(1, 67, 29))
		surface.DrawRect(0, 0, w, h)
		surface.SetDrawColor(Color(29, 29, 29))
		surface.DrawOutlinedRect(0, 0, w, h, 2)
		draw.SimpleText("ПРИМЕНИТЬ", "ixSmallFont", w/2, h/2, color_white, TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER)
		
		if panel:IsHovered() then
			surface.SetDrawColor(Color(255, 255, 255, 30))
			surface.DrawRect(0, 0, w, h)
		end
	end
	applyBtn.DoClick = function()
		net.Start("ixRadioSetFrequency")
			net.WriteFloat(freqSlider:GetValue())
		net.SendToServer()

		frame:Remove()
		
		-- Уведомление об успешном применении
		LocalPlayer():Notify("Частота рации изменена на: " .. string.format("%0." .. PLUGIN.frequencyPrecision .. "f", freqSlider:GetValue()))
	end
end

-- Комбинации клавиш отключены - используйте Context Menu (C) для управления рацией
--[[
local lastPress = {
	listen = 0,
	transmit = 0,
	menu = 0
}
local pressCooldown = 0.2

hook.Add("PlayerButtonDown", "ixRadioBinds", function(ply, button)
	if (ply != LocalPlayer()) then
		return
	end

	if (vgui.GetKeyboardFocus()) then
		return
	end

	local ct = CurTime()

	if (button == KEY_F2) then
		if (ct - lastPress.menu < pressCooldown) then
			return
		end

		lastPress.menu = ct
		PLUGIN:CreateRadioMenu()
	elseif if (button == KEY_O and input.IsKeyDown(KEY_LSHIFT)) then
		if (ct - lastPress.listen < pressCooldown) then
			return
		end

		lastPress.listen = ct

		net.Start("ixRadioToggleListen")
		net.SendToServer()
		
		-- Уведомление о переключении режима прослушивания
		local status = ix.plugin.list["radio"]:IsListening(LocalPlayer()) and "включено" or "выключено"
		LocalPlayer():Notify("Прослушивание рации " .. status)
	elseif (button == KEY_P and input.IsKeyDown(KEY_LSHIFT)) then
		if (ct - lastPress.transmit < pressCooldown) then
			return
		end

		lastPress.transmit = ct

		net.Start("ixRadioToggleTransmit")
		net.SendToServer()
		
		-- Уведомление о переключении режима передачи
		local status = ix.plugin.list["radio"]:IsTransmitting(LocalPlayer()) and "включена" or "выключена"
		LocalPlayer():Notify("Передача рации " .. status)
	end
end)
--]]

-- Команды для биндов
concommand.Add("radio_menu", function()
	PLUGIN:CreateRadioMenu()
end)

concommand.Add("radio_listen", function()
	net.Start("ixRadioToggleListen")
	net.SendToServer()
end)

concommand.Add("radio_transmit", function()
	net.Start("ixRadioToggleTransmit")
	net.SendToServer()
end)
